Процедура ПрочитатьСообщениеСИзменениями()
Экспорт
Каталог
= КаталогВременныхФайлов();
//
Сформировать имя файла.
ИмяФайла = Каталог + ?(Прав(Каталог, 1) = "\",
"", "\") + "Сообщение_ОбменКонтрагентов_"
+ СокрЛП(Ссылка.Код) +
"-" +
СокрЛП(ПланыОбмена. ОбменКонтрагентов.ЭтотУзел().Код)
+ ".xml";
Файл
= Новый Файл(ИмяФайла);
Если
Не Файл.Существует() Тогда
Возврат;
КонецЕсли;
//
*** Чтение документов XML
//
Попытаться открыть файл.
ЧтениеXML = Новый ЧтениеXML;
Попытка
ЧтениеXML.ОткрытьФайл(ИмяФайла);
Исключение
Сообщение
= Новый СообщениеПользователю;
Сообщение.Текст = "Невозможно открыть файл обмена
данными.";
Сообщение.Сообщить();
Возврат;
КонецПопытки;
Сообщение
= Новый СообщениеПользователю;
Сообщение.Текст = "-------- Загрузка из " +
Строка(ЭтотОбъект) + " ------------";
Сообщение.Сообщить();
Сообщение
= Новый СообщениеПользователю;
Сообщение.Текст = " – Считывается файл " + ИмяФайла;
Сообщение.Сообщить();
//
Загрузить из найденного файла
//
*** Инфраструктура сообщений.
ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения();
//
Читать заголовок сообщения обмена данными – файла XML.
ЧтениеСообщения.НачатьЧтение(ЧтениеXML);
//
Сообщение предназначено не для этого узла.
Если
ЧтениеСообщения.Отправитель <> Ссылка Тогда
ВызватьИсключение "Неверный узел";
КонецЕсли;
//
Удаляем регистрацию изменений для узла отправителя сообщения
//
*** Служба регистрации изменений.
ПланыОбмена.УдалитьРегистрациюИзменений(ЧтениеСообщения.Отправитель,
ЧтениеСообщения.НомерПринятого);
//
Читаем данные из сообщения *** XML-сериализация.
Пока
ВозможностьЧтенияXML(ЧтениеXML)
Цикл
//
Читаем очередное значение.
Данные
= ПрочитатьXML(ЧтениеXML);
//
Не переносим изменение, полученное в главный из неглавного,
//
если есть регистрация изменения.
Если
Не ЧтениеСообщения.Отправитель.Главный
И
ПланыОбмена.ИзменениеЗарегистрировано(
ЧтениеСообщения.Отправитель, Данные) Тогда
Сообщение
= Новый СообщениеПользователю;
Сообщение.Текст = " – Изменения отклонены";
Сообщение.Сообщить();
Продолжить;
КонецЕсли;
//
Записать полученные данные.
Данные.ОбменДанными.Отправитель = ЧтениеСообщения.Отправитель;
Данные.ОбменДанными.Загрузка = Истина;
Данные.Записать();
КонецЦикла;
ЧтениеСообщения.ЗакончитьЧтение();
ЧтениеXML.Закрыть();
УдалитьФайлы(ИмяФайла);
Сообщение
= Новый СообщениеПользователю;
Сообщение.Текст = "-------- Конец загрузки
------------";
Сообщение.Сообщить();
КонецПроцедуры
Процедура ЗаписатьСообщениеСИзменениями()
Экспорт
Сообщение
= Новый СообщениеПользователю;
Сообщение.Текст = "-------- Выгрузка в узел " +
Строка(ЭтотОбъект) + " ------------";
Сообщение.Сообщить();
Каталог
= КаталогВременныхФайлов();
//
Сформировать имя временного файла.
ИмяФайла = Каталог + ?(Прав(Каталог, 1) = "\","",
"\") + "Сообщение_ОбменКонтрагентов_"
+
СокрЛП(ПланыОбмена. ОбменКонтрагентов.ЭтотУзел().Код)
+ "-" + СокрЛП(Ссылка.Код)
+ ".xml";
//
Создать объект записи XML
//
*** ЗаписьXML-документов
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл(ИмяФайла);
ЗаписьXML.ЗаписатьОбъявлениеXML();
//
*** Инфраструктура сообщений
ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
ЗаписьСообщения.НачатьЗапись(ЗаписьXML,
Ссылка);
Сообщение
= Новый СообщениеПользователю;
Сообщение.Текст = " Номер сообщения: " + ЗаписьСообщения.НомерСообщения;
Сообщение.Сообщить();
//
Получить выборку измененных данных
//
*** Механизм регистрации изменений
ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(ЗаписьСообщения.
Получатель,ЗаписьСообщения.НомерСообщения);
Пока
ВыборкаИзменений.Следующий() Цикл
//
Записать данные в сообщение *** XML-сериализация.
ЗаписатьXML(ЗаписьXML, ВыборкаИзменений.Получить());
КонецЦикла;
ЗаписьСообщения.ЗакончитьЗапись();
ЗаписьXML.Закрыть();
Сообщение
= Новый СообщениеПользователю;
Сообщение.Текст = "-------- Конец выгрузки
------------";
Сообщение.Сообщить();
КонецПроцедуры
|