Процедуры обмена данными. В режиме «Конфигуратор». Процедура записи данных
Процедуры обмена данными В режиме «Конфигуратор» Для инициализации обмена данными мы используем обработку. Добавим новый объект конфигурации Обработка с именем ОбменДанными. На закладке Формы создадим основную форму обработки. В окне редактора форм на закладке Команды создадим команду формы ВыполнитьОбмен. В строке Действие нажмем кнопку открытия. На запрос конфигуратора о типе обработчика команды выберем вариант Создать на клиенте и процедуру на сервере без контекста. В модуле формы будут созданы шаблоны двух процедур: клиент- ской процедуры ВыполнитьОбмен() и серверной внеконтекстной процедуры ВыполнитьОбменНаСервере(), которая вызывается из клиентской процедуры. Процедура ВыполнитьОбмен() автоматически будет заполнена следующим образом (листинг 24. 9). листинг 24. 9. Обработчик команды «ВыполнитьОбмен»
В процедуру ВыполнитьОбменНаСервере() поместим следующий текст (листинг 24. 10). листинг 24. 10. Создание процедуры «ВыполнитьОбменНаСервере»
Алгоритм работы этой процедуры заключается в следующем: в цикле мы перебираем узлы, которые содержатся в плане обмена Филиалы, и для всех узлов, кроме себя самого, производим сначала чтение сообщений, поступивших из других узлов обмена (процедуру Прочи- татьСообщенияСИзменениями мы создадим позднее). Затем мы формируем для них сообщения, предназначенные для передачи и содержащие измененные данные для этого узла (процедура ЗаписатьСообщениеСИзменениями также будет создана нами позднее). В заключение перетащим команду ВыполнитьОбмен из окна команд в окно элементов формы. В результате форма обработки будет выглядеть следующим образом (рис. 24. 6).
Процедура записи данных Сами процедуры записи и чтения данных обмена мы разместим в модуле объекта План обмена Филиалы. В окне редактирования этого объекта конфигурации перейдем на закладку Прочее и откроем модуль объекта. Сначала создадим процедуру, которая используется нами при обмене данными, – Запи- сатьСообщениеСИзменениями. Создавать ее мы будет постепенно. Сначала мы сформируем имя файла, который будет содержать данные для обмена, и сообщим пользователю о начале и окончании выгрузки данных в узел (листинг 24. 11). листинг 24. 11. Формирование имени файла в процедуре записи данных
Для упрощения примера мы будем обмениваться сообщениями через каталог временных файлов. Имена сообщений стандартизованы и имеют вид MessageКодУзлаОтправителя_КодУзлаПолучателя. xml. После этого обратимся к механизмам записи/чтения XML-доку- ментов и создадим новый объект – ЗаписьXML. С помощью него откроем новый XML-файл для записи, запишем в него объявление XML. В конце процедуры завершим запись XML и закроем файл (листинг 24. 12). листинг 24. 12. Создание объекта записи XML в процедуре записи данных
Теперь мы обратимся к механизмам инфраструктуры сообщений и создадим новый объект ЗаписьСообщенияОбмена, метод которого НачатьЗапись() позволяет, кроме всего прочего, создать очередной номер сообщения и записать заголовок сообщения в XML. В конце процедуры мы опять же закончим запись сообщения (листинг 24. 13).
листинг 24. 13. Создание очередного номера сообщения и запись заголовка сообщения в XML Поскольку мы находимся в модуле объекта, то мы используем стан- дартный реквизит Ссылка в качестве ссылки на объект План обмена Филиалы. После этого, чтобы получить данные, которые необходимо сохранить в этом файле, мы обратимся к механизму регистрации изменений и получим выборку из записей регистрации изменений, предназна- ченных данному узлу. При формировании выборки мы передаем вторым параметром номер сообщения (листинг 24. 14).
листинг 24. 14. Получение выборки из записей регистрации изменений, предназначенных данному узлу
Сообщение = Новый СообщениеПользователю; Сообщение. Текст = " -------- Выгрузка в узел " + Строка(ЭтотОбъект) + " --------- "; Сообщение. Сообщить(); Каталог = КаталогВременныхФайлов(); // Сформировать имя временного файла. ИмяФайла = Каталог +? (Прав(Каталог, 1) = " \", " ", " \" ) + " Message" + СокрЛП(ПланыОбмена. Филиалы. ЭтотУзел(). Код) + " _" + СокрЛП(Ссылка. Код) + ". xml"; // Создать объект записи XML // *** ЗаписьXML-документов. ЗаписьXML = Новый ЗаписьXML; ЗаписьXML. ОткрытьФайл(ИмяФайла); ЗаписьXML. ЗаписатьОбъявлениеXML(); // *** Инфраструктура сообщений. ЗаписьСообщения = ПланыОбмена. СоздатьЗаписьСообщения(); ЗаписьСообщения. НачатьЗапись(ЗаписьXML, Ссылка); Сообщение = Новый СообщениеПользователю; Сообщение. Текст = " Номер сообщения: " + ЗаписьСообщения. НомерСообщения; Сообщение. Сообщить();
Воспользуйтесь поиском по сайту: ![]() ©2015 - 2025 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|