Процедура ПрочитатьСообщениеСИзменениями()
Экспорт
Каталог
= КаталогВременныхФайлов();
//
Сформировать имя файла.
ИмяФайла
= Каталог + ?(Прав(Каталог, 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.Закрыть();
Сообщение
= Новый СообщениеПользователю;
Сообщение.Текст
= "-------- Конец выгрузки ------------";
Сообщение.Сообщить();
КонецПроцедуры
|