При настройке правил обмена в конфигурации «1С:Конвертация данных 2.1» разработчики часто сталкиваются с ситуацией, когда у подчиненного справочника (например, БанковскиеСчета) реквизит Владелец имеет составной тип данных. Владельцем счета может выступать как элемент справочника Контрагенты, так и элемент справочника Организации.
Если не указать механизм определения правила конвертации объектов (ПКО) для владельца, банковские счета либо не переносятся вовсе, либо выгружаются с ошибками. Рассмотрим подробно, как решить эту проблему различными способами.
Выясним причину, почему стандартный перенос может работать некорректно. Когда мы настраиваем Правило Конвертации Свойств (ПКС) для реквизита Владелец в ПКО справочника БанковскиеСчета, система должна четко понимать, по какому именно правилу выгружать владельца счета.
Если для типа СправочникСсылка.Контрагенты создано одно ПКО (например, «Контрагенты»), а для СправочникСсылка.Организации — другое (например, «Организации»), автоподбор правил не всегда срабатывает корректно из-за порядка следования ПКО в дереве правил или особенностей настройки поисковых полей.
Проанализируем наиболее надежный вариант решения — явное переопределение переменной ИмяПКО в зависимости от типа владельца. Для этого разберем по шагам порядок действий в конфигураторе «Конвертация данных 2.1»:
БанковскиеСчета.Владелец.
Если ЗначениеЗаполнено(Источник.Владелец) Тогда
Если ТипЗнч(Источник.Владелец) = Тип("СправочникСсылка.Контрагенты") Тогда
ИмяПКО = "Контрагенты";
ИначеЕсли ТипЗнч(Источник.Владелец) = Тип("СправочникСсылка.Организации") Тогда
ИмяПКО = "Организации";
КонецЕсли;
КонецЕсли;
Важное замечание: Переменной ИмяПКО должно присваиваться точное наименование правила из колонки «Имя» в списке ПКО (с учетом регистра букв). При этом назначать значение вручную через Значение = Источник.Ссылка; в ПКС не требуется — платформа 1С выполнит получение ссылки автоматически.
Рассмотрим альтернативный вариант без написания кода. Механизм Конвертации данных способен самостоятельно подбирать необходимое правило, если активирован автоподбор:
Владелец оставим поле Правило пустым.Контрагенты и Организации) созданы соответствующие ПКО.Однако при составных типах программное явное указание через ИмяПКО в обработчике «Перед выгрузкой» исключает ошибки автоподбора и является более устойчивым решением.
Если структуры хранения банковских счетов в источнике и приемнике отличаются (или логика обработки счетов организаций и контрагентов существенно различается), проанализируем вариант с разделением правил:
Посмотрим на ещё один частый нюанс: счета выгружаются, но при загрузке в приемнике создаются дубли или они привязываются не к тем владельцам. Чтобы избежать этого, выполним правильную настройку полей поиска:
ВладелецНомерСчета (или Код)БанкЕсли флаг «Поле поиска» для реквизита Владелец не установлен, система при загрузке сопоставит банковский счет только по номеру и банку, что принесет ошибки сопоставления при наличии одинаковых номеров счетов у разных контрагентов.