Имя: Пароль:
1C
 
BackUp. Скрипт... Где косяк?
0 voyjr
 
07.02.10
18:43
На форуме нашел интересный скрипт архивации. Вот он..........
//***************************


'*******************************************************
' File:    BackUp1C.vbs  
' Author:  (c) A.Lopatinskiy "Digital Technologies Ltd"
'
'***********************************************************
Const EXE ="""D:\Program Files\1cv77\BIN\1CV7.exe"""
'***********************************************************
Const ForWriting = 2              
Dim WshShell
Dim fso
Dim IniFile
ErrorMes1="Usage:"_
+vbCrLf+"BackUp1C.vbs <DatabasePath> <ArchivePrefix> <ArchiveDir> <User> <Pass>"_
+vbCrLf+"Where:"_
+vbCrLf+"    <DatabasePath>    - Path to 1C database directory"_
+vbCrLf+"    <ArchivePrefix>    - Prefix archive file"_
+vbCrLf+"    <ArchiveDir>    - Directory for archive file"_
+vbCrLf+"    <User>        - 1C user name"_
+vbCrLf+"    <Pass>        - 1C user password"


Set WshShell = WScript.CreateObject("WScript.Shell")
Set objArgs = WScript.Arguments
Set fso = CreateObject("Scripting.FileSystemObject")
If objArgs.Count <5 Then
   MsgBox ErrorMes1,vbOKOnly + vbCritical, "Command line Error!"
   WScript.Quit 1    
else
   IniFileName=objArgs(1)+"_"+CStr(Year(Now()))+Right("0"+CStr(Month(Now())),2)+Right("0"+CStr(Day(Now())),2)+"_"+CStr(Random())+".prm"
   ArchFileName=objArgs(1)+"_"+CStr(Year(Now()))+Right("0"+CStr(Month(Now())),2)+Right("0"+CStr(Day(Now())),2)+".zip"
   ArchDir=objArgs(2)
   If (Not fso.FolderExists(objArgs(2))) Then
       Set oFolder = fso.CreateFolder(objArgs(2))
   Else
           Set oFolder = fso.GetFolder(objArgs(2))            
       End If
   Set IniFile = fso.OpenTextFile(GetPath&IniFileName, ForWriting , True)
   IniFile.WriteLine "[General]"
   IniFile.WriteLine "UnloadData=Y"
       IniFile.WriteLine "[UnloadData]"
   IniFile.WriteLine "UnloadToFile="+oFolder+"\"+ArchFileName
   set IniFile = Nothing
End If

WshShell.Run EXE & "config" & " /d"&objArgs(0) & " /n"&objArgs(3) &" /p"&objArgs(4) & " /@"&GetPath&IniFileName,, True

If (fso.FileExists(GetPath&IniFileName)) Then
  fso.DeleteFile(GetPath&IniFileName)
End If

Function GetPath
   ' Retrieve path to the script file.
   Dim path
   path = WScript.ScriptFullName
   GetPath = Left(path, InStrRev(path, "\"))
End Function

Function Random()
   Random=Hex(Year(Now())+Month(Now())+Day(Now())+Hour(Now())+Minute(Now())+Second(Now()))
End Function


А вот его краткое описание................
Скрипт преднезначен для архивирования информационных баз 1С?Предприятие 7.7
путем выгрузки данных.
Внимательно  прочитайте это файл до конца!
Запуск скрипта:
   BackUp1C.vbs <DatabasePath> <ArchivePrefix> <ArchiveDir> <User> <Pass>
где:

<DatabasePath>  - путь к каталогу ИБ 1С:Предприятия 7.7
<ArchivePrefix> - префикс файла создаваемого архива
<ArchiveDir>    - каталог, где будут размещаться резервные копии
<User>        - имя пользователя 1С, имеющего права на выгрузку данных
<Pass>        - пароль пользователя 1С, имеющего права на выгрузку данных

Все параметры командной строки являются ОБЯЗАТЕЛЬНЫМИ!
Скрипт создает резервные копии ИБ 1С:Предприятия 7.7:
  <ArchiveDir>\<ArchivePrefix>_<Год><Месяц><День>.zip
Для корректной работы необходимо подкорректировать строку запуска (путь к
исполняемому файлу) 1С:Предприятия:
(строка 6: Const EXE ="""C:\Program files\1cv77\bin\1cv7s.exe """)

Пример:
BackUp1C.vbs E:\MyDB_1 DB_1 X:\Back1C Попов Secret

Для автоматического резервирования скрипт с указанными параметрами
командной строки следует разместить в планировщике Windows.

Есть куча программ, которые архивируют всю папку с базой, а эта именно (как написано) делает выгрузку. То что мне надо.
При исполнении скрипта выходит ошибка.........\
Строка:1
Символ:1
Ошибка: Предполагается наличие инструкции
Код: 800А0400
Источник: Ошибка компиляции Microsoft VBScript

Помогите разобраться. Всё делал как в инструкции написано. Ничего не получается. Нужна как раз выгрузка, а не простое архивирование. Или может кто-нибудь другой скрипт знает?
1 Ковычки
 
07.02.10
19:15
//***************************
2 ZOMI
 
07.02.10
19:17
(0) Пакетный режим в 1С 77 - миллион обработок в сети
3 ZOMI
 
07.02.10
19:18
(0) ну а вообще одинэсник обязан уметь руками это писать ... Хотя поколение копипастных не поймет о чем я ...
4 deskor
 
07.02.10
19:32
А нафига такие навороты?
До выгрузки средствами скуля я юзал такое:
[General]
Output="D:\log.txt"
UnloadData=1
Quit=1
[UnloadData]
UnloadToFile="D:\backup\base.zip"
IncludeUserDef=1
5 Torquader
 
07.02.10
20:04
Функции GetPath и Random переносим в начало скрипта, чтобы они были видны.
Потом, везде, где строки соединяются при помощи & должны стоять пробелы.
То есть GetPath&IniFileName не всегда может сработать.
Тоже касается пробелов перед переносом строки (_), без него не все интерпретаторы понимают, что надо сделать.
Кроме того, функция GetPath - написана неправильно - она выделяет строку до первого разделителя, то есть получает корень диска (а надо, видимо, что-то другое).
Function GetPath
   ' Retrieve path to the script file.
   GetPath = Left(WScript.ScriptFullName, InStrRev(WScript.ScriptFullName,WScript.ScriptName))
End Function
6 Torquader
 
07.02.10
20:05
+(.)
Кроме того, надеюсь, что
//**************************************
Это не в первой строке файла (так коментарий // работает только в JavaScript).
7 voyjr
 
07.02.10
20:14
Спасибо огромное(1). Оказалось всё так просто!!!
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан