Нашел на просторах интернета vbs скрипт который сбрасывает все подключения к базе 1С, но столкнулся с следующей проблемой он сбрасывает все подключения запущенные в режиме Конфигуратор или Толстый клиент. Тонкий клиент игнорируется.
Может кто нибудь помочь разобраться, или хотя бы где и что почитать что бы разобраться?
Платформа 8.3
Ниже сам скрипт
----
'VBS. Cкрипт осуществляет отключение всех подключений к ИБ 1С:Предприятия v8.2.
'На сервере подразумевается наличие только одного кластера и нескольких рабочих процессов
Dim Connector
Dim AgentConnection
Dim Cluster
Dim WorkingProcess
Dim WorkingProcessConnection
Dim ibDesc
Dim connections
Dim ConnectString
Dim StdOut
Set StdOut = WScript.StdOut
Set Connector = CreateObject("V83.COMConnector")
Set AgentConnection = Connector.ConnectAgent(ServerName)
Set Cluster = AgentConnection.GetClusters()(0)
AgentConnection.Authenticate Cluster, "", ""
Dim p
For p = 0 To pn
Set WorkingProcess = AgentConnection.GetWorkingProcesses(Cluster)(p)
ConnectString = WorkingProcess.HostName & ":" & WorkingProcess.MainPort
Set WorkingProcessConnection = Connector.ConnectWorkingProcess(ConnectString)
WorkingProcessConnection.AddAuthentication UserName, UserPass
Set ibDesc = WorkingProcessConnection.CreateInfoBaseInfo()
ibDesc.Name = BaseName
Connections = WorkingProcessConnection.GetInfoBaseConnections(ibDesc)
Dim i
Dim Connection
For i = LBound(Connections) To UBound(Connections)
set Connection = connections(i)
If (Connection.AppID <> "COMConsole") then
'StdOut.WriteLine(Connection.UserName)
WorkingProcessConnection.Disconnect Connection
End if
Next 'i
Соединитель = Новый COMОбъект("V83.COMConnector");
СоединениеСАгентом = Соединитель.ConnectAgent(ИмяСервера);
Clusters = СоединениеСАгентом.GetClusters();
для Каждого Кластер из Clusters Цикл
СоединениеСАгентом.Authenticate(Кластер,"","");
WorkingProcesses = СоединениеСАгентом.GetWorkingProcesses(Кластер);
Базы=СоединениеСАгентом.GetInfoBases(Кластер);
Для каждого База Из Базы Цикл
Если Врег(База.Name)=ВРЕГ(ИмяБазы) Тогда
Сеансы = СоединениеСАгентом.GetInfoBaseSessions(Кластер,База);
Для Каждого Сеанс из Сеансы Цикл
Если Сеанс.AppID="COMConsole" или Сеанс.AppID="Designer" Тогда
Продолжить;
КонецЕсли;
Если Сеанс.SessionID <> НомерСеанса Тогда
СоединениеСАгентом.TerminateSession(Кластер,Сеанс);
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецЦикла;
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший