/// <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() { //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С!"); } }
/// <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С!"); } }
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); }