Как ограничить состав выгружаемых данных при синхронизации через Конвертацию данных 3.0?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия IT и автоматизация бизнеса
← На главную

При настройке типовой синхронизации между конфигурациями «Бухгалтерия предприятия 3.0» (БП 3) и «Управление торговлей 11» (УТ 11) на платформе 1С:Предприятие часто возникает задача жесткого ограничения состава передаваемых данных. Например, когда из одной информационной базы в другую требуется переносить исключительно базовые справочники (такие как Организации и Контрагенты), полностью исключив миграцию документов, других справочников и регистров.

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

Разберем три основных подхода к ограничению состава выгружаемых данных, а также решим критическую проблему частичной выгрузки объектов (когда справочники переносятся в виде «битых» или незаполненных ссылок).

Способ 1. Использование правил регистрации объектов (ПРО) в Конвертации данных 3.0

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

В отличие от устаревших подходов, где для редактирования правил регистрации требовалось обязательно использовать конфигурацию Конвертация данных 2.1, современные версии Конвертации данных 3.0 (начиная с редакции 3.0.5 и выше) содержат полноценный встроенный инструмент для работы с ПРО. Нам больше не нужно переносить метаданные в КД 2.1.

Рассмотрим пошагово процесс изменения правил регистрации:

  1. Выгрузка типовых правил из информационной базы: Перейдем в настройки синхронизации данных, выберем нужный узел обмена и выгрузим комплект правил (включающий правила регистрации) во внешний XML-файл.
  2. Загрузка ПРО в Конвертацию данных 3.0: Откроем конфигурацию «Конвертация данных 3.0», перейдем в раздел настройки правил регистрации и импортируем наш XML-файл.
  3. Отключение регистрации для ненужных объектов: Нам необходимо пройти по списку всех объектов, входящих в состав плана обмена СинхронизацияДанныхЧерезУниверсальныйФормат. Для всех объектов, кроме справочников Организации и Контрагенты, установим режим выгрузки «Никогда» или пропишем условие отказа.

Для реализации программного отказа в регистрации на уровне ПРО можно использовать стандартный обработчик ПередОбработкой или ПриРегистрации, где достаточно написать следующее условие:

Отказ = Истина;

После завершения настройки правил в КД 3.0 сохраним изменения, выгрузим обновленный файл ПРО и загрузим его обратно в настройки синхронизации в БП 3 и УТ 11. Теперь система будет автоматически игнорировать любые изменения по всем объектам, кроме двух необходимых справочников.

Способ 2. Ограничение состава выгрузки стандартными средствами БСП в режиме предприятия

Если мы не хотим вносить изменения в правила регистрации на уровне XML-файлов, проанализируем возможности Библиотеки стандартных подсистем (БСП) непосредственно в пользовательском режиме «1С:Предприятие».

Шаг 1. Настройка интерактивных фильтров на узле обмена
В параметрах синхронизации данных (Администрирование — Синхронизация данных — Настройки синхронизации) откроем состав отправляемых данных для нашего узла. Для многих типовых планов обмена реализована возможность установки отборов по умолчанию (например, отправка документов только по определенным организациям или начиная с указанной даты). Это позволяет частично отсечь лишний массив информации. Для расширения возможностей фильтрации можно использовать инструмент для произвольного отбора документов по реквизитам при обмене через EnterpriseData.

Шаг 2. Работа с формой «Регистрация изменений для обмена»
В этой форме мы можем визуально контролировать, какие объекты подготовлены к отправке. Выполним следующие действия:

  1. Откроем обработку регистрации изменений на узле обмена.
  2. Выделим разделы с нежелательными к отправке объектами (документами, лишними справочниками).
  3. Нажмем кнопку «Отменить регистрацию» для выбранных типов объектов или конкретных элементов.

Важное предупреждение: Данный метод является полумерами. Как только пользователь создаст новый документ или изменит существующий в информационной базе, этот объект снова автоматически зарегистрируется на узле обмена в соответствии с типовым планом обмена. Поэтому для перманентного решения задачи необходимо комбинировать этот шаг с настройкой ПРО (Способ 1).

Способ 3. Решение проблемы «Выгружается только ссылка» в концепции EnterpriseData

Ограничив выгрузку документов и оставив только справочники, мы неизбежно столкнемся с классической проблемой обменов через универсальный формат (EnterpriseData) в КД 3.0. Выясним причину ее возникновения.

В Конвертации данных 2.1 при отправке документа по умолчанию выгружались и все связанные с ним объекты справочников «целиком» (со всеми реквизитами). В Конвертации данных 3.0 обмен построен на строгой XDTO-сериализации. Если справочник (например, ДоговорыКонтрагентов или Номенклатура) не зарегистрирован к выгрузке как самостоятельный объект, то при выгрузке документа система сформирует в XML-файле только минимальный набор так называемых идентификационных (ключевых) свойств (УИД, ИНН, КПП, Код или Наименование), чтобы база-приемник смогла сопоставить объект.

Если база-приемник не находит такой объект у себя, она создает пустой элемент, заполняя только эти ключевые реквизиты. В результате мы получаем «битые» или незаполненные карточки справочников в приемнике. Чтобы этого избежать, применим следующие решения:

Вариант А. Принудительная регистрация связанных данных
Чтобы объект перенесся со всеми реквизитами, он должен быть зарегистрирован на узле плана обмена самостоятельно. Нам нужно настроить правила регистрации так, чтобы при изменении или регистрации документа автоматически регистрировались и все его ключевые реквизиты справочников.

Вариант Б. Настройка ПКС в Конвертации данных 3.0
В правилах конвертации свойств (ПКС) для конкретных реквизитов мы можем явно указать формат выгрузки. Проанализируем настройки ПКО (Правил конвертации объектов) в КД 3.0 и убедимся, что для выгружаемых свойств установлены корректные правила сопоставления. Для решения этой проблемы также можно применить готовое исправление правил обмена EnterpriseData для справочников.

Вариант В. Использование обработчиков в менеджере обмена
Если мы дорабатываем обмен через модуль МенеджерОбменаЧерезУниверсальныйФормат, мы можем управлять процессом непосредственно в коде событий, например, в обработчике ПриОтправкеДанных. Мы можем программно зарегистрировать связанные данные для выгрузки в текущей сессии обмена:


Процедура ПриОтправкеДанных(ДанныеПриемника, Выборка, КомпонентыОбмена)
    
    // Пример принудительной регистрации контрагента при отправке документа
    Если ТипЗнч(Выборка.Источник) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
        ДокументОбъект = Выборка.Источник;
        Если ЗначениеЗаполнено(ДокументОбъект.Контрагент) Тогда
            // Регистрируем контрагента для полной выгрузки, чтобы он не ушел только ссылкой
            ПланыОбмена.ЗарегистрироватьИзменения(КомпонентыОбмена.УзелОбмена, ДокументОбъект.Контрагент);
        КонецЕсли;
    КонецЕсли;
    
КонецПроцедуры

Используя этот подход, мы гарантируем, что связанные справочники всегда будут переноситься в базу-приемник в максимально полном и корректном виде, а состав основного обмена останется строго ограничен заданными рамками.

← На главную