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