Файл VBScript для установки блокировки доступа пользователей к базе 1с для проведения плановых работ. Данный скрипт устанавливает блокировку подключений без ключа «/UC» и делает перезапуск службы агента 1с для сброса подвисших соединений.
После проведения данных действий, можно проводить обслуживание базы запустив 1с с ключем «/UC» где в качестве кода указать код установленный в настройках скрипта.
По истечении времени блокировки, доступ к базе будет открыт.
//———————————————————————————
‘ VBScript Blocked1cForBackUp.vbs
‘ Sample script to Blocked 1c and Stop or Start a Service
‘ [url]www.computerperformance.co.[/url]
‘ Created by Lex 21/07/2024 Version 1.0
‘ ——————————————————-‘
Sub RestartService
Dim objWMIService, objItem, objService
Dim colListOfServices, strComputer, strService, intSleep
strComputer = «.»
intSleep = 15000 ‘ Время между остановкой и запуском службы
‘ Имя службы которую необходимо перезапустить
strService = » ‘1C:Enterprise 8.2 Server Agent (x86-64)’ «
Set objWMIService = GetObject(«winmgmts:» _
& «{impersonationLevel=impersonate}!\» _
& strComputer & »
ootcimv2″)
Set colListOfServices = objWMIService.ExecQuery _
(«Select * from Win32_Service Where Name =»_
& strService & » «)
For Each objService in colListOfServices
objService.StopService()
WSCript.Sleep intSleep
objService.StartService()
Next
End Sub
Sub BlockedConnect
Dim Connector,AgentConnection,Cluster,WorkingProcess,WorkingProcessConnection,ibDesc,connections,ConnectString
NameLogFile = «monopoly.log» ‘Имя Log файла
‘Установим путь к лог файлу как и путь запуска скрипта
Out=Replace(WSH.ScriptFullName, WSH.ScriptName, NameLogFile )
Set fs = CreateObject(«Scripting.FileSystemObject»)
Set OutFile = fs.OpenTextFile(Out, 8, True)
‘Указываем имя пользователя с правами доступа к консоли
AdminName = «Администратор»
‘Указываем пароль
UserPass = «Пароль»
‘Укажем IP Сервера с базами 1c
ServerName = «192.168.1.11»
‘Укажем Имя базы
BaseName = «Test»
WScript.Quit (0)
Set Connector = CreateObject(«V82.COMConnector»)
Set AgentConnection = Connector.ConnectAgent(ServerName)
Set Cluster = AgentConnection.GetClusters()(0)
AgentConnection.Authenticate Cluster, «», «»
For Each WorkProcess In AgentConnection.GetWorkingProcesses(Cluster)
ConnectString = WorkProcess.HostName & «:» & WorkProcess.MainPort
Set WorkProcessConnection = Connector.ConnectWorkingProcess(ConnectString)
WorkProcessConnection.AddAuthentication AdminName, UserPass
BaseList = WorkProcessConnection.GetInfoBases()
For i = LBound(BaseList) To UBound(BaseList)
If BaseList(i).Name = BaseName Then
Set Base = BaseList(i)
Connections = WorkProcessConnection.GetInfoBaseConnections(Base)
LockMessageText = vbCrLf + «БАЗА ЗАКРЫТА НА СОЗДАНИЕ РЕЗЕРВНОЙ КОПИИ!» + vbCrLf + » ВРЕМЯ ОЖИДАНИЯ ОКОЛО 5 — 10 МИНУТ.»
LockPermissionCode = «Kod» ‘ Код блокировки базы
test=WorkProcessConnection.GetInfoBases()
Base.ConnectDenied = True
Base.DeniedFrom = CStr(Now())
Base.DeniedTo = CStr(Now() + 1/300)
Base.DeniedMessage = LockMessageText
Base.PermissionCode = LockPermissionCode
OutFile.WriteLine(CStr(Now) + » Установлено сообщение для пользователей: «+LockMessageText)
OutFile.WriteLine(CStr(Now) + » Установлен код доступа » + LockPermissionCode)
OutFile.WriteLine(CStr(Now) + » Установлена блокировка с «+CStr(Base.DeniedFrom)+» по «+ CStr(Base.DeniedTo))
WorkProcessConnection.UpdateInfoBase(Base)
OutFile.Close()
End If
Next
Next
End Sub
On Error Resume Next
BlockedConnect()
RestartService()
//———————————————————————————