|
Скрипт для обновления ИБ | ☑ | ||
---|---|---|---|---|
0
val245
25.11.11
✎
17:04
|
Имеется распределенная ИБ. Клиент хотел бы,чтоб загрузка происходил всего одним нажатием на кнопку. При этом если конфигурация была обновлена она должна обновляться автоматически. Вот обработака нажатия кнопки агрузки
Попытка Каталог = КаталогОбменаИнформацией; // Сформировать имя файла ИмяФайла = Каталог + ?(Прав(Каталог, 1) = "\","", "\") + "Message" + СокрЛП(КонтрУзел.Код) + "_" + СокрЛП(ПланыОбмена.Полный.ЭтотУзел().Код) + ".xml"; Файл = Новый Файл(ИмяФайла); Если Не Файл.Существует() Тогда Сообщить("Фал не найден!"); Возврат; КонецЕсли; // Создать и проинициализаровать объект ЧтениеХМL ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.ОткрытьФайл(Файл.Имя); // Создать объект ЧтениеСообшенияОбмена и начать чтение сообщения ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения(); ЧтениеСообщения.НачатьЧтение(ЧтениеXML); // Прочитать содержимое тела сообщения ПланыОбмена.ПрочитатьИзменения(ЧтениеСообщения); // Закончить чтение сообщения и чтение XML ЧтениеСообщения.ЗакончитьЧтение(); ЧтениеXML.Закрыть(); Исключение СтрОписания="Обновление может быть выполнено в режиме Конфигуратор."; Если Прав(ОписаниеОшибки(),СтрДлина(СтрОписания))=СтрОписания Тогда ОбновитьКонфигурацию(); // процедура обновления конфигурации Иначе Сообщить(ОписаниеОшибки()); КонецЕсли; КонецПопытки; Предупреждение("Чтение изменений завершено."); Ниже представлен текст процедуры ОбновитьКонфигурацию() Процедура ОбновитьКонфигурацию() ОтключитьОбработчикОжидания("АвтообменДанными"); // отключим наш обработчик, в котором происходит обмен сообщениями ПодключитьОбработчикОжидания("ОбновлениеКонфигурацииИБ",10); КонецПроцедуры Вот текст процедцры, создающий и запускающей скрипт (все происходит в онопольном режиме, информацию нашел по след. ссылке http://coder1cv8.narod.ru/Publication2.html) Процедура ОбновлениеКонфигурацииИБ() Экспорт МассивСоединений=ПолучитьСоединенияИнформационнойБазы(); Если МассивСоединений.Количество()>1 Тогда Возврат; // ждем дальше... КонецЕсли; СтрокаСоединения=СтрокаСоединенияИнформационнойБазы(); ПутьКСкрипту=КаталогВременныхФайлов()+"exchange.vbs"; Скрипт=Новый ЗаписьТекста(ПутьКСкрипту,КодировкаТекста.ANSI); Скрипт.ЗаписатьСтроку("WScript.Sleep 5000"); // на всякий случай Скрипт.ЗаписатьСтроку("Set WshShell=CreateObject(""WScript.Shell"")"); Команда=""""""+КаталогПрограммы()+"1CV8.EXE"""" CONFIG"+?(НСтр(СтрокаСоединения,"File")<>""," /F "+НСтр(СтрокаСоединения,"File")," /S "+НСтр(СтрокаСоединения,"Srvr")+"\"+НСтр(СтрокаСоединения,"Ref"))+" /N Exchange /P Exchange /UpdateDBCfg"; Скрипт.ЗаписатьСтроку("ReturnCode=WshShell.Run("""+Команда+""",1,1)"); Скрипт.ЗаписатьСтроку("If ReturnCode=0 Then"); // если обновились удачно, то пытаемся дочитать сообщение Команда=""""""+КаталогПрограммы()+"1CV8.EXE"""" ENTERPRISE"+?(НСтр(СтрокаСоединения,"File")<>""," /F "+НСтр(СтрокаСоединения,"File")," /S "+НСтр(СтрокаСоединения,"Srvr")+"\"+НСтр(СтрокаСоединения,"Ref"))+" /N Exchange /P Exchange"; Скрипт.ЗаписатьСтроку("WshShell.Run """+Команда+""",1,0"); Скрипт.ЗаписатьСтроку("End If"); Скрипт.ЗаписатьСтроку("Set FSO=CreateObject(""Scripting.FileSystemObject"")"); Скрипт.ЗаписатьСтроку("Set File=FSO.GetFile(WScript.ScriptFullName)"); Скрипт.ЗаписатьСтроку("File.Delete"); Скрипт.Закрыть(); ЗапуститьПриложение(ПутьКСкрипту); ЗавершитьРаботуСистемы(Ложь); КонецПроцедуры Происходит обмен. Идет загрузка, но конфигурация не обновляется. Может кто подскажет, в чем может быть проблема? |
|||
1
ПиН
25.11.11
✎
17:10
|
а потом будет ветка - не та конфа скриптом обновлиась и слетели все таблицы...
|
|||
2
val245
25.11.11
✎
17:11
|
то есть? обмен происходит, данные переходят, но сама конфа не обновляется.. в конфигураторе кнопка обновления активна.
|
|||
3
val245
25.11.11
✎
17:28
|
вверх
|
|||
4
val245
25.11.11
✎
17:38
|
---->
|
|||
5
val245
25.11.11
✎
17:57
|
выше
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |