Имя: Пароль:
1C
1С v8
Сброс всех соединений 1С
0 madcrinkle
 
14.05.14
13:30
Добрый день/вечер/ночь!)

Нашел на просторах интернета vbs скрипт который сбрасывает все подключения к базе 1С, но столкнулся с следующей проблемой он сбрасывает все подключения запущенные в режиме Конфигуратор или Толстый клиент. Тонкий клиент игнорируется.
Может кто нибудь помочь разобраться, или хотя бы где и что почитать что бы разобраться?
Платформа 8.3

Ниже сам скрипт
----

'VBS. Cкрипт осуществляет отключение всех подключений к ИБ 1С:Предприятия v8.2.
'На сервере подразумевается наличие только одного кластера и нескольких рабочих процессов

'имя пользователя 1С:Предприятия
UserName = "xxx"

'пароль пользователя 1С:Предприятия
UserPass = "xxx"

'имя сервера 1С
ServerName    =    "server-1c"
BaseName    =    "buh"

'количество рабочих процессов минус 1
pn = 1

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

Next    'p
1 PiVa123
 
14.05.14
13:39

    ПараметрыСоединения = СтроковыеФункцииКлиентСервер.ПолучитьПараметрыИзСтроки(СтрокаСоединенияИнформационнойБазы());
    ИмяСервера=ПараметрыСоединения.Srvr;
    ИмяБазы=ПараметрыСоединения.Ref;
    НомерСеанса=НомерСеанса();
    
    Соединитель = Новый COMОбъект("V83.COMConnector");
    СоединениеСАгентом = Соединитель.ConnectAgent(ИмяСервера);
    Clusters = СоединениеСАгентом.GetClusters();
    для Каждого Кластер из Clusters Цикл
        СоединениеСАгентом.Authenticate(Кластер,"","");
        WorkingProcesses = СоединениеСАгентом.GetWorkingProcesses(Кластер);
        Базы=СоединениеСАгентом.GetInfoBases(Кластер);
        Для каждого База  Из Базы Цикл
            Если Врег(База.Name)=ВРЕГ(ИмяБазы) Тогда
                Сеансы = СоединениеСАгентом.GetInfoBaseSessions(Кластер,База);
                Для Каждого Сеанс из Сеансы Цикл
                    Если Сеанс.AppID="COMConsole" или Сеанс.AppID="Designer" Тогда
                        Продолжить;
                    КонецЕсли;
                    Если Сеанс.SessionID <> НомерСеанса Тогда
                        СоединениеСАгентом.TerminateSession(Кластер,Сеанс);
                    КонецЕсли;
                КонецЦикла;
            КонецЕсли;
        КонецЦикла;
    КонецЦикла;    
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший