Создание процедуры записи данных
Сами процедуры записи и чтения данных обмена мы разместим в модуле объекта План обмена "Филиалы". Сначала создадим процедуру, которая используется нами при обмене данными – "ЗаписатьСообщениеСИзменениями". Порядок создания этой процедуры будет следующим: сначала мы сформируем имя файла, который будет содержать данные для обмена:
Процедура ЗаписатьСообщениеСИзменениями() Экспорт
Сообщить("------------ Выгрузка в узел" + Строка(ЭтотОбъект) + "------------");
Каталог = КаталогВременныхФайлов();
// Сформировать имя временного файла
ИмяФайла = Каталог +?(Прав(Каталог, 1) = "\","", "\") + "Message" +
СокрЛП(ПланыОбмена.Филиалы.ЭтотУзел().Код) + "_" + СокрЛП(Ссылка.Код) + ".xml";
Сообщить("------------ Конец выгрузки ------------");
КонецПроцедуры
Для упрощения примера, мы будем обмениваться сообщениями через каталог временных файлов. Имена сообщений стандартизованы и имеют вид "МеssаgеКодУзлаОтправителя_КодУзлаПолучателя.xml".
После этого обратимся к механизмам записи/чтения XML документов и создадим новый объект ЗаписьXML с помощью которого откроем новый XML файл для записи, запишем в него [407] объявление XML, и в конце процедуры завершим запись закроем файл:
Процедура ЗаписатьСообщениеСИзменениями() Экспорт
Сообщить("------------ Выгрузка в узел" + Строка(ЭтотОбъект) + "------------");
Каталог = КаталогВременныхФайлов();
// Сформировать имя временного файла
ИмяФайла = Каталог +?(Прав(Каталог, 1) = "\","", "\") + "Message" +
СокрЛП(ПланыОбмена.Филиалы.ЭтотУзел().Код) + "_" + СокрЛП(Ссылка.Код) + ".xml";
// Создать объект записи XML
//*** запись XML документов
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл(ИмяФайла);
ЗаписьXML.ЗаписатьОбъявлениеXML();
ЗаписьXML.Закрыть();
Сообщить("------------ Конец выгрузки ------------");
КонецПроцедуры
Сообщить("------------ Выгрузка в узел" + Строка(ЭтотОбъект) + "------------");
Каталог = КаталогВременныхФайлов();
// Сформировать имя временного файла
ИмяФайла = Каталог +?(Прав(Каталог, 1) = "\","", "\") + "Message" +
СокрЛП(ПланыОбмена.Филиалы.ЭтотУзел().Код) + "_" + СокрЛП(Ссылка.Код) + ".xml";
// Создать объект записи XML
//*** запись XML документов
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл(ИмяФайла);
ЗаписьXML.ЗаписатьОбъявлениеXML();
//*** инфраструктура сообщений
ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
ЗаписьСообщения.НачатьЗапись(ЗаписьХМL, Ссылка);
Сообщить(" Номер сообщения; " + ЗаписьСообщения.НомерСообщения); [408]
ЗаписьСообщения.ЗакончитьЗапись();
ЗаписьXML.Закрыть();
Сообщить("------------ Конец выгрузки ------------");
КонецПроцедуры
При формировании выборки мы передаем вторым параметром номер сообщения, которым эти данные будут переданы:
Сообщить("------------ Выгрузка в узел" + Строка(ЭтотОбъект) + "------------");
Каталог = КаталогВременныхФайлов();
// Сформировать имя временного файла
ИмяФайла = Каталог +?(Прав(Каталог, 1) = "\","", "\") + "Message" +
СокрЛП(ПланыОбмена.Филиалы.ЭтотУзел().Код) + "_" + СокрЛП(Ссылка.Код) + ".xml";
// Создать объект записи XML
//*** запись XML документов
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл(ИмяФайла);
ЗаписьXML.ЗаписатьОбъявлениеXML();
//*** инфраструктура сообщений
ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
ЗаписьСообщения.НачатьЗапись(ЗаписьXML, Ссылка);
Сообщить(" Номер сообщения; " + ЗаписьСообщения.НомерСообщения);
// Получить выборку измененных данных
//*** механизм регистрации изменений
ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(
ЗаписьСообщения.Получатель, ЗаписьСообщения.НомерСообщения);
ЗаписьСообщения.ЗакончитьЗапись();
ЗаписьXML.Закрыть();
Сообщить("------------ Конец выгрузки ------------");
КонецПроцедуры [409]
Сообщить("------------ Выгрузка в узел" + Строка(ЭтотОбъект) + "------------");
Каталог = КаталогВременныхФайлов();
// Сформировать имя временного файла
ИмяФайла = Каталог +?(Прав(Каталог, 1) = "\","", "\") + "Message" +
СокрЛП(ПланыОбмена.Филиалы.ЭтотУзел().Код) + "_" + СокрЛП(Ссылка.Код) + ".xml";
// Создать объект записи XML
//*** запись XML документов
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл(ИмяФайла);
ЗаписьXML.ЗаписатьОбъявлениеXML();
//*** инфраструктура сообщений
ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
ЗаписьСообщения.НачатьЗапись(ЗаписьXML, Ссылка);
Сообщить(" Номер сообщения; " + ЗаписьСообщения.НомерСообщения);
// Получить выборку измененных данных
//*** механизм регистрации изменений
ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(
ЗаписьСообщения.Получатель, ЗаписьСообщения.НомерСообщения);
Пока ВыборкаИзменений.Следующий() Цикл
// Записать данные в сообщение
//***XML-сериализация
ЗаписатьXML(ЗаписьXML, ВыборкаИзменений.Получить());
КонецЦикла;
ЗаписьСообщения.ЗакончитьЗапись();
ЗаписьXML.Закрыть();
Сообщить("------------ Конец выгрузки ------------");
КонецПроцедуры