В начало
Обмен данными справочника Сотрудники Цель – обмен
данными справочника «Сотрудники» между разными конфигурациями через план
обмена. Первая/главная
база выполнена на обычных формах, вторая – филиалы и сделана в интерфейсе
«Такси». Далее показана структура справочника
«Сотрудники» в конфигураторе на дереве объектов. Справочник помимо
основных/стандартных реквизитов имеет реквизиты: Пол (с типом перечисление), ДатаРождения (с типом дата) и Должность (ссылочного типа из
справочника Должности). Рис.
Структура справочника «Сотрудники» Затем нам понадобится сам план
обмена, назовем который «ОбменСотрудников». Рис. План
обмена «ОбменСотрудников» в дереве метаданных В модулях плана обмена «ОбменСотрудников» необходимо разместить несколько процедур
и функций. Начнем с модуля объекта главной конфигурации, которая выполнена на
обычных формах. В данном модуле размещаем две процедуры: ПрочитатьСообщениеСИзменениями
и ЗаписатьСообщениеСИзменениями. В дальнейшем будем
их вызывать обработкой. Листинг.
Модуль объекта плана обмена «ОбменСотрудников» в
главной/центральной базе
Далее переходим в раздел «Формы» и
создаем две формы: форму узла и форму списка. В модуле ФормыУзла
размещаем процедуру для доступности реквизита «Главный». Листинг.
Модуль формы узла плана обмена центральной базы
Затем добавляем кнопку на форму
списка и код в модуль формы списка плана обмена «ОбменСотрудников». Рис.
Внешний вид формы списка плана обмена «ОбменСотрудников»,
центральная
база, обычная форма Листинг.
Модуль формы списка плана обмена центральной базы
Потом переходим к созданию обработки
«ОбменДаннымиСотрудников». Рис.
Структура и форма обработки «ОбменДаннымиСотрудников» В модуле формы обработки размещаем
код, обрабатывающий нажатие кнопки «ВыполнитьОбмен». Листинг.
Модуль формы обработки «Обмен данными сотрудников»
Итак, в центральной базе, в
конфигураторе было все подготовлено. Можно запустить режим «1С: Предприятие» и
настроить план обмена. Во первых нужно настроить предопределенный узел (тот,
что с зеленой точкой в правом нижнем углу), а именно вписать Код и
Наименование. Во вторых нужно создать еще один узел для базы «Филиал», для
которого также вписать Код и Наименование. Можно также нажать кнопку
«Зарегистрировать изменения». Рис. План
обмена «ОбменСотрудников» в режиме «1С: Предприятие» После этого запустить обработку
«Обмен данными сотрудников» и нажать кнопку «ВыполнитьОбмен». Рис.
Обработка «Обмен данными сотрудников» При этом в каталоге временных файлов
(«C:\Users\Guest\AppData\Local\Temp») будет создан
файл типа «Сообщение_ОбменСотрудников_ЦБ-ФЛ.xml»,
который содержит данные для обмена между конфигурациями центральной базы и базы
филиала. Данный файл можно просмотреть в любом браузере или текстовом
редакторе. Рис.
Фрагмент файла «Сообщение_ОбменСотрудников_ЦБ-ФЛ.xml» Теперь переходим к настройке базы
филиала в конфигураторе. Данная база уже содержит справочник «Сотрудники» с
идентичной структурой. Для ускорения процесса можно
скопировать план обмена «ОбменСотрудников» из
центральной базы, правда, придется переделать формы узла и списка на
управляемые. Процедуры в данном модуле полностью аналогичны процедурам из
главной базы, а именно это: ПрочитатьСообщениеСИзменениями
и ЗаписатьСообщениеСИзменениями. Рис.
Процедуры в модуле объекта плана обмена в базе филиала Затем переходим к настройке формы
узла плана обмена базы филиала. Форма показана далее. Рис. Форма
узла плана обмена «ОбменСотрудников» Потом
добавляем в модуль ФормыУзла плана обмена процедуру «ПриСозданииНаСервере», данную процедуру предваряет
соответствующая директива «&НаСервере». Листинг.
Модуль формы узла плана обмена в базе «Филиал»
Затем переходим к настройке формы
списка плана обмена в базе «Филиал», а именно добавляем команду «ЗарегистрироватьИзменения» и перетаскиваем ее влево,
создавая таким образом кнопку, а кроме того создаем обработчик нажатия. Рис. Форма
списка плана обмена «ОбменСотрудников» в
конфигураторе Далее добавляем процедуры в модуль
формы списка. Поскольку это управляемая форма, то вдумчиво разбиваем процедуры
на две части: клиентскую и серверверную. Листинг.
Модуль формы списка плана обмена в базе «Филиал»
Обработка для обмена «ОбменДаннымиСотрудников» также будет немного отличаться от
той, что в главной базе. Здесь добавляем команду, перетаскиваем ее налево, так
создается кнопка, после этого добавляем обработчик ее нажатия, который будет
расположен в модуле формы. Рис. Форма
обработки «ОбменДаннымиСотрудников» в базе «Филиал» Ниже показан листинг модуля формы
обработки «Обмен данными сотрудников». Обработчик разбит на две части согласно
концепции управляемого приложения. Листинг.
Модуль формы обработки «ОбменДаннымиСотрудников»
Подготовительная часть завершена.
Обновляем конфу, запускаем режим отладки, настраиваем
план обмена «ОбменСотрудников» базы «Филиал».
Переименовываем предопределенный узел (с зеленой точкой внизу) на узел с кодом
«ФЛ», добавляем другой узел «ЦБ», что означает «Центральная база», нажимаем
кнопочку «Зарегистрировать изменения». Рис. План
обмена «Обмен сотрудников» в базе филиала организации Затем запускаем обработку «Обмен
данными сотрудников», в которой нажимаем кнопку «Выполнить обмен». Будет создан
файл формата XML в каталоге временных файлов «C:\Users\Guest\AppData\Local\Temp» с именем «Сообщение_ОбменСотрудников_ФЛ-ЦБ.xml». Одновременно будут прочитан
файл «Сообщение_ОбменСотрудников_ЦБ-ФЛ.xml» и внесены изменения в
справочник «Сотрудники». Первый файл «…ФЛ-ЦБ.xml» -
это данные из филиала в центральную базу, второй, с именем «…ЦБ- ФЛ.xml» содержит данные из центральной базы в базу филиала.
Для полноты обмена нужно вернуться в центральную базу и там еще раз в обработке
«ОбменДаннымиСотрудников» нажать кнопку «Выполнить
обмен». Далее открываем справочник
«Сотрудники» в двух базах, всячески экспериментируем (удаляем, помечаем,
добавляем элементы справочника) и потом сравниваем данные после обмена. Все
вроде норм. Ниже приведен устаканенный справочник «Сотрудники». Рис.
Справочник «Сотрудники»: в
центральной базе (слева) и базе филиала (справа) Таким образом, мы автоматизировали
обмен данными справочника «Сотрудники» между двумя базами. |
|||||||||