Имя: Пароль:
1C
1С v8
выгонялка на vbscript
0 n0ther
 
29.06.15
11:34
Пишу выгонялку на vbscript и столкнулся со следующей проблемой.

В таком варианте скрипта, не закрываются тонкие клиенты:

Set Connector = CreateObject("V83.COMConnector")

Set Agent = Connector.ConnectAgent(NameAgent)
Set Cluster = Agent.GetClusters()(0)

Agent.Authenticate Cluster, ClusterAdmin, ClusterPass

For Each WorkProcess In Agent.GetWorkingProcesses(Cluster)
    ConnectString = WorkProcess.HostName & ":" & WorkProcess.MainPort
    
    Set WorkProcessConnection = Connector.ConnectWorkingProcess(ConnectString)
    
    WorkProcessConnection.AddAuthentication BaseAdmin, BasePass
    
    BaseList = WorkProcessConnection.GetInfoBases()
    
    For i = LBound(BaseList) To UBound(BaseList)
    
        If LCase(BaseList(i).Name) = LCase(BaseName) Then
            Set Base = BaseList(i)
        
            ' соединения
            Connections = WorkProcessConnection.GetInfoBaseConnections(Base)
            For j = LBound(Connections) To UBound(Connections)
                Set CurrentConnection = Connections(j)
                If LCase(CurrentConnection.AppID) <> "comconsole" Then
                    WorkProcessConnection.Disconnect CurrentConnection
                End If
            Next

    End If
    Next
Next
1 n0ther
 
29.06.15
11:34
А в этом варианте выдает ошибку: Ошибка выполнения Microsoft VBScript: Несоответствие типа: 'Agent.GetInfoBaseSessions'

Set Connector = CreateObject("V83.COMConnector")

Set Agent = Connector.ConnectAgent(NameAgent)
Set Cluster = Agent.GetClusters()(0)

Agent.Authenticate Cluster, ClusterAdmin, ClusterPass

For Each WorkProcess In Agent.GetWorkingProcesses(Cluster)
    ConnectString = WorkProcess.HostName & ":" & WorkProcess.MainPort
    
    Set WorkProcessConnection = Connector.ConnectWorkingProcess(ConnectString)
    
    WorkProcessConnection.AddAuthentication BaseAdmin, BasePass
    
    BaseList = WorkProcessConnection.GetInfoBases()
    
    For i = LBound(BaseList) To UBound(BaseList)
    
        If LCase(BaseList(i).Name) = LCase(BaseName) Then
            Set Base = BaseList(i)
        
            ' сессии
            Sessions = Agent.GetInfoBaseSessions(Cluster, Base)
            For k = LBound(Sessions) To UBound(Sessions)
                Set ThisSession = Sessions(k)
                If LCase(ThisSession.AppID) <> "comconsole" Then
                    Agent.TerminateSession Cluster, ThisSession
                End If
            Next
        End If
    Next
Next
2 Господин ПЖ
 
29.06.15
11:36
>В таком варианте скрипта, не закрываются тонкие клиенты:

они просто обратно лезут
3 vhl
 
29.06.15
11:36
(1) очень интересно. Продолжайте наблюдения.
4 Бубка Гоп
 
29.06.15
11:38
(0) стесняюсь спросить, чем штатная выгонялка не устроила?
5 n0ther
 
29.06.15
11:39
(4) а вот с этого места поподробнее
6 n0ther
 
29.06.15
11:55
(2) это подло с их стороны. я так понимаю, третьего варианта не дано. что же эта падла через sessions не работает :-E
7 n0ther
 
29.06.15
12:23
(2) невнимательность!

во втором варианте, рабочий процесс не нужен совсем, а список баз получаем через агента. И вышибает всех!
8 Garykom
 
гуру
29.06.15
12:32
собственно а чем штатная выгонялка не подошла? особенно если серверная 1с...
9 n0ther
 
29.06.15
15:23
(8) да что за штатная выгонялка и где о ней почитать?
10 Одинесю
 
29.06.15
15:24
(9) Конфу скажи. В УПП Сервис - Блокировка соединений с информационной базой.
11 Azverin
 
29.06.15
15:25
(9) Обработка "Активные пользователи" УФ - можешь из УПП или КА дёрнуть
12 n0ther
 
29.06.15
15:28
(10) БП 3.0 КОРП. А из командной строки она стартанёт?
13 n0ther
 
29.06.15
15:33
Нашел, оказывается это функционал БСП. Интересно, но не подходит, так как не завершает принудительно сеансы конфигуратора.
14 Azverin
 
29.06.15
15:34
(13) Конфигуратор - проходной двор?
15 Web00001
 
29.06.15
15:36
(13)Конфигуратор у тебя в тонком клиенте работает каким то образом? Выгоняй всех штатной, а если кто то остался уже своим вариантом допинывай.
16 Jokero
 
29.06.15
15:39
(8) Зачем штатная выгонялка на серверной 1с? В администрировании делитим все сеансы и смеемся как злодей! Любителей пофигуратора там тоже можно выгнать.
17 Stim
 
29.06.15
15:43
(16) у меня не получалось скриптом убивать все сеансы. причем - до какой-то платформы работало, после - сеансы стали суперживучи и неубиваемы.
пришлось скриптом запускать штатную выгонялку и в цикле проверять количество соединений
18 Одинесю
 
29.06.15
15:44
(16) Можно проще - перезапустить службу )
19 n0ther
 
29.06.15
15:55
(18) во! отличный, простой и действенный способ.
20 Одинесю
 
29.06.15
16:01
(19) Телефон надо?
21 Stim
 
29.06.15
16:10
(19) нихрена подобного. сеансы живучи
22 Одинесю
 
29.06.15
16:18