Имя: Пароль:
1C
 
Автообмен.РИБ.Обновление конфигурации у подчиненной базы.

0 Vika64
 
18.05.07
10:17
Настроила автообмен.Планировщик запускает программу после работы.вот код:
"C:\Program Files\1cv8\bin\1cv8.exe" config /F "E:\BUH" /n "ADMIN" /p "ADMIN" /DepotUpdateCfg /DepotF "E:\Work\Hranil" /DepotN "ADMIN" /DepotP "ADMIN" /UpdateDBCfg
  обновляется конфигурация главного узла из хранилища и обновляется база.Затем:
"C:\Program Files\1cv8\bin\1cv8.exe" enterprise /F "E:\BUH" /n "ADMIN" /p "ADMIN"
"C:\Program Files\1cv8\bin\1cv8.exe" enterprise /F "E:\TABAK" /n "ADMIN" /p "ADMIN"
В главном узле запускается под админом обработка автообмена и записывются измененные данные и конфигурация,затем запускается то же самое в подчиненной базе и вот в чем проблема : когда есть изменения в конфигурации, пишется предупреждение, что получена измененная конфигурация и надо обновить базу и это окошко не закрывается.Так вот КАК ЕГО ЗАКРЫТЬ ПРОГРАММНО?????потому как дальше надо обновить базу.
1 Vika64
 
18.05.07
10:31
ау, кто-нить!!
2 ASV
 
18.05.07
10:32
//читаем примерно так
Попытка
ПланыОбмена.ПрочитатьИзменения(ЧтениеСообщения, СтруктураНастроекОбменаДанными.ДанныеНастройки.КоличествоЭлементовВТранзакцииНаЗагрузкуДанных);
ЧтениеСообщения.ЗакончитьЧтение();
ЧтениеXML.Закрыть();
Исключение
здесь делаем батник с обновлением  и запускаем его
3 Vika64
 
18.05.07
11:24
спасибо, попробую
4 coder1cv8
 
18.05.07
11:33
Попытка
   ЧтениеXML=Новый ЧтениеXML;
   ЧтениеXML.ОткрытьФайл(ИмяСообщения);
   ... бла-бла...
Исключение
   // автоматическое обновление конфигурации БД запускаем только при автообмене
   СтрОписания="Обновление может быть выполнено в режиме Конфигуратор.";
   Если РольДоступна("Автообмен") И Прав(ОписаниеОшибки(),СтрДлина(СтрОписания))=СтрОписания Тогда
   Сообщить("Получены изменения конфигурации. Попытка обновления конфигурации БД...",СтатусСообщения.Внимание);
   ОбновитьКонфигурацию();
   Иначе
   Сообщить("Ошибка при записи изменений. "+ОписаниеОшибки(),СтатусСообщения.ОченьВажное);
   КонецЕсли;

Процедура ОбновитьКонфигурацию()
   КаталогИБ=ПолучитьКаталогИБ();
   ПутьКСкрипту=КаталогВременныхФайлов()+"exchange.vbs";
   Скрипт=Новый ЗаписьТекста(ПутьКСкрипту,КодировкаТекста.ANSI);
   Скрипт.ЗаписатьСтроку("WScript.Sleep 5000");  //на всякий случай )
   Скрипт.ЗаписатьСтроку("Set WshShell=CreateObject(""WScript.Shell"")");
   Команда=""""""+КаталогПрограммы()+"1CV8.EXE"""" CONFIG /F "+КаталогИБ+" /N Exchange /P Exchange /UpdateDBCfg";
   Скрипт.ЗаписатьСтроку("ReturnCode=WshShell.Run("""+Команда+""",1,1)");
   Скрипт.ЗаписатьСтроку("If ReturnCode=0 Then");    // если обновились удачно, то пытаемся дочитать сообщение
   Команда=""""""+КаталогПрограммы()+"1CV8.EXE"""" ENTERPRISE /F "+КаталогИБ+" /N Exchange /P Exchange";
   Скрипт.ЗаписатьСтроку("WshShell.Run """+Команда+""",1,0");
   Скрипт.ЗаписатьСтроку("End If");
   Скрипт.ЗаписатьСтроку("Set FSO=CreateObject(""Scripting.FileSystemObject"")");
   Скрипт.ЗаписатьСтроку("Set File=FSO.GetFile(WScript.ScriptFullName)");
   Скрипт.ЗаписатьСтроку("File.Delete");
   Скрипт.Закрыть();
   ЗапуститьПриложение(ПутьКСкрипту);
   ЗавершитьРаботуСистемы(Ложь);
КонецПроцедуры