|
Скрипт обновления ИБ | ☑ | ||
---|---|---|---|---|
0
val245
29.11.11
✎
12:36
|
У нас распределенная информационная база. Конфигурация часто изменяется. Для сотрудников некоторых филиалов почему-то сложно запомнить, что нужно зайти в конфигуратор и обновить базу, поэтому они потребовали, чтоб загрузка и обновление осуществлялись нажатием лишь одно кнопки. В интернете нашел инфу по написанию скрипта http://coder1cv8.narod.ru/Publication2.html
Вот процедуры загрузки и обновления конфигурации Процедура АвтообменДанными() Экспорт Попытка Каталог = КаталогОбменаИнформацией; // Сформировать имя файла ИмяФайла = Каталог + ?(Прав(Каталог, 1) = "\","", "\") + "Message" + СокрЛП(КонтрУзел.Код) + "_" + СокрЛП(ПланыОбмена.Полный.ЭтотУзел().Код) + ".xml"; Файл = Новый Файл(ИмяФайла); Если Не Файл.Существует() Тогда Сообщить("Фал не найден!"); Возврат; КонецЕсли; // Создать и проинициализаровать объект ЧтениеХМL ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.ОткрытьФайл(Файл.Имя); // Создать объект ЧтениеСообшенияОбмена и начать чтение сообщения ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения(); ЧтениеСообщения.НачатьЧтение(ЧтениеXML); // Прочитать содержимое тела сообщения ПланыОбмена.ПрочитатьИзменения(ЧтениеСообщения); // Закончить чтение сообщения и чтение XML ЧтениеСообщения.ЗакончитьЧтение(); ЧтениеXML.Закрыть(); Исключение СтрОписания="Обновление может быть выполнено в режиме Конфигуратор."; Если Прав(ОписаниеОшибки(),СтрДлина(СтрОписания))=СтрОписания Тогда ОбновитьКонфигурацию(); // процедура обновления конфигурации Иначе Сообщить(ОписаниеОшибки()); КонецЕсли; КонецПопытки; Предупреждение("Чтение изменений завершено."); КонецПроцедуры Процедура ОбновитьКонфигурацию() ОтключитьОбработчикОжидания("АвтообменДанными"); // отключим наш обработчик, в котором происходит обмен сообщениями ПодключитьОбработчикОжидания("ОбновлениеКонфигурацииИБ",10); КонецПроцедуры А здесь процедура создающая и запускающая скрипт (запускается в монопольном режиме). Процедура ОбновлениеКонфигурацииИБ() Экспорт МассивСоединений=ПолучитьСоединенияИнформационнойБазы(); Если МассивСоединений.Количество()>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
Aleksey
29.11.11
✎
12:39
|
хм, а у меня в БП это сделано без изменения когда.
Строго говоря кусок автообновления есть в типовой, а вот как его запустить я так и не нашел (да и не искал). Так что сделал через передачу параметров |
|||
2
Aleksey
29.11.11
✎
12:41
|
и кстати, вместо анализа строки не проще ли
Если Не КонфигурацияИзменена() Тогда Возврат; КонецЕсли; Глобальный контекст.КонфигурацияИзменена (Global context.ConfigurationChanged) Глобальный контекст (Global context) КонфигурацияИзменена (ConfigurationChanged) Синтаксис: КонфигурацияИзменена() Возвращаемое значение: Тип: Булево. Истина - основная конфигурация отличается от конфигурации базы данных, Ложь - в противном случае. Описание: Определяет факт отличия основной конфигурации от конфигурации базы данных. Доступность: Сервер, толстый клиент, внешнее соединение. |
|||
3
Axel2009
29.11.11
✎
12:41
|
ну после того как завершилось, попробуй запустить свой батник вручную.
|
|||
4
Ткачев
29.11.11
✎
20:58
|
Стыдно создавать тему...
Помогите написать скрипт: Надо сделать чтобы скрипт запускал 1с, а когда 1с закроют архивировал базу, база файловая, 1 пользователь, 1с7.7 и 1с8.1 |
|||
5
Ткачев
30.11.11
✎
19:53
|
(4)Set WshShell = CreateObject("Wscript.Shell")
RerRet = WshShell.Run("c:\Progra~2\1cv82\8.2.14.540\bin\1cv8.exe", 1, True) dim d,m,y d = day(date()) if d < 10 then d = "0" & d end if m = month(date()) if m < 10 then m = "0" & m end if y = year(date()) h = Hour(Time()) if h < 10 then h = "0" & h end if Min = Minute(Time()) if Min < 10 then Min = "0" & Min end if S = Second(Time()) if S < 10 then S = "0" & S end if s = y & m & d & h & Min & S WshShell.Run("c:\Progra~1\7-Zip\7z.exe a D:\Archiv\" & s & ".7z d:\1C\CTO\1Cv8.1CD") |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |