Как в правилах обмена выгружать номенклатуру только из документов, а не весь справочник?

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

При настройке переноса данных между конфигурациями 1С через конфигурацию «Конвертация данных 2.1» часто возникает задача: перенести только документы за определенный период и связанные с ними позиции номенклатуры. Однако при стандартной настройке обработка Универсальный обмен данными в формате XML выгружает весь справочник Номенклатура целиком, что существенно увеличивает время выгрузки, раздувает XML-файл и засоряет базу-приемник ненужными позициями.

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

Выясним причину избыточной выгрузки

Для понимания логики работы платформы проанализируем разницу между двумя ключевыми сущностями конфигурации «Конвертация данных 2.1»:

  1. ПКО (Правило конвертации объектов) — определяет правила трансформации полей конкретного объекта источника в поля объекта приемника.
  2. ПВД (Правило выгрузки данных) — инициализирует первичную выборку объектов из базы источника и формирует очередь на конвертацию.

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

Способ 1. Удаление правила выгрузки данных (ПВД) для справочника

Рассмотрим основной и наиболее правильный метод решения задачи в среде «Конвертация данных 2.1»:

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

Теперь в дереве объектов для выгрузки справочник Номенклатура вообще перестанет отображаться. Платформа будет выбирать только отмеченные флажками документы. Когда алгоритм дойдет до конвертации табличной части документа (например, строки с номенклатурой), сработает правило конвертации свойств (ПКС). Система увидит ссылку на номенклатуру, найдет соответствующее ПКО и выгрузит в XML-файл только этот конкретный элемент.

Способ 2. Программное отключение выборки в обработчике ПВД

Бывают ситуации, когда ПВД для справочника необходимо сохранить в правилах (например, если периодически требуется ручная полная выгрузка классификатора). В таком случае разберем, как программно отменить выборку номенклатуры при штатном запуске:

  1. В «Конвертации данных» перейдем в ПВД для справочника Номенклатура.
  2. Откроем обработчик событий «Перед обработкой правила».
  3. Напишем команду отмены выполнения выборки:

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

Установка переменной Отказ = Истина прерывает процедуру сплошной выборки элементов справочника при запуске ПВД. При этом механизм ссылочной выгрузки из табличных частей документов продолжит работать в штатном режиме через ПКО.

Способ 3. Снятие флага в обработке выгрузки

Если правила менять нежелательно или нет доступа к конфигурации «Конвертация данных», рассмотрим обходной путь непосредственно в базе-источнике:

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

Снятие флажка отключает выполнение ПВД для номенклатуры. В результирующий файл попадут только те позиции, на которые ссылаются выбранные документы.

Важные нюансы и сопутствующие настройки

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

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