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