Если план обмена используется в реализации механизма распределенных информационных баз, то в форме списка узлов данного плана обмена для непредопределенного узла, в командной панели, а также в меню Еще доступны две команды по записи и чтению сообщения обмена: Записать изменения, Прочитать изменения (рис. 3.10).
Рис. 3.10. Интерактивная запись и чтение изменений
При выборе команды (например, записи изменений) открывается диалог, в котором указывается количество элементов данных, обрабатываемых в одной транзакции, и устанавливается флажок Сжимать сообщение (XML-документ будет упакован в архив ZIP) – рис. 3.11.
Рис. 3.11. Диалог записи сообщения обмена
После нажатия кнопки Записать и сохранить в файл нужно указать имя файла сообщения. Если файл был упакован в архив ZIP, то при чтении сообщения обмена из этого файла архив будет распакован.
К недостатку данного метода следует отнести тот факт, что в данном случае нет возможности отследить окончание как процесса выгрузки, так и процесса загрузки данных из сообщения обмена.
Аналогичное действие можно реализовать и самостоятельно, используя для записи следующий фрагмент кода (листинг 3.20).
Листинг 3.20. Пример записи сообщения обмена
ЗаписьXML.ОткрытьФайл("c:\temp\out.xml");
ЗаписьXML.ЗаписатьОбъявлениеXML();
// Создать новое сообщение.
Узел = ПланыОбмена.Магазины.НайтиПоКоду("Магазин");
ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
ЗаписьСообщения.НачатьЗапись(ЗаписьXML, Узел);
// Записать изменения.
ПланыОбмена.ЗаписатьИзменения(ЗаписьСообщения, 1000);
ЗаписьСообщения.ЗакончитьЗапись();
ЗаписьXML.Закрыть();
Пример чтения сообщения обмена приведен в листинге 3.21.
Листинг 3.21. Пример чтения сообщения обмена
// Создать объект чтения XML.
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл("c:\temp\out.xml");
// Загрузить сообщение из файла.
ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения();
ЧтениеСообщения.НачатьЧтение(ЧтениеXML);
// Прочитать изменения.
ПланыОбмена.ПрочитатьИзменения(ЧтениеСообщения,1000);
ЧтениеСообщения.ЗакончитьЧтение();
ЧтениеXML.Закрыть();
Данный подход позволяет отследить момент окончания процесса загрузки/выгрузки и при необходимости выполнить какие-либо действия.
При необходимости произвести упаковку полученного файла сообщений (или извлечение сообщения из архива) можно воспользоваться функциональностью платформы по работе с ZIP-архивами, рассмотренной в главе «».