Имя: Пароль:
1C
Админ
VBS. Разгон всех пользователей 1С со всех рабочих процессов и всех кластеров
0 uinx
 
25.04.13
05:52
Наткнулся на VBS-скрипт который выгоняет всех пользователей с одного рабочего процесса 1С, думаю, ну ведь это уже не актуально в ввиду того что уже многие используют кластеризацию и имеют в кластерах не один рабочий процесс.
На итого решил дописать VBS-ник, выкладываю на обозрение, может кому сгодиться:
1 uinx
 
25.04.13
05:52
'Cкрипт (только SQL) отключает всех пользователей от ИБ 1С:Предприятия ver >= v8
'На сервере подразумевается наличие только одного кластера и только одного рабочего процесса
Option Explicit
' 25.04.2013 - Дописал разгон всех пользователей со всех рабочих процессов
Dim UserName
Dim UserPass
Dim ServerName
Dim BaseName
'имя пользователя базы 1С:Предприятия
UserName = ""
'пароль пользователя базы 1С:Предприятия
UserPass = ""
'имя сервера 1С:Предприятия
ServerName  =  ""
'имя базы 1С:Предприятия к которой подключаемся
BaseName    =  ""
'Удаление всех соединений заданной ИБ сервера 1С
Dim Connector
Dim AgentConnection
Dim Cluster
Dim Clusters
Dim WorkingProcess
Dim WorkingProcesses
Dim WorkingProcessConnection
Dim ibDesc
Dim Connections
Dim Connection
Dim ConnectString
Set Connector = CreateObject("V82.COMConnector")    ' указать в зависимости от вашей версии платформы V8, V81, V82, V83
Set AgentConnection = Connector.ConnectAgent(ServerName)
Clusters = AgentConnection.GetClusters()
Dim Q,W,I
For Q = LBound(Clusters) to UBound(Clusters)
'Указываем доступ к консоли 1С:Предприятия (только в том случае если определён администратор кластера, иначе прописать просто " " (пробелЫ))
   Set Cluster = Clusters(Q)
   AgentConnection.Authenticate Cluster, " ", " "
   WorkingProcesses = AgentConnection.GetWorkingProcesses(Cluster)
   For W = LBound(WorkingProcesses) to UBound(WorkingProcesses)
       Set WorkingProcess = WorkingProcesses(W)
       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)
       For I = LBound(Connections) To UBound(Connections)
           Set Connection = Connections(I)
           If (Connection.AppID <> "COMConsole") then
               WorkingProcessConnection.Disconnect Connection
           End if
       Next
   Next
Next
2 ildary
 
25.04.13
08:14
За скрипт спасибо, рекомендую комментировать вот так:

вместо

'пароль пользователя базы 1С:Предприятия
UserPass = ""
'имя сервера 1С:Предприятия
ServerName  =  ""

писать

UserPass    = ""  'пароль пользователя базы 1С:Предприятия
ServerName  = ""  'имя сервера 1С:Предприятия

немножко удобнее читать камменты - они идут сплошным потоком, один под другим
3 ildary
 
25.04.13
08:15
+(2) форматирование слетело, для наглядности лучше смотреть текст в редакторе с моноширным шрифтом.
4 olegves
 
25.04.13
08:59
(0) а на скуле это делается одной инструкцией - перевод базы в однопользовательский режим. Вопрос: зачем такой огород?
5 Infsams654
 
25.04.13
09:21