Пример #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);
                        }
                    }
                }
            }
        }
        ///Заполняем список баз
        ///
        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С!");
            }
        }
Пример #3
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);
        }