![]() |
![]() |
![]() |
|
Бэкап 1с82 серверный вариант в *.dt скриптом | ☑ | ||
---|---|---|---|---|
0
Andryuha83
14.12.10
✎
11:49
|
Данный скрипт хорошо отрабатывал на редакции УПП 1.2 платформы 8.1
Сейчас обновил базу на редакцию 1.3 платформу 8.2 и скрипт перестал работать, не могу понять почему.. HKEY_CLASSES_ROOT\CLSID\{5CD98F13-1050-4b43-84F2-33AD97CFC287} написал новое для 82. Порт кластера указал новый 1641. v82.COMConnector написал. Что может быть не так? Помогите пожалуйста разобраться. Скрипт vbs: DumpPath = "\\fiesta\BackUp" FileName = "buhBackUpD" ServerName = "fiesta" InfoBaseName = "buh" ClasterPortNumber = 1641 InfoBasesAdminName = "Юзер" InfoBasesAdminPass = "2912" ClasterAdminName = "" ClasterAdminPass = "" LockPermissionCode = "2192" ' Код блокировки базы LockMessageText = vbCrLf + "БАЗА ЗАКРЫТА НА СОЗДАНИЕ РЕЗЕРВНОЙ КОПИИ!" + vbCrLf + " ВРЕМЯ ОЖИДАНИЯ ОКОЛО 5-10 МИНУТ." LockPermissionCode = "2192" ' Код блокировки базы ClasterAdminName = "" ClasterAdminPass = "" FindInfoBase = False 'Флаг, что ИБ найдена Set WshShell = CreateObject("WScript.Shell") PrgDirx86 = WshShell.RegRead("HKEY_CLASSES_ROOT\CLSID\{5CD98F13-1050-4b43-84F2-33AD97CFC287}\LocalServer32\") strNow = Now() FullPathName = DumpPath & "\" & _ Right("0" & Day(strNow), 2) & "_" & Right("0" & Month(strNow), 2) & "_" + Right(Year(strNow), 2) & "_" &_ FileName & ".dt" If InStr(FullPathName, " ") <> 0 Then FullPathName = Chr(34) + FullPathName + Chr(34) End If Set ComConnector = CreateObject("v82.COMConnector") Set ServerAgent = ComConnector.ConnectAgent(ServerName) ' Массив кластеров Clasters = ServerAgent.GetClusters() ' кластер For Each Claster In Clasters If Claster.MainPort = ClasterPortNumber Then ServerAgent.Authenticate Claster, ClasterAdminName, ClasterAdminPass ' Получаем список рабочих процессов WorkingProcesses = ServerAgent.GetWorkingProcesses(Claster) For Each WorkingProcess In WorkingProcesses If WorkingProcess.Running = 1 Then ' Для каждого рабочего процесса создаем соединение с рабочим процессом Set connecttoworkprocess = ComConnector.ConnectWorkingProcess("tcp://" + WorkingProcess.HostName + ":" + CStr(WorkingProcess.MainPort)) connecttoworkprocess.AuthenticateAdmin ClasterAdminName, ClasterAdminPass connecttoworkprocess.AddAuthentication InfoBasesAdminName, InfoBasesAdminPass If Not FindInfoBase Then ' Получаем список ИБ рабочего процесса InfoBases = connecttoworkprocess.GetInfoBases() For Each InfoBase In InfoBases ' Ищем нужную базу If UCase(InfoBase.Name) = UCase(InfoBaseName) Then FindInfoBase = True Exit For End If Next If Not FindInfoBase Then ' Не нашли нужную базу Exit For End If InfoBase.ConnectDenied = True InfoBase.DeniedFrom = CStr(Now()) InfoBase.DeniedTo = CStr(Now() + 1/300) InfoBase.DeniedMessage = LockMessageText InfoBase.PermissionCode = LockPermissionCode connecttoworkprocess.UpdateInfoBase (InfoBase) End If If FindInfoBase Then Connections = connecttoworkprocess.GetInfoBaseConnections(InfoBase) For Each Connection In Connections If Connection.AppId <> "SrvrConsole" Then connecttoworkprocess.Disconnect (Connection) End If Next LineExe = """" + PrgDirx86 + """ CONFIG /S" + ServerName + "\" + InfoBaseName + _ " /N" + InfoBasesAdminName + " /P" + InfoBasesAdminPass + _ " /UC" + LockPermissionCode + " /DisableStartupMessages /DumpIB" + FullPathName WshShell.Run LineExe, 5, True 'InfoBase.ConnectDenied = False 'connecttoworkprocess.UpdateInfoBase (InfoBase) End If End If Next End If Next ComConnector = Null ServerAgent = Null Clasters = Null WorkingProcesses = Null connecttoworkprocess = Null InfoBases = Null InfoBase = Null Connections = Null |
|||
1
КМ155
14.12.10
✎
11:53
|
(0) Debug.print PrgDirx86
|
|||
2
ромарио
14.12.10
✎
12:06
|
какая ошибка?
|
|||
3
Andryuha83
14.12.10
✎
14:07
|
Вообще ничего не выдавал... висел wscript.exe просто и все.
Поменял строчку ServerName = "fiesta:1640" Теперь в базу входит, конфигуратор открывается, а потом сразу закрывается, ничего не делая( |
|||
4
ромарио
14.12.10
✎
14:19
|
может надо fiesta:1641,
а вообще как-нибудь содержимое lineexe в файл выведи, и пробуй из командной строки позапускать с разными параметрами |
|||
5
Andryuha83
14.12.10
✎
14:23
|
(4) не, 1640 все правильно. Он же заходит теперь в 1с-ку.
Процесс выгрузки не идет. |
|||
6
Andryuha83
14.12.10
✎
17:20
|
как можно lineexe вывести в файл?
пытался явным образом прописать его, не получается, не могу разобраться в кавычках( |
|||
7
Andryuha83
14.12.10
✎
18:17
|
Запускается, но выходит окно запуска, когда нажмешь кнопку конфигуратор, то фоново заходит и выгружает.
Значит дело просто где-то в кавычках.. что же лишнее?.. LineExe = """C:\Program Files (x86)\1cv82\8.2.12.78\bin\1cv8.exe"" CONFIG /S ""fiesta:1641""\""buh"" /N ""Юзер"" /P ""2912"" /UC ""2192"" /DisableStartupMessages /DumpIB ""C:\BackUp\1CArchive\1c.dt""" |
|||
8
Andryuha83
15.12.10
✎
14:35
|
Дело было не в кавычках)
DumpPath = "\\fiesta\BackUp" FileName = "buhBackUpD" ServerName = "fiesta:1640" ServerName2 = "fiesta:1641" InfoBaseName = "buh" ClasterPortNumber = 1641 InfoBasesAdminName = "Юзер" InfoBasesAdminPass = "2912" ClasterAdminName = "" ClasterAdminPass = "" LockPermissionCode = "2192" ' Код блокировки базы LockMessageText = vbCrLf + "БАЗА ЗАКРЫТА НА СОЗДАНИЕ РЕЗЕРВНОЙ КОПИИ!" + vbCrLf + " ВРЕМЯ ОЖИДАНИЯ ОКОЛО 5-10 МИНУТ." LockPermissionCode = "2192" ClasterAdminName = "" ClasterAdminPass = "" FindInfoBase = False 'Флаг, что ИБ найдена Set WshShell = CreateObject("WScript.Shell") PrgDirx86 = WshShell.RegRead("HKEY_CLASSES_ROOT\CLSID\{5CD98F13-1050-4b43-84F2-33AD97CFC287}\LocalServer32\") strNow = Now() FullPathName = DumpPath & "\" & _ Right("0" & Day(strNow), 2) & "_" & Right("0" & Month(strNow), 2) & "_" + Right(Year(strNow), 2) & "_" &_ FileName & ".dt" If InStr(FullPathName, " ") <> 0 Then FullPathName =FullPathName End If Set ComConnector = CreateObject("v82.COMConnector") Set ServerAgent = ComConnector.ConnectAgent(ServerName) ' Массив кластеров Clasters = ServerAgent.GetClusters() ' кластер For Each Claster In Clasters If Claster.MainPort = ClasterPortNumber Then ServerAgent.Authenticate Claster, ClasterAdminName, ClasterAdminPass ' Получаем список рабочих процессов WorkingProcesses = ServerAgent.GetWorkingProcesses(Claster) For Each WorkingProcess In WorkingProcesses If WorkingProcess.Running = 1 Then ' Для каждого рабочего процесса создаем соединение с рабочим процессом Set connecttoworkprocess = ComConnector.ConnectWorkingProcess("tcp://" + WorkingProcess.HostName + ":" + CStr(WorkingProcess.MainPort)) connecttoworkprocess.AuthenticateAdmin ClasterAdminName, ClasterAdminPass connecttoworkprocess.AddAuthentication InfoBasesAdminName, InfoBasesAdminPass If Not FindInfoBase Then ' Получаем список ИБ рабочего процесса InfoBases = connecttoworkprocess.GetInfoBases() For Each InfoBase In InfoBases ' Ищем нужную базу If UCase(InfoBase.Name) = UCase(InfoBaseName) Then FindInfoBase = True Exit For End If Next If Not FindInfoBase Then ' Не нашли нужную базу Exit For End If InfoBase.ConnectDenied = True InfoBase.DeniedFrom = CStr(Now()) InfoBase.DeniedTo = CStr(Now() + 1/300) InfoBase.DeniedMessage = LockMessageText InfoBase.PermissionCode = LockPermissionCode connecttoworkprocess.UpdateInfoBase (InfoBase) End If If FindInfoBase Then Connections = connecttoworkprocess.GetInfoBaseConnections(InfoBase) For Each Connection In Connections If Connection.AppId <> "SrvrConsole" Then connecttoworkprocess.Disconnect (Connection) End If Next LineExe = """" + PrgDirx86 + """ CONFIG /S" + ServerName2 + "\" + InfoBaseName + _ " /N" + InfoBasesAdminName + " /P" + InfoBasesAdminPass + _ " /UC" + LockPermissionCode + " /DisableStartupMessages /DumpIB" + FullPathName WshShell.Run LineExe, 5, True 'InfoBase.ConnectDenied = False 'connecttoworkprocess.UpdateInfoBase (InfoBase) End If End If Next End If Next ComConnector = Null ServerAgent = Null Clasters = Null WorkingProcesses = Null connecttoworkprocess = Null InfoBases = Null InfoBase = Null Connections = Null |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |