Как настроить перенос банковских счетов с разным типом владельца в «1С:Конвертация данных 2.1»?

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

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

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

Причина возникновения проблемы

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

Если для типа СправочникСсылка.Контрагенты создано одно ПКО (например, «Контрагенты»), а для СправочникСсылка.Организации — другое (например, «Организации»), автоподбор правил не всегда срабатывает корректно из-за порядка следования ПКО в дереве правил или особенностей настройки поисковых полей.

Способ 1. Программное указание имени ПКО в обработчике ПКС (Рекомендуемый)

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

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

Если ЗначениеЗаполнено(Источник.Владелец) Тогда
    Если ТипЗнч(Источник.Владелец) = Тип("СправочникСсылка.Контрагенты") Тогда
        ИмяПКО = "Контрагенты";
    ИначеЕсли ТипЗнч(Источник.Владелец) = Тип("СправочникСсылка.Организации") Тогда
        ИмяПКО = "Организации";
    КонецЕсли;
КонецЕсли;

Важное замечание: Переменной ИмяПКО должно присваиваться точное наименование правила из колонки «Имя» в списке ПКО (с учетом регистра букв). При этом назначать значение вручную через Значение = Источник.Ссылка; в ПКС не требуется — платформа 1С выполнит получение ссылки автоматически.

Способ 2. Автоматический подбор ПКО по типу источника

Рассмотрим альтернативный вариант без написания кода. Механизм Конвертации данных способен самостоятельно подбирать необходимое правило, если активирован автоподбор:

  1. В ПКС реквизита Владелец оставим поле Правило пустым.
  2. Убедимся, что для каждого из возможных типов владельца (Контрагенты и Организации) созданы соответствующие ПКО.
  3. Проверим порядок ПКО в дереве правил. Система ищет подходящие правила сверху вниз, поэтому специфические правила должны находиться выше общих.

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

Способ 3. Разделение выгрузки на два отдельных ПКО

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

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

Критически важные настройки поиска при загрузке

Посмотрим на ещё один частый нюанс: счета выгружаются, но при загрузке в приемнике создаются дубли или они привязываются не к тем владельцам. Чтобы избежать этого, выполним правильную настройку полей поиска:

  1. В ПКО банковских счетов откроем список ПКС.
  2. Установим флаг «Поле поиска» для реквизитов:
    • Владелец
    • НомерСчета (или Код)
    • Банк

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

← На главную