Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Процедуры обмена данными. В режиме «Конфигуратор». Процедура записи данных




Процедуры обмена данными

В режиме «Конфигуратор»

Для инициализации обмена данными мы используем обработку. Добавим новый объект конфигурации Обработка с именем

ОбменДанными. На закладке Формы создадим основную форму обработки. В окне редактора форм на закладке Команды создадим команду формы ВыполнитьОбмен. В строке Действие нажмем кнопку открытия.

На запрос конфигуратора о типе обработчика команды выберем вариант Создать на клиенте и процедуру на сервере без контекста. В модуле формы будут созданы шаблоны двух процедур: клиент- ской процедуры ВыполнитьОбмен() и серверной внеконтекстной процедуры ВыполнитьОбменНаСервере(), которая вызывается из клиентской процедуры.

Процедура ВыполнитьОбмен() автоматически будет заполнена следующим образом (листинг 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 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...