Почему объект попадает в файл выгрузки, если в ПВД установлен Отказ = Истина?

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

При работе с конфигурацией «1С: Конвертация данных 2.0» разработчики часто сталкиваются с ситуацией: в Правилах выгрузки данных (ПВД) для конкретного объекта прописано Отказ = Истина, однако при просмотре созданного XML-файла объект всё равно обнаруживается в списке выгруженных. Это вызывает недоумение, особенно когда кажется, что на объект нет прямых ссылок. Давайте разберем этот механизм детально, выясним причины такого поведения платформы и найдем способы полного исключения данных из выгрузки.

Разберем разницу между ПВД и ПКО

Для начала проанализируем, за что отвечают разные типы правил в КД 2.0. Это критически важно для понимания логики работы выгрузки.

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

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

Выясним причину: выгрузка по ссылке

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

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

Проанализируем основные причины появления «отказного» объекта в файле:

Проанализируем ситуацию через XML-файл

Если вы уверены, что ссылок быть не должно, но объект всё равно в файле, проведем небольшое расследование. Разберем по шагам, как найти «виновника»:

  1. Откройте сформированный XML-файл любым текстовым редактором (лучше использовать Notepad++ или специализированные XML-вьюверы).
  2. Найдите узел вашего объекта по его наименованию или УИД.
  3. Посмотрите на структуру. Если ваш объект находится внутри тегов <Свойство> другого объекта — значит, он выгрузился как реквизит.
  4. Обратите внимание на атрибут ИмяПравила. Он подскажет, какое именно ПКО было использовано для записи объекта в файл.

Как полностью запретить выгрузку объекта

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

Способ 1: Отказ в ПКО «Перед выгрузкой»

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


// В обработчике ПКО "Перед выгрузкой"
Если Источник.Наименование = "Нежелательная статья" Тогда
    Отказ = Истина;
КонецЕсли;

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

Способ 2: Настройка свойств (ПКС)

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

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

Способ 3: Использование флага «Только получение ссылки»

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

Резюме

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

← На главную