예제 #1
0
        /// <summary>
        /// Отключение Всех пользователей от базы
        /// </summary>
        public void DiscconnectUsers(String DBName)
        {
            string textBoxLog = "";

            V83.IServerAgentConnection agent = com1s1.ConnectAgent(name_server);
            Array clasters = agent.GetClusters();

            foreach (V83.IClusterInfo clasterInfo in clasters)
            {
                if (String.Equals(clasterInfo.HostName, name_server) && String.Equals(clasterInfo.ClusterName, clasterName))
                {
                    agent.Authenticate(clasterInfo, user_claster, pas_claster);
                    Array sessions = agent.GetSessions(clasterInfo);
                    V83.IInfoBaseShort infoBase;
                    foreach (V83.ISessionInfo session in sessions)
                    {
                        infoBase = session.infoBase;

                        if (infoBase.Name == DBName)
                        {
                            textBoxLog += "DataBase: " + infoBase.Name + "; Number session: " + Convert.ToString(session.SessionID) + "; user name: " + session.userName + " (" + session.AppID + ")" + "\r\n";
                        }
                        if ((infoBase.Name == DBName) && session.AppID != "Designer" && session.AppID != "SrvrConsole")
                        {
                            agent.TerminateSession(clasterInfo, session);
                        }
                    }
                }
            }
        }
예제 #2
0
        ///Заполняем список баз
        ///
        public void ListBase()
        {
            //ClearLog();
            setInfoParameters();
            if (String.IsNullOrEmpty(name_server))
            {
                setLogText("Проверьте параметры настроек для соединения с кластером сервера 1С!"); return;
            }
            try
            {
                V83.IServerAgentConnection agent = com1s.ConnectAgent(name_server + ":" + port_server);
                Array clasters = agent.GetClusters();
                foreach (V83.IClusterInfo clasterInfo in clasters)
                {
                    agent.Authenticate(clasterInfo, user_claster, pas_claster); //имя пользователя и пароль, пустое значение
                    Array DataBases = agent.GetInfoBases(clasterInfo);
                    foreach (V83.IInfoBaseShort DataBase in DataBases)
                    {
                        var session = agent.GetInfoBaseSessions(clasterInfo, DataBase);

                        if (findBaseName(DataBase.Name) == -1)
                        {
                            addBaseName(DataBase.Name);
                        }
                    }
                }
            }
            catch
            {
                setLogText("Нет соединения с кластером сервера 1С!");
            }
        }
예제 #3
0
 public void ClearSession(V83.IServerAgentConnection agent, V83.IClusterInfo cluster, V83.ISessionInfo session)
 {
     try
     {
         agent.TerminateSession(cluster, session);
     }
     catch (System.Exception err)
     {
         MessageBox.Show(err.ToString());
     }
 }
예제 #4
0
        /// <summary>
        /// Обновление свойства базы
        /// </summary>
        /// значение "F"- для файловой "S" - для серв.
        /// 1.Путь к исполняему файлу 1С
        /// 2.Имя пользователя администратора
        /// 3.Пароль администратора
        /// "C:\Program Files (x86)\1cv8\8.3.10.\bin\1cv8.exe" ENTERPRISE / F "\У" / N "Администратор" / P "123" / CРазрешитьРаботуПользователей / UCКодРазрешения
        public void UpdateInfoBase(String DBName, bool connect_denied)
        {
            V83.IServerAgentConnection AgentConnection = com1s1.ConnectAgent(name_server);
            Array clasters = AgentConnection.GetClusters();

            foreach (V83.IClusterInfo clasterInfo in clasters)
            {
                if (String.Equals(clasterInfo.HostName, name_server) && String.Equals(clasterInfo.ClusterName, clasterName))
                {
                    AgentConnection.Authenticate(clasterInfo, user_claster, pas_claster);

                    Array  WorkingProcess = AgentConnection.GetWorkingProcesses(clasterInfo);
                    String ConnectString  = "";
                    foreach (V83.IWorkingProcessInfo WorkingProces in WorkingProcess)
                    {
                        ConnectString = WorkingProces.HostName + ":" + WorkingProces.MainPort;
                    }

                    V83.IInfoBaseInfo             infoBase_;
                    V83.IWorkingProcessConnection WorkingProcessConnection1 = com1s1.ConnectWorkingProcess(ConnectString);
                    Array Bases_ = WorkingProcessConnection1.GetInfoBases();
                    foreach (V83.IInfoBaseInfo base_ in Bases_)
                    {
                        if (base_.Name == DBName)
                        {
                            infoBase_ = base_;

                            V83.IInfoBaseInfo new_info = WorkingProcessConnection1.CreateInfoBaseInfo();
                            new_info = infoBase_;
                            if (String.IsNullOrEmpty(new_info.PermissionCode) == true)
                            {
                                new_info.PermissionCode = key_access;
                            }
                            new_info.DeniedMessage = "Проводяться регламентные работы!";
                            new_info.ConnectDenied = connect_denied;
                            WorkingProcessConnection1.AddAuthentication(user_1c, pas_1c);
                            WorkingProcessConnection1.UpdateInfoBase(new_info);
                            break;
                        }
                    }
                    Array sessions = AgentConnection.GetSessions(clasterInfo);
                    foreach (V83.ISessionInfo session in sessions)
                    {
                        if (session.AppID == "COMConsole")
                        {
                            AgentConnection.TerminateSession(clasterInfo, session);
                        }
                    }
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(AgentConnection);
                }
            }
        }
        ///Заполняем список баз
        ///
        public void ListBase()
        {
            setInfoParameters();
            if (String.IsNullOrEmpty(name_server))
            {
                MessageBox.Show("Проверьте параметры настроек для соединения с кластером сервера 1С!"); return;
            }
            try
            {
                V83.IServerAgentConnection agent = com1s.ConnectAgent(name_server + ":" + port_server);
                Array clasters = agent.GetClusters();
                foreach (V83.IClusterInfo clasterInfo in clasters)
                {
                    agent.Authenticate(clasterInfo, "", ""); //имя пользователя и пароль, пустое значение
                    Array DataBases = agent.GetInfoBases(clasterInfo);
                    int   index_    = 0;
                    foreach (V83.IInfoBaseShort DataBase in DataBases)
                    {
                        var session = agent.GetInfoBaseSessions(clasterInfo, DataBase);

                        if (list_base_name.Count == 0)
                        {
                            list_base_name.Add(DataBase.Name);
                        }
                        else if (list_base_name.Contains(DataBase.Name) == false)
                        {
                            list_base_name.Add(DataBase.Name);
                        }
                        index_++;
                    }
                }
            }
            catch
            {
                MessageBox.Show("Нет соединения с кластером сервера 1С!");
            }
        }
예제 #6
0
        public void GetListSessions(String DBName)
        {
            ClearLog();
            setInfoParameters();
            if (String.IsNullOrEmpty(clasterName))
            {
                setLogText("Укажите в параметрах имя кластера."); return;
            }
            if (String.IsNullOrEmpty(name_server))
            {
                setLogText("Укажите в параметрах имя сервера."); return;
            }

            V83.IServerAgentConnection agent = com1s.ConnectAgent(name_server);
            Array clasters = agent.GetClusters();

            foreach (V83.IClusterInfo clasterInfo in clasters)
            {
                if (String.Equals(clasterInfo.HostName, name_server) && String.Equals(clasterInfo.ClusterName, clasterName))
                {
                    agent.Authenticate(clasterInfo, user_claster, pas_claster);
                    Array sessions = agent.GetSessions(clasterInfo);

                    V83.IInfoBaseShort infoBase;
                    foreach (V83.ISessionInfo session in sessions)
                    {
                        infoBase = session.infoBase;
                        agent.UpdateInfoBase(clasterInfo, infoBase);
                        if (infoBase.Name == DBName)
                        {
                            if (session.AppID == "1CV8C")
                            {
                                name_soft = "Тонкий клиент";
                            }
                            else if (session.AppID == "1CV8")
                            {
                                name_soft = "Толстый клиент";
                            }
                            else if (session.AppID == "COMConnection")
                            {
                                name_soft = "COM-соединение";
                            }
                            else if (session.AppID == "Designer")
                            {
                                name_soft = "Конфигуратор";
                            }
                            else if (session.AppID == "SrvrConsole")
                            {
                                name_soft = "Консоль кластера";
                            }
                            else if (session.AppID == "COMConsole")
                            {
                                name_soft = "COM-администратор";
                            }

                            addLogText("Computer: " + session.Host + "; Number session: " + Convert.ToString(session.SessionID) + "; User name: " + session.userName + " (" + name_soft + ")" + "\r\n");
                        }
                    }
                }
            }
            System.Runtime.InteropServices.Marshal.ReleaseComObject(agent);
        }