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

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

Перенос данных между конфигурациями 1С с использованием «Конвертации данных 2.1» (КД 2.1) — задача стандартная, но часто преподносящая сюрпризы, особенно когда целевой системой выступает 1С:ERP, 1С:Комплексная автоматизация 2 или 1С:Управление торговлей 11. Одной из самых коварных проблем является ситуация, когда объект (например, контрагент) вроде бы перенесен, он отображается в поле документа, но при попытке его открыть форма оказывается пустой, заголовок отсутствует, а в списке справочника найти этот элемент невозможно. Рассмотрим подробно причины возникновения этой ошибки и пути ее решения.

Разбор архитектурного разрыва: Партнеры и Контрагенты

Первым делом проанализируем ключевое различие между «старыми» конфигурациями (такими как БП 3.0 или УПП 1.3) и современными решениями на базе ERP. В старых системах существовал один справочник Контрагенты. В 1С:ERP архитектура управленческого и регламентированного учета разделена:

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

В ERP существует жесткая связь: каждый Контрагент должен принадлежать какому-то Партнеру. Если при переносе данных через КД 2.1 мы создали запись в справочнике Контрагенты, но не создали связанного Партнера или не заполнили реквизит Партнер у контрагента, система начинает вести себя непредсказуемо. Форма контрагента при открытии пытается прочитать данные связанного партнера для вывода заголовка и настройки видимости полей. Если ссылка на партнера пустая или «битая», программный код формы «падает» в скрытую ошибку, из-за чего кнопки становятся неактивными, а данные не отображаются.

Выясним причину отсутствия в списке

Почему же контрагент виден в документе, но отсутствует в форме списка справочника? Разберем этот механизм. Большинство форм списков в современных конфигурациях построены на базе Динамических списков. Запросы в этих списках часто содержат жесткие отборы или левые соединения. Например:

Проверка данных с помощью консоли запросов

Чтобы окончательно убедиться в причине проблемы, проанализируем ситуацию изнутри. Воспользуемся советом опытных разработчиков и сравним «эталонный» объект (созданный вручную в ERP) и перенесенный объект с помощью консоли запросов. Выполним следующий запрос:


ВЫБРАТЬ
    Контрагенты.Ссылка,
    Контрагенты.Наименование,
    Контрагенты.Партнер,
    Контрагенты.ЮрФизЛицо,
    Контрагенты.НаименованиеПолное,
    Контрагенты.ПометкаУдаления
ИЗ
    Справочник.Контрагенты КАК Контрагенты
ГДЕ
    Контрагенты.Ссылка = &СсылкаНаПроблемногоКонтрагента

Если в результате запроса поле Партнер окажется пустым (NULL или пустая ссылка), то мы нашли корень проблемы. Также обратим внимание на поле ЮрФизЛицо. В ERP это обязательное перечисление. Если оно не заполнено, форма объекта не сможет определить логику отрисовки интерфейса.

Настройка правил в КД 2.1: пошаговое решение

Разберем, как правильно настроить правила конвертации, чтобы избежать подобных проблем. Нам необходимо реализовать цепочку создания объектов.

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

Шаг 2: Настройка ПКО Контрагенты. В правиле конвертации свойств (ПКС) для реквизита Партнер мы должны указать созданное выше ПКО. Таким образом, при загрузке контрагента система сначала создаст (или найдет) партнера и подставит его в соответствующее поле.

Шаг 3: Обработка событий. Часто простого переноса полей недостаточно. Рекомендуется в ПКО Контрагента в событии ПослеЗагрузки прописать инициализацию обязательных реквизитов, которые могут отсутствовать в источнике. Рассмотрим пример кода:


// В обработчике "После загрузки" ПКО Контрагенты
Если Объект.ЭтоГруппа Тогда
    Возврат;
КонецЕсли;

// Установка типа, если он не перенесся
Если Не ЗначениеЗаполнено(Объект.ЮрФизЛицо) Тогда
    Объект.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮридическоеЛицо;
КонецЕсли;

// Важно вызвать типовые механизмы заполнения, если необходимо
// Объект.Записать(); 

Проблема с поиском и обновлением объектов

Посмотрим на ситуацию, когда наименование в шапке пустое. Это часто происходит, если в ПКО стоит галочка «Не замещать существующие объекты», а поиск идет по ИНН. Если в базе ERP уже был «пустой» объект с таким ИНН (например, созданный ранее ошибочным переносом), КД 2.1 найдет его, но не обновит реквизиты (включая наименование). В итоге в документах будет ссылка на этот старый пустой объект.

Рекомендация: Для первичного переноса или исправления данных временно включите флаг «Замещать существующие объекты» и убедитесь, что все ключевые поля (Наименование, НаименованиеПолное, ИНН, КПП, Партнер, ЮрФизЛицо) сопоставлены корректно.

Резюме и чеклист для исправления

Проанализируем ситуацию еще раз и составим итоговый план действий для исправления «невидимых» контрагентов:

  1. Проверьте наличие Партнера: Убедитесь, что в ERP справочник Партнеры заполнен и каждый Контрагент имеет ссылку на своего Партнера.
  2. Заполните ЮрФизЛицо: Проверьте, что этот реквизит не пустой. Без него формы 1С:ERP работают некорректно.
  3. Наименование: Убедитесь, что переносятся оба поля — Наименование (рабочее) и НаименованиеПолное. В некоторых списках ERP используется наименование партнера, поэтому его тоже нужно заполнять.
  4. Регистрация в списках: Если объекты созданы программно (через КД), иногда требуется обновление дополнительных регистров (например, ДанныеПервичныхДокументов), хотя для справочника контрагентов это менее критично, чем для документов.
  5. Используйте типовые заготовки: Даже если вы используете КД 2.1, а типовые правила ERP идут на КД 3.0, попробуйте подсмотреть логику заполнения обязательных полей в модулях менеджера соответствующих справочников в самой ERP (процедуры ПередЗаписью и ПриЗаписи).

Соблюдение этих архитектурных правил позволит вам корректно перенести данные и обеспечить полноценную работу пользователей с контрагентами в новой системе.

← На главную