
-=Белый Медведь=-
   
Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь
Репутация: 11 Всего: 109
|
Привет всем!!! Представляю вашему вниманию программу, которая автоматически делает выгрузку базы 1С в zip-архив. Может кому пригодиться... Строка запуска 1CBackUp.vbs или 1CBackUp.vbs [параметры] Пример 1CBackUp.vbs Path:="C:\Program Files\1Cv77"Поддерживает следующие ИМЕНОВАНЫЕ параметры - PATH
- USER
- PASSWORD
- BACKUPPATH
- 1CNAME
Если параметры не указаны, то берутся параметры, заложеные в программу... Может, пригодиться кому... Сегодня полдня писАл... (Кое-где коментарии к тексту программы "левые".) | Код | '''''''''''''''''''''''''''''''''''''''''''''' ' Скрипт для резервного копирования (выгрузки) ' данных из базы данных 1С ' ' (с) Михаил Медведев. 2007 год. ''''''''''''''''''''''''''''''''''''''''''''''
Option Explicit '''''''''''''''''''''''''''''''''''''''''''''' ' Определяем глобальные переменные '''''''''''''''''''''''''''''''''''''''''''''' Public CName ' ПОЛНОЕ имя исполняемого файла 1С Public MyPath ' Размещение базы данных 1С Public MyUser ' Имя пользователя с правами администратора Public MyPassword ' Пароль пользователя Public MyBackUpPath ' Место расположения архива Public MyExtforms ' Признак необходимости архивирования EXTFORMS
Public fso ' Переменная для работы с файловой системой Public MyLogFile ' Объект "log-файл" Public MyLogFileName ' Имя log-файла
'''''''''''''''''''''''''''''''''''''''''''''' ' Основная программа ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Call InitialiseMyVariables ' инициализируем переменные
Call OpenLogFile ' открываем log-файл
Call ReadScriptsArguments ' Считываем имеющиеся параметры запуска скрипта
Call RarExtforms ' Архивируем файлы .ert из Extforms
call Create1CPRM ' Создаём командный файл для 1С
call ExportFrom1C ' Запускаем 1С в пакетном режиме
call Delete1CPRM ' Удаляем командный файл для 1С
Call CloseLogFile ' закрываем log-файл
WScript.Quit ' Завершаем работу скрипта...
'''''''''''''''''''''''''''''''''''''''''''''' ' Конец основной программы ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''' ' Подпрограмма инициализации глобальных переменных '''''''''''''''''''''''''''''''''''''''''''''' Sub InitialiseMyVariables ()
' Устанавливаем значения по умолчанию CName = "C:\Program Files\1Cv77\BIN\1cv7.exe" ' Имя исполняемого файла 1С MyPath = "D:\Документы Миханика\Бухгалтерия Алвист" ' Размещение базы данных 1С MyBackUpPath = "D:" ' Место расположения архива MyUser = "МихаилМедведев" ' Имя пользователя с правами администратора MyPassword = "миханик" ' Пароль пользователя MyExtforms = True ' Признак необходимости архивирования EXTFORMS ' параметр задаётся ТОЛЬКО в программе ' возможные значения True / False End sub
'''''''''''''''''''''''''''''''''''''''''''''' ' Подпрограмма создания пакетного файла для 1С '''''''''''''''''''''''''''''''''''''''''''''' Sub Create1CPRM ()
dim fso ' Переменная для работы с файловой системой dim MyPRMFile ' Объект "log-файл" dim MyFileName ' Имя log-файла Dim I
On Error Resume Next
MyLogFile.WriteLine(cstr(now()) & " - Попытка создать временный пакетный файл для 1С.")
' Вычислим имя для пакетного файла MyFileName = mid(Wscript.ScriptFullName,1,instrrev(Wscript.ScriptFullName,"\")) & "1CBackUp.prm"
' Откроем пакетный файл для вывода Set fso = WScript.CreateObject("Scripting.FileSystemObject") Set MyPRMFile =fso.CreateTextFile(MyFileName, True)
' Вычислим имя для log-файла 1С MyFileName = mid(Wscript.ScriptFullName,1,instrrev(Wscript.ScriptFullName,"\")) & "1C_Log_File " & Replace(cstr(now()), ":", ".") & ".txt"
' Запись текста в пакетный файл MyPRMFile.WriteLine("[General]") MyPRMFile.WriteLine("Output = """ & MyFileName & """" ) MyPRMFile.WriteLine("Quit = 1") MyPRMFile.WriteLine("CheckAndRepair = 0") MyPRMFile.WriteLine("UnloadData = 1") MyPRMFile.WriteLine("SaveData = 0") MyPRMFile.WriteLine("AutoExchange = 0") MyPRMFile.WriteLine("") MyPRMFile.WriteLine("[UnloadData]") MyPRMFile.WriteLine("UnloadToFile = """ & MyBackUpPath & "\1CBackUp " & Replace(cstr(now()), ":", ".") & ".zip""") MyPRMFile.WriteLine("IncludeUserDef = 1") MyPRMFile.WriteLine("Password =")
MyPRMFile.Close
Set MyPRMFile = Nothing Set fso = Nothing
MyFileName = mid(Wscript.ScriptFullName,1,instrrev(Wscript.ScriptFullName,"\")) & "1CBackUp.prm"
If MyFileExist ( MyFileName ) Then MyLogFile.WriteLine(cstr(now()) & " - Файл успешно создан.") else MyLogFile.WriteLine(cstr(now()) & " - Не удалось создать файл.") MyLogFile.WriteLine(cstr(now()) & " - Выполнения скрипта прервано...")
Call CloseLogFile
WScript.Quit end If
end sub
'''''''''''''''''''''''''''''''''''''''''''''' ' Подпрограмма удаления пакетного файла для 1С '''''''''''''''''''''''''''''''''''''''''''''' Sub Delete1CPRM () dim fso ' Переменная для работы с файловой системой dim MyFileName ' Имя log-файла
On Error Resume Next
MyLogFile.WriteLine(cstr(now()) & " - Попытка удалить временный пакетный файл для 1С.")
' Вычислим имя файла для программы для 1С MyFileName = mid(Wscript.ScriptFullName,1,instrrev(Wscript.ScriptFullName,"\")) & "1CBackUp.prm"
If MyFileExist ( MyFileName ) Then
MyLogFile.WriteLine(cstr(now()) & " - Файл найден.")
' Удалим файл с программой для 1С Set fso = WScript.CreateObject("Scripting.FileSystemObject") fso.DeleteFile(MyFileName) Set fso = Nothing else MyLogFile.WriteLine(cstr(now()) & " - Не удалось найти файл.") MyLogFile.WriteLine(cstr(now()) & " - Этап удаления файла пропущен.") Exit Sub end If
If MyFileExist ( MyFileName ) Then MyLogFile.WriteLine(cstr(now()) & " - Не удалось удалить файл.") else MyLogFile.WriteLine(cstr(now()) & " - Файл был успешно удалён.") end if
end sub
'''''''''''''''''''''''''''''''''''''''''''''' ' Функция проверки существования файла '''''''''''''''''''''''''''''''''''''''''''''' Function MyFileExist (ByVal Name)
dim fso ' Переменная для работы с файловой системой
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
If (fso.FileExists(Name)) Then MyFileExist = True Else MyFileExist = False End If
end Function
'''''''''''''''''''''''''''''''''''''''''''''' ' Подпрограмма открытия log-файла '''''''''''''''''''''''''''''''''''''''''''''' Sub OpenLogFile ()
' Определим полное имя файла со скриптом MyLogFileName = Wscript.ScriptFullName
' Вычислим имя файла для лога MyLogFileName = mid(MyLogFileName,1,instrrev(MyLogFileName,"\")) MyLogFileName = MyLogFileName & "1CBackUp " & Replace(cstr(now()), ":", ".") & ".log"
' Откроем log-файл для вывода Set fso = WScript.CreateObject("Scripting.FileSystemObject") Set MyLogFile =fso.CreateTextFile(MyLogFileName, True)
' Запись в log-файл первой записи об его успешном создании MyLogFile.WriteLine(cstr(now()) & " - Log-файл успешно создан.")
End sub
'''''''''''''''''''''''''''''''''''''''''''''' ' Подпрограмма закрытия log-файла '''''''''''''''''''''''''''''''''''''''''''''' Sub CloseLogFile ()
' Закрываем log-файл MyLogFile.WriteLine(cstr(now()) & " - Скрипт закончил свою работу.") MyLogFile.Close set MyLogFile = Nothing Set fso = Nothing
End sub
'''''''''''''''''''''''''''''''''''''''''''''' ' Подпрограмма считывания аргументов скрипта '''''''''''''''''''''''''''''''''''''''''''''' Sub ReadScriptsArguments () Dim objArgs Dim S, P, MyErr, I
' Проверим наличие аргументов у скрипта Set objArgs = WScript.Arguments
If objArgs.Count=0 then ' Запись в log-файл о том, что аргументы скрипта не заданы MyLogFile.WriteLine(cstr(now()) & " - Скрипт был запущен без параметров.") MyLogFile.WriteLine(cstr(now()) & " - Были установлены параметры по умолчанию.") else ' Запись в log-файл о том, что были обнаружены аргументы скрипта MyLogFile.WriteLine(cstr(now()) & " - Скрипт был запущен с использованием параметров.") MyLogFile.WriteLine(cstr(now()) & " - Параметры по умолчанию будут изменены.")
' Если аргументы есть, то выделим их... MyErr = ""
For I = 0 to (objArgs.Count - 1)
P = instrrev(objArgs(I), ":=")
If P = 0 Then MyLogFile.WriteLine(cstr(now()) & " - синтаксическая ошибка в параметре " & """" & objArgs(I) & """") MyErr = MyErr & " - " & objArgs(I) & VbCrLf else S = ucase (mid ( objArgs(I), 1, P - 1)) Select Case S Case "PATH" MyPath = mid ( objArgs(I), P + 2, len(objArgs(I))-2) Case "USER" MyUser = mid ( objArgs(I), P + 2, len(objArgs(I))-2) Case "PASSWORD" MyPassword = mid ( objArgs(I), P + 2, len(objArgs(I))-2) Case "BACKUPPATH" MyBackUpPath = mid ( objArgs(I), P + 2, len(objArgs(I))-2) Case "1CNAME" CName = mid ( objArgs(I), P + 2, len(objArgs(I))-2) Case Else MyLogFile.WriteLine(cstr(now()) & " - синтаксическая ошибка в параметре " & """" & objArgs(I) & """") MyErr = MyErr & " - " & objArgs(I) & VbCrLf End Select end if Next
' Если в аргументах были ошибки, то сообщим об этом If len(MyErr) <> 0 Then MyLogFile.WriteLine(cstr(now()) & " - В параметрах вызова скрипта были обнаружены ошибки.") MyLogFile.WriteLine(cstr(now()) & " - Ниже расположен список ошибочных параметров:") MyLogFile.WriteLine(MyErr) MyLogFile.WriteLine(cstr(now()) & " - Ошибочные параметры не обработаны.") end if
end if Set objArgs = Nothing
' Выведем в log-файл установленные параметры работы скрипта S = " - Path = """ & MyPath & """" & VbCrLf S = S & " - User = """ & MyUser & """" & VbCrLf S = S & " - Password = """ & MyPassword & """" & VbCrLf S = S & " - BackUpPath = """ & MyBackUpPath & """" & VbCrLf S = S & " - 1CName = """ & CName & """" & VbCrLf
MyLogFile.WriteLine(cstr(now()) & " - Установлены следующие параметры работы скрипта:") MyLogFile.WriteLine(S)
End sub
'''''''''''''''''''''''''''''''''''''''''''''' ' Подпрограмма архивирования файлов ' .ert из каталога Extforms '''''''''''''''''''''''''''''''''''''''''''''' Sub RarExtforms () Dim WshShell, oExec Dim S
' Если необходимо архивировать Extforms, делаем это. If MyExtforms Then ' Начинаем архивировать файлы .ert ' Выводим запись в log-файл MyLogFile.WriteLine(cstr(now()) & " - Начало архивирования EXTFORMS")
' Формируем строку с командой для WinRAR S = "winrar a -ep """ & MyBackUpPath & "\EXTFORMS "" """ & MyPath & "\EXTFORMS\*.ert"" -r -agDD-MM-YY"
' Выводим команду для WinRAR в log-файл MyLogFile.WriteLine(" - " & S)
' Запускаем WinRAR с нужными параметрами Set WshShell = CreateObject("WScript.Shell") oExec = WshShell.run( S, 5 , True) Set WshShell = Nothing
' Выводим запись в log-файл MyLogFile.WriteLine(cstr(now()) & " - Конец архивирования EXTFORMS") End If
end sub
'''''''''''''''''''''''''''''''''''''''''''''' ' Подпрограмма выгрузки данных из 1С '''''''''''''''''''''''''''''''''''''''''''''' Sub ExportFrom1C () Dim WshShell, oExec Dim S
MyLogFile.WriteLine(cstr(now()) & " - Начало выгрузки базы 1С.")
' Формируем строку с командой для запуска 1С S = """" & CName & """ config /d""" & MyPath & """ /n""" & MyUser & """ /p""" & MyPassword & """ /@""" & _ mid(Wscript.ScriptFullName,1,instrrev(Wscript.ScriptFullName,"\")) & "1CBackUp.prm"""
' Выводим команду для 1C в log-файл MyLogFile.WriteLine(" - " & S)
' Запускаем 1C в пакетном режиме Set WshShell = CreateObject("WScript.Shell") oExec = WshShell.run( S, 5 , True) Set WshShell = Nothing
' Выводим запись в log-файл MyLogFile.WriteLine(cstr(now()) & " - Конец выгрузки из 1С.")
end sub
|
Это сообщение отредактировал(а) mihanik - 8.2.2007, 16:24
Присоединённый файл ( Кол-во скачиваний: 5 )
1CBackUp.vbs 13,44 Kb
--------------------
Программистами не рождаются, - это родовая травма...  
|