Как правильно настроить перенос контрагента в Конвертации данных 2.1, если в базе есть «Основной контрагент»?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

При настройке обмена между Управлением торговлей и Бухгалтерией часто возникает задача выбора «правильного» контрагента. В базе-источнике (УТ) может быть несколько контрагентов с одинаковым ИНН, а в базе-приемнике (Бухгалтерия) требуется, чтобы все операции по этому ИНН собирались на одном объекте. Рассмотрим, как грамотно реализовать логику подмены контрагента в Конвертации данных 2.1.

Почему попытка изменения свойства в ПКС не всегда срабатывает?

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

Если мы меняем только Значение, мы лишь отдаем в приемник ссылку на другой объект, но сам механизм выгрузки остается «привязанным» к исходному контрагенту из документа. Это ведет к проблемам с договорами, так как Договор имеет владельца, и если владелец в документе один, а в правилах выгрузки — другой, система выдаст ошибку целостности данных.

Правильное решение: использование ПКО

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

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


Если НЕ Источник.ОсновнойКонтрагент.Пустая() Тогда
    Источник = Источник.ОсновнойКонтрагент;
КонецЕсли;

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

Настройка договоров и ссылочной целостности

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

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

Важные предостережения

При внедрении данной логики учитывайте следующие риски:

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

← На главную