Почему номенклатура переносится пустой без реквизитов при перегрузке по ссылке в Конвертации данных 2.1 и как это исправить?

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

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

Разберем причину этого поведения и рассмотрим проверенные способы исправления данной проблемы.

Выясним причину проблемы

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

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

Способ 1. Отключение оптимизации через обработчик ПКО (Основное решение)

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

  1. Откроем конфигурацию «Конвертация данных 2.1» и перейдем в Правила конвертации объектов (ПКО) для справочника Номенклатура.
  2. Перейдем на вкладку Обработчики событий и выберем событие Перед выгрузкой.
  3. Добавим следующую строку кода:

ТолькоПолучитьУзелСсылки = Ложь;

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

Важное условие для оптимизации: Чтобы избежать чрезмерного разрастания XML-файла и не выгружать лишние данные (например, группы справочника), сброс флага можно сделать условным:


Если Не Источник.ЭтоГруппа Тогда
    ТолькоПолучитьУзелСсылки = Ложь;
КонецЕсли;

Способ 2. Явный вызов выгрузки элемента из ПКС документа

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

В ПКС документа (или в обработчике Перед выгрузкой свойства, передающего номенклатуру) выполним явный вызов функции ВыгрузитьПоПравилу, передав флаг отключения узла ссылки последним параметром:

ВыгрузитьПоПравилу(Источник.Номенклатура, , , , "Номенклатура", , Ложь);

Способ 3. Проверка интерактивных настроек ПКО и ПКС

Если код прописан, но реквизиты всё равно не заполняются, проанализируем интерактивные настройки правил:

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

Риски и рекомендации по использованию

Принудительная установка ТолькоПолучитьУзелСсылки = Ложь гарантирует полный перенос всех реквизитов объекта. Однако следует учитывать особенности работы обмена:

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

← На главную