Имя: Пароль:
1C
1С v8
Автообмен в UAT
0 Adgjj
 
24.11.11
14:35
Здравствуйте!
Есть внешняя обработка и батник для запуска автообмена в UAT.
Батник:
@set @x=0 /*    
@echo off        

TaskKill /F /IM 1cv8.exe

echo _____  1 ЗАПИСЬ ИЗ центральной базы
"C:\Program Files\1cv81\bin\1cv8.exe" ENTERPRISE /F C:\UAT8_les /N obmen /P obmen /DisableStartupMessages/Execute Obmen.epf


echo _____  2 ЧТЕНИЕ В периф базу  
echo _____  2.1 ИЗМЕНЕНИЕ КОНФ-ЦИИ
"C:\Program Files\1cv81\bin\1cv8.exe" ENTERPRISE /F C:\UAT8_les_KOT /N obmen /P obmen /DisableStartupMessages/Execute Obmen.epf
cscript //nologo /e:jscript "%~f0" 60000
TaskKill /F /IM 1cv8.exe

echo _____  2.2 ДОГРУЗКА ДАННЫХ ИЗ центр базы __ И __ 3 ЗАПИСЬ ИЗ периф. базы
start "" /wait "C:\Program Files\1cv81\bin\1cv8.exe" ENTERPRISE /F C:\UAT8_les_KOT /N obmen /P obmen /DisableStartupMessages/Execute Obmen.epf

echo _____  4 ЧТЕНИЕ В центральную базу
start "" /wait "C:\Program Files\1cv81\bin\1cv8.exe" ENTERPRISE /F C:\UAT8_les /N obmen /P obmen /DisableStartupMessages/Execute Obmen.epf

goto:eof */ if(isFinite(WScript.Arguments(0))) WScript.Sleep(WScript.Arguments(0))


Пункт 2.1 должен выполняться только когда изменена конф-я центральной базы (иначе чтение файла обмена, выгруженного из центральной базы, происходит 2 раза и выдается ошибка, связанная с номерами сообщений. Не представляю, как записать такое условие.
Кусок из внешней обработки (по периф. базе):
Иначе  
       СчиталиФайлЦентрБазы = 0;
       //ЧТЕНИЕ xml-файла, выгруженного из центр. базы
       Попытка
           Состояние("Читается файл в периферийную базу.");
           ЧтениеXML = Новый ЧтениеXML();
           ИмяФайлаСообщения = КаталогВременныхФайлов() + "Message_KOR_KOT.xml";
           ЧтениеXML.ОткрытьФайл(ИмяФайлаСообщения);
           ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения();
           ЧтениеСообщения.НачатьЧтение(ЧтениеXML,);
           ПланыОбмена.ПрочитатьИзменения(ЧтениеСообщения);
           ЧтениеСообщения.ЗакончитьЧтение();
           ЧтениеXML.Закрыть();
           СчиталиФайлЦентрБазы = 1;
           
           //ЗАПИСЬ xml-файла из периф. базы для загрузки в центральную
           если СчиталиФайлЦентрБазы = 1 тогда
               Состояние("Записывается файл из периферийной базы.");
               ЗаписьXML = Новый ЗаписьXML();
               ИмяФайлаСообщения = КаталогВременныхФайлов() + "Message_KOT_KOR.xml";  
               ЗаписьXML.ОткрытьФайл(ИмяФайлаСообщения);
               ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
               ЗаписьСообщения.НачатьЗапись(ЗаписьXML,УзелЗагрузки);
               ПланыОбмена.ЗаписатьИзменения(ЗаписьСообщения);
               ЗаписьСообщения.ЗакончитьЗапись();
               ЗаписьXML.Закрыть();
               ЗавершитьРаботуСистемы(Ложь); //периф. базы
           конецесли;
           
       Исключение
           СтрОписания="Обновление может быть выполнено в режиме Конфигуратор.";
           Если Прав(ОписаниеОшибки(),СтрДлина(СтрОписания))=СтрОписания Тогда
               ОбновитьКонфигурацию(); /// !!!                    
           Иначе
               Сообщить("ОБМЕН: Ошибка при получении данных обмена: " + ОписаниеОшибки(),СтатусСообщения.ОченьВажное);
           КонецЕсли;
       КонецПопытки;
   КонецЕсли;
1 Adgjj
 
24.11.11
14:44
попробую ввести в конф константу "СчиталиФайлЦентрБазы" и менять е значение своей внешней обработкой
2 Wobland
 
24.11.11
14:45
держи нас в курсе ;)
3 Wobland
 
24.11.11
14:46
блин, ты шутку про тасккилл приняла за чистую монету? я ж говорил
4 Adgjj
 
24.11.11
14:47
(3) не помню шутки
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс