Имя: Пароль:
1C
1С v8
Скрипт для обновления ИБ
0 val245
 
23.01.12
15:31
Распределенная база. Более 20 зависимых баз. В окнфигурацию достаточно часто вносятся изменения. Клиент хотел бы, что б обмен и обновление конфигурации происходил простыми нажатиями на кнопки "Выгрузить" и "Загрузить". Для того, что б  происходило обновления необходим создать скрипт. Достаточно подробная инфа есть здесь http://coder1cv8.narod.ru/Publication2.html.
В езультате формируется скрипт следующего соержания

WScript.Sleep 5000
Set WshShell=CreateObject("WScript.Shell")
ReturnCode=WshShell.Run("""C:\Program Files\1cv81\bin\ /F D:\valeriy\Desktop\ObmenAzerSigorta\Genja /N Exchange /P Exchange /UpdateDBCfg",1,1)
If ReturnCode=0 Then
WshShell.Run """C:\Program Files\1cv81\bin\1CV8.EXE"" ENTERPRISE /F D:\valeriy\Desktop\ObmenAzerSigorta\Genja /N Exchange /P Exchange",1,0
End If
Set FSO=CreateObject("Scripting.FileSystemObject")
Set File=FSO.GetFile(WScript.ScriptFullName)
File.Delete

Однако при запуске выходит следующая ошибка:

Сценарий: D:\valerii\Desktop\exchange.vbs
Строка: 3
Символ: 1
Код: 80070002
Источник: (null)

Что может быть не так? Может каталог задаю не верно? Но вроде оставил только латинские символы, убрал все пробелы...
1 vicof
 
23.01.12
15:33
три кавычки
2 vicof
 
23.01.12
15:34
точней после bin\ кавычки закрывающие не стоят
3 val245
 
23.01.12
15:38
Спасибо. Исправил. Теперь иммет такой вид

WScript.Sleep 5000
Set WshShell=CreateObject("WScript.Shell")
ReturnCode=WshShell.Run("""C:\Program Files\1cv81\bin\"" /F D:\valeriy\Desktop\ObmenAzerSigorta\Genja /N Exchange /P Exchange /UpdateDBCfg",1,1)
If ReturnCode=0 Then
WshShell.Run """C:\Program Files\1cv81\bin\1CV8.EXE"" ENTERPRISE /F D:\valeriy\Desktop\ObmenAzerSigorta\Genja /N Exchange /P Exchange",1,0
End If
Set FSO=CreateObject("Scripting.FileSystemObject")
Set File=FSO.GetFile(WScript.ScriptFullName)
File.Delete

Но пишет снова ошибку

Строка: 3
Символ 1
Ошибка Не удается дождаться процесса.
Код: 80020009
Источник WshShell.Run

Извините, просто со скриптами не очень знаком...
4 vicof
 
23.01.12
15:45
права на папку есть?
5 val245
 
23.01.12
15:51
права есть
6 vicof
 
23.01.12
16:00
7 hhhh
 
23.01.12
16:05
попробуйте пробелы убрать после F N и P
8 Nikitos
 
23.01.12
16:05
может проблемы в "лишних" пробелах после /F, /N и /P?
9 Nikitos
 
23.01.12
16:09
http://www.script-coding.com/WSH/WshShell.html#3.4.

Вот тут еще рекомендую посмотреть
10 Nikitos
 
23.01.12
16:15
ReturnCode=WshShell.Run("""C:\Program Files\1cv81\bin\1cv8.exe"" /FD:\valeriy\Desktop\ObmenAzerSigorta\Genja /NExchange /PExchange /UpdateDBCfg",1,True)

у меня как-то так работает

А все просто ибо (0) забыл указать что он запускает, а именно:

1cv8.exe
11 vicof
 
23.01.12
16:39
(10) бгг)
12 val245
 
23.01.12
17:30
Да уж.. все класнно, запускает, но не обновляет...

WScript.Sleep 2000
Set WshShell=CreateObject("WScript.Shell")
ReturnCode=WshShell.Run("""C:\Program Files\1cv81\bin\1cv8.exe"" /FD:\valeriy\Desktop\ObmenAzerSigorta\Genja /N User /P 123 /UpdateDBCfg",1,True)
If ReturnCode=0 Then
WshShell.Run """C:\Program Files\1cv81\bin\1CV8.EXE"" ENTERPRISE /FD:\valeriy\Desktop\ObmenAzerSigorta\Genja /N User /P 123",1,0
End If
Set FSO=CreateObject("Scripting.FileSystemObject")
Set File=FSO.GetFile(WScript.ScriptFullName)
13 Nikitos
 
23.01.12
20:36
(12) Ну явно же написано даже в (0)
третья строка должна быть:
ReturnCode=WshShell.Run("""C:\Program Files\1cv81\bin\1cv8.exe"" CONFIG /FD:\valeriy\Desktop\ObmenAzerSigorta\Genja /N User /P 123 /UpdateDBCfg",1,True)


Внимательнее надо быть, товарищ
14 Serg_1960
 
23.01.12
23:04
Эпиграф: "Откройте для себя Америку"... типовая конфа, типовая функция:


// функция формирует часть бат файла (вызов обновления конфигурации)
Функция СформироватьЧастьВызоваОбновленияКонфигурации(Знач ИмяАдминистратораИБ = "", Знач ИмяФайлаИнформацииОбОшибках = "",
   Знач ИспользоватьФайлОбОшибкахСПустымИменем = Ложь)
   
   ИмяЛогинаАдминистратора = ?(ПустаяСтрока(ИмяАдминистратораИБ), "", СформироватьЛогинПодключенияКИБ(ИмяАдминистратораИБ));
   
   СтрокаОбъявленияФайлаСообщенийОбОшибках = "";
   СтрокаДляВыводаДанныхВФайл = "";
       
   Если НЕ ПустаяСтрока(ИмяФайлаИнформацииОбОшибках) ИЛИ ИспользоватьФайлОбОшибкахСПустымИменем Тогда
       
       // надо проверить наличие файла для обмена, есл его нет то создать его
       СтрокаИмениФайлаИнформацииОбОшибках = СокрЛП(ИмяФайлаИнформацииОбОшибках);
                           
       СтрокаОбъявленияФайлаСообщенийОбОшибках = "
           |REM Путь к файлу для ошибок и сообщений
           |set FileInformation=""" + СтрокаИмениФайлаИнформацииОбОшибках + """
           |
           |date /t >> %FileInformation%
           |time /t >> %FileInformation%
           |set DataBaseName>>%FileInformation%";
               
       СтрокаДляВыводаДанныхВФайл = "/Out%FileInformation% -NoTruncate";
                   
   КонецЕсли;    
   
    // основной текст
   ТекстФайлаПоУмолчанию = "
       |REM Логин администратора системы
       |set AdminUser=" + ИмяЛогинаАдминистратора + "
       |
       |" + СтрокаОбъявленияФайлаСообщенийОбОшибках + "
       |
       |rem Завершение работы пользователей
       |start """" /wait %v8exe% ENTERPRISE %DataBase% %AdminUser% /CЗавершитьРаботуПользователей    /UCПакетноеОбновлениеКонфигурацииИБ    " + СтрокаДляВыводаДанныхВФайл + " /DisableStartupMessages
       |
       |start """" /wait %v8exe% CONFIG     %DataBase% %AdminUser% /UpdateDBCfg /UCПакетноеОбновлениеКонфигурацииИБ    " + СтрокаДляВыводаДанныхВФайл + "
       |
       |rem Разрешение работы пользователей
       |start """" /wait %v8exe% ENTERPRISE %DataBase% %AdminUser% /CРазрешитьРаботуПользователей    /UCПакетноеОбновлениеКонфигурацииИБ    " + СтрокаДляВыводаДанныхВФайл + " /DisableStartupMessages
       |
       |rem Запуск самой программы
       |start """" %v8exe% ENTERPRISE %DataBase% %User%  /DisableStartupMessages";
       
   Возврат ТекстФайлаПоУмолчанию;
   
КонецФункции

PS: сорри, если "не в тему" :)
15 Нуф-Нуф
 
23.01.12
23:08
(14)+1
в типовой ут 10.3
16 Anton_2011
 
23.01.12
23:14
Абстрогируйтесь от 1С на мгнговение и сразу поймете как пользоваться отладчиком VBS. Отлаживал подобный скрипт как то. Пока не вник в первое свое предложение здесь(изначально не моё) - не заработало.
17 vicof
 
24.01.12
00:14
(16) "АбстрОгируйтесь от 1С на мГНГовение"
духов нанюхался? :)
18 val245
 
24.01.12
12:22
Спасибо всем большое Получилось. Вот окончаельный текст скрипта

WScript.Sleep 2000
Set WshShell=CreateObject("WScript.Shell")
ReturnCode=WshShell.Run("""C:\Program Files\1cv81\bin\1cv8.exe"" DESIGNER /FD:\valeriy\Desktop\ObmenAzerSigorta\Genja /N User /P 123 /UpdateDBCfg",1,True)
If ReturnCode=0 Then
WshShell.Run """C:\Program Files\1cv81\bin\1CV8.EXE"" ENTERPRISE /FD:\valeriy\Desktop\ObmenAzerSigorta\Genja /N User /P 123",1,0
End If
Set FSO=CreateObject("Scripting.FileSystemObject")
Set File=FSO.GetFile(WScript.ScriptFullName)
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.