Разработка планов обмена с отборами

#std701

Область применения: управляемое приложение, мобильное приложение.

Рекомендация (полезный совет)

1.1. Как правило, для синхронизации данных между различными конфигурациями и для организации распределенной информационной базы (РИБ) используется технология планов обмена. В этом случае часто возникает задача организации обмена не всеми данными информационной базы, а только частью данных. Например, данные могут быть отобраны для отправки в другие узлы в разрезе организаций, складов, подразделений и пр.

Для определения узлов-получателей для отправки данных следует использовать события ПередЗаписью и ПередУдалением объектов информационной базы, в которых предусмотреть логику регистрации изменений данных на узлах планов обмена (далее – логика регистрации).

При использовании в конфигурации подсистемы «Обмен данными» Библиотеки стандартных подсистем логика регистрации может быть задана декларативно в правилах регистрации объектов (ПРО), которые разрабатываются в конфигурации «Конвертация данных». Подробнее см. документацию к подсистеме «Обмен данными».

1.2. Кроме того, при проектировании логики регистрации необходимо учитывать следующие особенности:

При разработке планов обмена для синхронизации с другими программами (не РИБ, по правилам конвертации) с помощью подсистемы «Обмен данными» Библиотеки стандартных подсистем первые два пункта не требуется учитывать в правилах регистрации для ссылочных типов объектов (СправочникСсылка, ДокументСсыслка и пр.), поскольку регистрация ссылочных объектов выполняется отложенно отдельной операцией после загрузки всех данных из сообщения обмена.

2. С учетом перечисленных особенностей рекомендуется придерживаться следующих правил.

2.1. Обеспечить самодостаточность данных, участвующих в обмене. Таблицы данных (справочники, документы, регистры и пр.), участвующие в обмене, должны содержать все необходимые данные для выполнения логики регистрации. Логика регистрации не должна обращаться к полям связанных таблиц, она должна оперировать только данными основной таблицы, регистрацию изменений данных которой необходимо выполнить.

Пример:

См. также: Самодостаточность регистров, Разыменование ссылочных полей составного типа в языке запросов

Если требование самодостаточности данных нельзя поддержать по другим соображениям, то нужно рассмотреть следующие варианты.

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

Пример:

2.3. Регистрировать изменения связанных данных. Если в обмене участвуют несколько логически взаимосвязанных таблиц данных, то логика регистрации должна регистрировать к выгрузке данные всех взаимосвязанных таблиц вне зависимости от того, для какой таблицы данных выполняется логика регистрации. При этом логика регистрации не должна аварийно прерываться в случае, когда необходимые для логики регистрации данные отсутствуют.

Пример: