Книга: Технологии интеграции "1С:Предприятия 8.3""
Назад: Использование возможностей работы с XML-документами
Дальше: Стандартные процедуры обмена

Пример реализации универсального обмена

В этом примере мы не только реализуем обмен данными с помощью универсальных механизмов обмена стандартным образом, но и покажем, как организовать обмен данными с различной структурой, как реализовать стратегию распространения данных по конкретным узлам, покажем возможность разрешения коллизий, когда одни и те же данные изменяются одновременно в нескольких узлах обмена. Кроме того, рассмотрим возможность ручной регистрации изменений данных.

подробнее

Подробнее познакомиться с реализацией универсального обмена данными можно в демонстрационной конфигурации «Примеры обмена», которая прилагается к книге.

В нашей демонстрационной конфигурации существует план обмена УдаленныеСклады. У данного плана обмена имеются следующие реквизиты:

Состав плана обмена представлен на рисунке (рис. 3.24).

Рис. 3.24. Состав плана обмена «УдаленныеСклады»

Состав плана обмена включает все объекты конфигурации за исключением константы ПрефиксНомеров, которая служит для установки префиксов кодов/номеров объектов, созданных в каждом узле обмена. Подробнее об этом рассказывается в разделе «».

Итак, сначала мы создадим форму узла (форму объекта) нашего плана обмена.

При создании нового узла обмена нам нужно указать, какой узел обмена будет главным для текущей информационной базы. Забегая вперед, поясним, что это свойство понадобится нам для разрешения коллизий при получении данных. Кроме того, нам нужно выполнить для узла своего рода начальную синхронизацию всех данных обмена.

Для этого добавим в форму команду ЗарегистрироватьИзменения и перетащим ее в окно элементов формы. Однако кнопка, связанная с этой командой, а также возможность установки флажка Главный должны быть недоступны для предопределенного узла, соответствующего данной информационной базе.

Для этого создадим обработчик события формы ПриСозданииНаСервере и заполним его следующим образом (листинг 3.50).

Листинг 3.50. Обработчик события формы «ПриСозданииНаСервере»

&НаСервере

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

 

Если Объект.ЭтотУзел = Истина Тогда

Элементы.Главный.Доступность = Ложь;

Элементы.ФормаЗарегистрироватьИзменения = Ложь;

КонецЕсли;

 

КонецПроцедуры

В этом обработчике для определения предопределенного узла мы используем свойство узла плана обмена ЭтотУзел. Если оно принимает значение Истина, значит, это узел, соответствующий нашей информационной базе.

Создадим обработчик команды ЗарегистрироватьИзменения, из которого будет вызываться процедура ЗарегистрироватьИзмененияНаСервере(). В эту процедуру будет передаваться ссылка на узел обмена, для которого нужно зарегистрировать изменения (листинг 3.51).

Листинг 3.51. Обработчик команды «ЗарегистрироватьИзменения»

&НаКлиенте

Процедура ЗарегистрироватьИзменения(Команда)

 

ЗарегистрироватьИзмененияНаСервере(Объект.Ссылка);

 

КонецПроцедуры

Процедуру ЗарегистрироватьИзмененияНаСервере() заполним следующим образом (листинг 3.52).

Листинг 3.52. Процедура «ЗарегистрироватьИзмененияНаСервере»

&НаСервереБезКонтекста

Процедура ЗарегистрироватьИзмененияНаСервере(Узел)

 

ПланыОбмена.ЗарегистрироватьИзменения(Узел);

 

КонецПроцедуры

В этой процедуре мы обращаемся к механизму регистрации изменений, вызывая метод менеджера планов обмена – ЗарегистрироватьИзменения(). В этот метод передается ссылка на текущий узел плана обмена. В результате выполнения этой процедуры в информационной базе будут созданы записи регистрации изменений, предназначенные для пересылки в указанный узел, для всех объектов обмена, входящих в состав нашего плана обмена.

Назад: Использование возможностей работы с XML-документами
Дальше: Стандартные процедуры обмена