Как выгружать в 1С:Конвертация данных только те элементы справочников, которые используются в документах

Программист 1С v8.3 (Обычные формы) IT и автоматизация бизнеса
← На главную

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

Понимание механики выгрузки по ссылке

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

Важный момент: Наличие или отсутствие Правил выгрузки данных (ПВД) для справочника никак не влияет на его выгрузку «по ссылке». ПВД — это лишь «стартер», который говорит системе: «Выбери все объекты этого типа из базы и начни их обработку». Если мы хотим, чтобы справочники попадали в файл обмена только «прицепом» к документам, нам нужно в первую очередь разобраться с ПВД.

Настройка ПВД для выборочной выгрузки

Проанализируем ситуацию, когда мы используем обработку «Универсальный обмен данными в формате XML». Рассмотрим пошагово, как ограничить состав выгрузки:

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

В результате, когда система начнет выгружать документы, она дойдет до реквизита «Контрагент», увидит ссылку, найдет соответствующее ПКО для справочника «Контрагенты» и выгрузит именно этот конкретный элемент. Весь остальной справочник останется нетронутым.

Справочники, которые должны ходить «сами по себе»

Часто возникает обратный вопрос: что делать со справочниками, которые должны мигрировать в базу-приемник сразу после их создания или изменения, независимо от того, задействованы они в документах или нет? Например, справочник «Статьи затрат» или «Цены».

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

Регулярный обмен и правила регистрации

Если мы говорим не о разовом переносе данных, а о регулярном обмене (например, через типовые механизмы синхронизации), то логика работы смещается в сторону планов обмена. Рассмотрим, как это работает.

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

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

Проанализируем ситуацию: если справочник не зарегистрирован на узле плана обмена, он не будет инициировать выгрузку. Но как только будет выгружаться зарегистрированный документ, ссылка на элемент справочника все равно попадет в XML-пакет, так как движок КД работает рекурсивно.

Тонкая настройка ПКО для оптимизации

Иногда выгрузка «по ссылке» может привести к избыточности. Например, документ тянет за собой номенклатуру, номенклатура — единицы измерения, те — классификатор и так далее. Чтобы ограничить глубину этой цепочки, рассмотрим полезные настройки в ПКО:

1. Флаг «Не выгружать объекты свойств по ссылкам»

Если установить этот флаг в ПКО справочника, то при выгрузке документа система передаст только идентификатор (UID) и поля поиска объекта, но не будет выгружать все его реквизиты. Это значительно ускоряет процесс, но требует, чтобы объект уже существовал в базе-приемнике. Если его там нет, в приемнике может появиться «битая» ссылка или объект только с кодом и наименованием.

2. Использование события «Перед выгрузкой»

Мы можем программно управлять тем, нужно ли выгружать конкретный объект. Разберем пример кода в ПКО справочника в событии ПередВыгрузкой:


// Пример: запрет выгрузки, если объект не помечен специальным флагом
// или если мы хотим выгружать только ссылки
Если Не Объект.ВыгружатьВДругуюБазу Тогда
    ТолькоПолучитьУзелСсылки = Истина;
КонецЕсли;

Здесь параметр ТолькоПолучитьУзелСсылки = Истина означает, что данные объекта (его реквизиты) не будут записаны в файл, уйдет только ссылка для поиска.

Резюме

Для того чтобы выгружать только нужные элементы справочников, выполним следующие шаги:

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

Такой подход позволит вам создавать чистые и быстрые обмены, не перегружая базу-приемник лишней информацией и сохраняя целостность данных за счет автоматической выгрузки по ссылкам.

← На главную