Создание плана обмена Филиалы
Теперь займемся созданием "центра" любого алгоритма обмена данными, вокруг которого группируются прочие механизмы – плана обмена. Откроем конфигуратор и создадим новый объект конфигурации ПланОбмена с именем "Филиалы". На закладке "Данные" создадим реквизит плана обмена "Главный", имеющий тип Булево.
Этот реквизит понадобится нам для того, чтобы разрешать коллизии при обмене данными. Под коллизией понимается ситуация, когда один и тот же объект обмена данными был изменен одновременно в двух узлах. В этом случае мы будем анализировать значение реквизита "Главный" и принимать изменения только в том случае, если они сделаны в главном узле. В случае коллизии, изменения, произведенные не в главном узле, мы будем отвергать.
Теперь перейдем на закладку "Прочее" и определим состав объектов обмена данными (кнопка "Состав").
Установим отбор по подсистеме "УчетУслугИМатериалов" и включим в обмен все объекты, относящиеся к этой подсистеме. Проверьте, что константа "ПрефиксНумерации" не участвует в обмене, поскольку ее значение должно быть уникальным для каждой базы, участвующей в обмене.[403]
Состав данных обмена должен выглядеть следующим образом:
Теперь создадим с помощью конструктора основную форму узла, для того, чтобы описать в ней некоторые действия, которые должны выполняться при создании нового узла обмена.
Суть этих действий будет заключаться в том, что при создании нового узла обмена мы должны будем сформировать для него все необходимые записи регистрации изменений для всех объектов конфигурации, входящих в данный план обмена. Это будет, своего рода, начальная синхронизация узла обмена всеми данными обмена.
Прежде всего, опишем в модуле формы узла служебную переменную, которая будет хранить признак того, является ли записываемый узел новым, или нет:
Перем РегистрацияВНовыйУзел;
Затем создадим обработчик события формы "ПередЗаписью":
РегистрацияВНовыйУзел = ЭтоНовый();
КонецПроцедуры [404]
Если РегистрацияВНовыйУзел Тогда
//Регистрация изменений всех данных для узла
ПланыОбмена.ЗарегистрироватьИзменения(Ссылка);
КонецЕсли;
КонецПроцедуры
В заключение, создадим обработчик события формы "ПередОткрытием" для того, чтобы запретить установку реквизита "Главный" для предопределенного узла, соответствующего данной информационной базе:
Если Ссылка = ПланыОбмена.Филиалы.ЭтотУзел() Тогда
ЭлементыФормы.Главный.Доступность = Ложь;
КонецЕсли;
КонецПроцедуры
На этом создание плана обмена завершено, и мы можем перейти непосредственно к созданию процедур обмена данными. [405]