Dev ›
Вопрос!!! Определение запущенного сеанса 1С с помощью скрипта ›
#6
27.05.16 10:09
Решил задачку следующим образом, может будет полезно.
'На сервере подразумевается наличие только одного кластера и нескольких рабочих процессов
'имя пользователя 1С:Предприятия
UserName = "zzz"
URobot_Vipusk = "Robot_Vipusk"
URobot_GP = "Robot_GP"
URobot_Transp = "Robot_Transp"
'пароль пользователя 1С:Предприятия
UserPass = ""
UPRobot_Vipusk = "zzz1"
UPRobot_GP = "zzz1"
UPRobot_Transp = "zzz1"
'имя сервера 1С
ServerName = "SQLServer"
BaseName = "Base83"
'количество рабочих процессом минус 1
pn = 0
Dim Connector
Dim AgentConnection
Dim Cluster
Dim WorkingProcess
Dim WorkingProcessConnection
Dim ibDesc
Dim connections
Dim ConnectString
Dim StdOut
Set StdOut = WScript.StdOut
Dim bRobot_Vipusk
Dim bRobot_GP
Dim bRobot_Transp
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
bRobot_Vipusk = False
bRobot_GP = False
bRobot_Transp = False
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
' Проверяем робота на выпуске
If Connection.userName = "Robot_Vipusk" Then
bRobot_Vipusk = True
End If
' Проверяем робота на ГП
If Connection.userName = "Robot_GP" Then
bRobot_GP = True
End If
' Проверяем робота на транспортной
If Connection.userName = "Robot_Transp" Then
bRobot_Transp = True
End If
End if
Next 'i
Next 'p
' Запуск робота на выпуске
If Not bRobot_Vipusk Then
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run """c:\Program Files (x86)\1cv8\8.3.7.1790\bin\1cv8.exe"" ENTERPRISE /S " & ServerName & "\" & BaseName & " /N " & URobot_Vipusk & " /P " & UPRobot_Vipusk
WScript.Sleep (15000)
End If
' Запуск робота на ГП
If Not bRobot_GP Then
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run """c:\Program Files (x86)\1cv8\8.3.7.1790\bin\1cv8.exe"" ENTERPRISE /S " & ServerName & "\" & BaseName & " /N " & URobot_GP & " /P " & UPRobot_GP
WScript.Sleep (15000)
End If
' Запуск робота на транспортной
If Not bRobot_Transp Then
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run """c:\Program Files (x86)\1cv8\8.3.7.1790\bin\1cv8.exe"" ENTERPRISE /S " & ServerName & "\" & BaseName & " /N " & URobot_Transp & " /P " & UPRobot_Transp
'WScript.Sleep (15000)
End If
WScript.quit 0