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

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

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

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

Причина проблемы: скрытые ссылки

Проанализируем ситуацию: почему даже после отключения флажка у ПКС (Правила конвертации свойства) ДокументОснование в основном правиле, документ все равно попадает в файл выгрузки? Рассмотрим основные причины:

  1. Дублирование в табличных частях. Это самая частая причина. В типовых конфигурациях (например, БП 3.0 или УТ 11) документ-основание может быть указан не только в реквизите шапки, но и в каждой строке табличной части (например, в ТЧ РасшифровкаПлатежа).
  2. Выгрузка по ссылкам из других ПКО. Другой объект, выгружаемый в этой же сессии, может ссылаться на тот же самый документ.
  3. Настройки ПКО. В самом правиле конвертации объекта может не стоять запрет на выгрузку по ссылке.

Способ 1. Проверка всех ПКС, включая табличные части

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

Разберем пример: в документе ОперацияПоПлатежнойКарте есть табличная часть РасшифровкаПлатежа. В ней почти всегда присутствует реквизит Заказ или ДокументПланирования, который и является основанием. Чтобы прекратить выгрузку, необходимо:

  1. Найти ПКС для этой табличной части.
  2. Внутри ПКС табличной части найти реквизит, ссылающийся на документ.
  3. Установить флаг «Отключить» или программно запретить выгрузку.

Способ 2. Использование программных флагов в обработчиках

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

Параметр «ВыгрузитьОбъект»

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


// В обработчике ПКС "ДокументОснование" -> "Перед выгрузкой"
ВыгрузитьОбъект = Ложь;

Параметр «ТолькоПолучитьУзелСсылки»

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


// В обработчике ПКО нужного документа -> "Перед выгрузкой"
ТолькоПолучитьУзелСсылки = Истина;

Способ 3. Передача пустого значения или только УИД

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


// Вариант 1: Полный отказ от выгрузки свойства
Отказ = Истина;

// Вариант 2: Передача пустого значения
Значение = Неопределено;

Если же вам нужно передать идентификатор для последующего сопоставления вручную, но вы категорически не хотите тянуть объект, можно передать УИД как строку или через параметр, однако стандартный механизм ВыгрузитьОбъект = Ложь является более предпочтительным и "чистым" с точки зрения архитектуры КД.

Способ 4. Глобальная настройка «Не выгружать объекты данного типа по ссылкам»

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

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

Важные рекомендации по диагностике

Если вы применили все вышеуказанные методы, но связанные документы все равно попадают в файл, проанализируйте ситуацию следующим образом:

  1. Проверьте кэш правил. При выгрузке в обработке УниверсальныйОбменДаннымиСобытиями обязательно перечитывайте файл правил (кнопка «Прочитать правила»). Часто бывает, что обработка использует старую структуру из памяти.
  2. Используйте метод Сообщить(). Вставьте в обработчики ПКС и ПКО подозрительных документов код Сообщить("Выгружается документ: " + Источник);. Так вы точно поймете, по какому именно правилу и в какой момент инициируется выгрузка.
  3. Ищите скрытые вызовы. Проверьте обработчики «После выгрузки» основного документа. Возможно, там написан программный код на языке 1С, использующий функцию ВыгрузитьПоПравилу(), которая игнорирует настройки интерфейса.

Таким образом, комбинируя отключение ПКС в табличных частях и использование флага ВыгрузитьОбъект = Ложь, мы можем добиться «легкой» выгрузки без лишних данных.

← На главную