Программный обмен. В режиме «Конфигуратор»
Программный обмен Все описанные выше действия по обмену данными в распределенной информационной базе можно выполнить программно. Мы создадим обработку, которая будет программно выполнять для выбранного узла все те действия, которые были рассмотрены в пред- ыдущем разделе. В режиме «Конфигуратор» В конфигураторе центральной базы создадим новый объект конфигу- рации Обработка с именем ОбменСОтделениями. На закладке Формы создадим основную форму обработки. В окне редактора форм на закладке Реквизиты добавим реквизит формы ПолеВводаОтделение с типом ПланОбменаСсылка. Отделения и перетащим его в окно элементов формы. В открывшейся палитре свойств этого поля зададим заголовок – Отделение, вид поля (Поле ввода) оставим по умолчанию (рис. 24. 27). Затем на закладке Команды поочередно создадим команды Соз- датьНачальныйОбраз, ЗаписатьИзменения и ПрочитатьИзменения. Нажмем кнопку открытия в строке Действие для каждой команды. Создадим клиентские обработчики этих команд в модуле формы, но заполнять их пока не будем, а перейдем на закладку Форма и пооче- редно перетащим эти команды в окно элементов формы. В результате форма обработки примет вид (рис. 24. 28).
Откроем палитру свойств кнопки СоздатьНачальныйОбраз и снимем флажок у свойства Доступность. Таким образом, при открытии обработки кнопка будет недоступной, пока не выбран узел плана обмена в поле ПолеВводаОтделение. Эта кнопка также будет недоступной в случае выбора предопре- деленного узла нашей информационной базы, то есть создание начального образа невозможно, если выбранный узел является предо- пределенным.
Чтобы обеспечить такое поведение кнопки, создадим в модуле формы обработки функцию, выполняющуюся на сервере и возвра- щающую истину, если переданный в функцию узел является предо- пределенным (листинг 24. 25). листинг 24. 25. Функция «ПредопределенныйУзел()» Затем в окне элементов формы выделим элемент ПолеВводаОтде- ление, вызовем его палитру свойств и создадим клиентский обра- ботчик события ОбработкаВыбора. Заполним обработчик следующим образом (листинг 24. 26). листинг 24. 26. Процедура «ПолеВводаОтделениеОбработкаВыбора()» В этой процедуре доступность кнопки СоздатьНачальныйОбраз определяется в зависимости от значения функции Предопределен- ныйУзел(), в которую передается ссылка на выбранный узел (Выбран- ноеЗначение). Теперь заполним обработчик команды СоздатьНачальныйОбраз следующим образом (листинг 24. 27). листинг 24. 27. Обработчик нажатия кнопки «Создать начальный образ» В начале процедуры мы вызываем диалог выбора каталога, в который будет помещен образ информационной базы, и затем вызываем процедуру СоздатьНачальныйОбразНаСервере(), исполняющуюся на сервере без контекста, в которой вызывается метод СоздатьНачаль- ныйОбраз() объекта ПланыОбменаМенеджер. Именно этот метод и позволяет нам создать образ для подчиненного узла распределенной информационной базы. В первом параметре метода передается ссылка на узел (реквизит формы ПолеВводаОт- деление), для которого мы хотим создать начальный образ, а во втором – строка соединения, указывающая информационную базу (листинг 24. 28). листинг 24. 28. Процедура «СоздатьНачальныйОбразНаСервере» Теперь создадим обработчик команды Записать изменения. Текст обработчика будет выглядеть следующим образом (листинг 24. 29). листинг 24. 29. Обработчик нажатия кнопки «Записать изменения» В начале процедуры мы вызываем диалог ввода имени файла, в который будут записаны изменения, и затем вызываем процедуру ЗаписатьИзмененияНаСервере(), исполняющуюся на сервере без контекста. В первом параметре метода передается ссылка на узел (реквизит формы ПолеВводаОтделение), для которого будет произво- диться запись изменений.
В этой процедуре мы создаем объект ЗаписьXML для работы с этим файлом. Затем создаем объект ЗаписьСообщенияОбмена, с помощью которого будем делать сообщение обмена. В методе НачатьЗапись(), во втором параметре, мы указываем, для какого узла обмена будет создаваться это сообщение. После этого мы выполняем метод ЗаписатьИзменения() объекта ПланыОбменаМенеджер, который и записывает изменения, предна- значенные для передачи в выбранный узел, в указанное сообщение обмена. В заключение мы, как обычно, заканчиваем запись сообщения обмена и закрываем файл (листинг 24. 30). листинг 24. 30. Процедура «ЗаписатьИзмененияНаСервере»
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|