Как правильно исключить вид документа из обмена данными в 1С?

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

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

Почему недостаточно просто исключить документ из выгрузки

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

Шаг 1: Блокировка выгрузки документа

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

Используйте следующий код в обработчике:

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

Этот код гарантирует, что сам документ не попадет в пакет обмена. Но помните, что это действие требует последующей обработки ссылок, иначе система выдаст ошибку при попытке загрузки зависимых данных.

Шаг 2: Обработка ссылочных зависимостей

После того как вы заблокировали передачу, необходимо найти все места, где этот документ используется. Существует два основных подхода к решению проблемы «Объект не найден»:

  1. Очистка реквизитов в базе-приемнике. Вы можете настроить обработку после загрузки данных, которая будет искать реквизиты с ненайденными ссылками и принудительно очищать их (присваивать значение Неопределено или ПустаяСсылка).
  2. Замена ссылок на этапе выгрузки. Это более надежный метод. В правилах выгрузки для документов-потомков добавьте проверку: если реквизит ссылается на запрещенный тип документа, то принудительно записывайте в него пустую ссылку.

Пример логики для очистки ссылки в правилах обмена:


// В обработчике ПередВыгрузкой для реквизита
Если ЗначениеЗаполнено(Источник.ВашРеквизит) Тогда
    // Если это тот самый документ, который мы исключили
    Если ТипЗнч(Источник.ВашРеквизит) = Тип("ДокументСсылка.ПриобретениеТоваровУслуг") Тогда
        Значение = ПредопределенноеЗначение("Документ.ПриобретениеТоваровУслуг.ПустаяСсылка");
    КонецЕсли;
КонецЕсли;

Использование стандартных механизмов планов обмена

Рассмотрим подробнее работу с Планами обмена. В современных конфигурациях на базе БСП (Библиотека стандартных подсистем) вы можете управлять составом выгружаемых данных через настройки синхронизации. Однако возможности этого интерфейса часто ограничены.

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

Рекомендации для стабильного обмена

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

← На главную