Имя: Пароль:
1C
1С v8
Подскажите с автоматическим обновлением
,
0 Rumpil
 
21.10.11
14:39
Добрый день. Есть обработка с двумя полями - "каталог сообщений обмена" и "узел, с которым обмениваемся" и две кнопки у обработки - "выгрузить данные" и "загрузить данные". Этой обработкой пользуются для обмена - цель ее - чтобы в периферийке при чтении файла с изменениями обновление конфигурации происходило автоматически без участия пользователя.

Однако при чтении файла с изменениями в периферийки данные и центрального офиса считываются, но обновление конфигурации не происходит и не считывается. Вот код, в чем может быть причина ?

Каталог = КаталогОбменаИнформацией;
   // Сформировать имя файла
   ИмяФайла = Каталог + ?(Прав(Каталог, 1) = "\","", "\") + "Message" +
   СокрЛП(КонтрУзел.Код) + "_" + СокрЛП(ПланыОбмена.Полный.ЭтотУзел().Код) + ".xml";
   Файл = Новый Файл(ИмяФайла);
   Если Не Файл.Существует() Тогда
       Сообщить("Файл не существует!");
       Возврат;
   КонецЕсли;
   
   Попытка
       //*** Чтение документов XML
       // Попытаться открыть файл
       ЧтениеXML = Новый ЧтениеXML;
       Попытка
           ЧтениеXML.ОткрытьФайл(ИмяФайла);
       Исключение
           Сообщить("Невозможно открыть файл обмена данными.");
           Возврат;
       КонецПопытки;
       
       Сообщить("------- Загрузка из " + Строка(ЭтотОбъект) + "-------");
       Сообщить(" - Считывается файл " + ИмяФайла);
       
       // Загрузить из найденного файла
       //*** Инфраструктура сообщений
       ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения();
       
       //читать заголовок сообщения обмена данными - файла XML
       ЧтениеСообщения.НачатьЧтение(ЧтениеXML);
       
       // Сообщение предназначено не для этого узла
       Если ЧтениеСообщения.Отправитель <> КонтрУзел Тогда
           ВызватьИсключение "Неверный узел";
       КонецЕсли;
       
       // Удаляем регистрацию изменений
       // для узла отправителя сообщения
       //*** служба регистрации изменений [420]
       ПланыОбмена.УдалитьРегистрациюИзменений(
       ЧтениеСообщения.Отправитель, ЧтениеСообщения.НомерПринятого);
       
       // Читаем данные из сообщения
       //*** XML-сериалшация
       Пока ВозможностьЧтенияXML(ЧтениеXML) Цикл
           // Читаем очередное значение
           Данные = ПрочитатьXML(ЧтениеXML);
           // Не переносим изменение полученное в главный из неглавного
           // если есть регистрация изменения
           Если Не ЧтениеСообщения.Отправитель.Код = "001" И
               ПланыОбмена.ИзменениеЗарегистрировано(ЧтениеСообщения.Отправитель, Данные) Тогда
               Сообщить("- Изменения отклонены");
               Продолжить;
           КонецЕсли;
           // Записать полученные данные
           Данные.ОбменДанными.Отправитель = ЧтениеСообщения.Отправитель;
           Данные.ОбменДанными.Загрузка = Истина;
           Данные.Записать();
       КонецЦикла;
       
       ЧтениеСообщения.ЗакончитьЧтение();
       ЧтениеXML.Закрыть();
       УдалитьФайлы(ИмяФайла);
   Исключение
       СтрОписания="Обновление может быть выполнено в режиме Конфигуратор.";
       Если Прав(ОписаниеОшибки(),СтрДлина(СтрОписания))=СтрОписания Тогда
           ОбновитьКонфигурацию();  // процедура обновления конфигурации  
       Иначе
           Сообщить(ОписаниеОшибки());
       КонецЕсли;
       
   КонецПопытки;
   
   Сообщить("------------ Конец загрузки ------------");
1 Rumpil
 
21.10.11
14:41
Конфа БИТ МСФО если что
2 Rumpil
 
21.10.11
14:41
но обмен происходит по самописным справочникам и документам
3 Segate
 
21.10.11
14:50
А что в плане обмена вообще есть? посмотри состав плана обмена твоего... должно быть вроде как включено все.
4 Rumpil
 
21.10.11
14:54
(3) Включено все, план обмен полный, единственное что понаставили фильтров по филиалам - чтобы в филиал выгружалась инфа только по данному филиалу и все. Хочу сказать если использовать стандартную схему обмена - обновление происходит конфы, но надо жать кнопокчки - Обновить, открывать конфигуратор и все такое в ручном режиме, а я пытаюсь это дело автоматизировать. Че то не катит пока
5 hhhh
 
21.10.11
14:58
(4) может в монопольный режим не получается войти.
6 Rumpil
 
21.10.11
15:01
(5) а как бы это проверить ?
7 Rumpil
 
21.10.11
15:18
(5) а как можно в монопольный режим входить кодом, че то не въеду
8 FIXXXL
 
21.10.11
15:30
СП:

Попытка
   УстановитьМонопольныйРежим(Истина);
Исключение
   Текст = "ru = ""С информационной базой работают другие пользователи.
       |В данный момент невозможно установить монопольный режим!"";
       |en = ""Other users are working with infobase.
       |It is impossible to set the Exclusive mode at the moment!""";
   Предупреждение(НСтр(Текст), 10);
КонецПопытки;
9 Rumpil
 
21.10.11
16:02
(8) не помогло
10 Rumpil
 
21.10.11
16:12
все вроде происхоит в монопольном режиме, но конфа не хочет обновляться и все тут
11 Rumpil
 
21.10.11
16:16
Ага, выяснилось что дело не доходит до скрипта даже, то есть он даже не стал обновлять конфу, т.к. не получил информации об изменении
12 FIXXXL
 
22.10.11
16:31
(9) перед этим пользователей выгнать бы ;)
батник думаю сам найдешь