Почему контрагенты не отображаются в списке клиентов после переноса данных и как это исправить?

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

При переносе данных из старых конфигураций 1С (например, УТ 10.3 или КА 1.1) в современные системы на базе ERP 2.0 (такие как УТ 11 или КА 2) часто возникает ситуация, когда контрагенты вроде бы есть в базе, но не видны в привычных рабочих местах «Продажи — Клиенты» или «Закупки — Поставщики». При этом в общем справочнике Контрагенты они отображаются корректно.

В этой статье мы подробно разберем, почему так происходит, изучим внутреннюю архитектуру справочников и найдем несколько способов решения проблемы: от простых административных действий до программного исправления с помощью кода.

Разберем причину: разница между Партнерами и Контрагентами

Прежде чем приступать к исправлению, давайте проанализируем ситуацию. В современных конфигурациях 1С учет разделен на два справочника:

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

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

Способ 1: Перезапись справочника «Партнеры»

Как показывает практика и опыт участников обсуждения, самая простая причина кроется в том, что при программном создании объектов не отрабатывают стандартные обработчики событий ПриЗаписи. Рассмотрим простейшее решение: если ручная перезапись одного элемента в интерфейсе помогает, значит, нужно сделать это массово.

Важно: Перезаписывать нужно именно справочник Партнеры, а не Контрагенты. Воспользуемся встроенной обработкой «Групповое изменение реквизитов»:

  1. Перейдем в раздел Администрирование — Обслуживание — Корректировка данных — Групповое изменение реквизитов.
  2. Выберем объект «Партнеры».
  3. Нажмем кнопку «Дополнительные параметры» и убедимся, что включены флаги «Вызывать обработчики при записи» и «Записывать объекты со скрытыми реквизитами».
  4. Не выбирая никаких реквизитов для изменения, нажмем «Изменить параметры». Система просто «прогонит» каждый объект через процедуру записи, что заставит сработать фоновые механизмы регистрации данных.

Способ 2: Программное заполнение регистра «Иерархия партнеров»

Если простая перезапись не помогла, значит, проблема глубже — в регистре сведений ИерархияПартнеров. Этот регистр отвечает за корректное построение дерева партнеров и отображение их в динамических списках. При программном переносе данных этот регистр часто остается пустым.

Рассмотрим код, который позволяет принудительно восстановить записи в этом регистре. Для этого мы будем использовать экспортный метод типовой конфигурации. Нам потребуется создать внешнюю обработку и выполнить в ней следующий фрагмент кода:


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	Партнеры.Ссылка КАК Ссылка
    |ИЗ
    |	Справочник.Партнеры КАК Партнеры";

РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();

МассивПартнеров = Новый Массив;
Пока Выборка.Следующий() Цикл
    МассивПартнеров.Добавить(Выборка.Ссылка);
    
    // Чтобы не перегружать память при огромных базах, можно обрабатывать порциями
    Если МассивПартнеров.Количество() > 500 Тогда
        ПартнерыИКонтрагенты.ВыполнитьЗаписьИерархияПартнеров(МассивПартнеров);
        МассивПартнеров.Очистить();
    КонецЕсли;
КонецЦикла;

// Записываем остаток
Если МассивПартнеров.Количество() > 0 Тогда
    ПартнерыИКонтрагенты.ВыполнитьЗаписьИерархияПартнеров(МассивПартнеров);
КонецЕсли;

Метод ПартнерыИКонтрагенты.ВыполнитьЗаписьИерархияПартнеров является стандартным для УТ 11 и КА 2. Он анализирует структуру справочника и корректно прописывает связи в служебных таблицах.

Способ 3: Исправление зацикливаний и Тестирование и исправление

Иногда причиной «исчезновения» партнеров является нарушение иерархии (например, когда объект является родителем сам себе или возникает круговая ссылка). Это часто случается при некорректной работе правил обмена.

Проанализируем ситуацию через Тестирование и исправление (ТиИ):

  1. Создадим резервную копию базы данных (обязательно!).
  2. Зайдем в конфигуратор, выберем пункт «Администрирование — Тестирование и исправление».
  3. Установим флаг «Проверка логической целостности» и «Исправление зацикливаний».
  4. После завершения процесса попробуйте снова перезаписать «проблемных» партнеров через форму Администрирование — НСИ — Партнеры (или через Контрагентов, если включена опция «Партнеры и контрагенты совпадают»).

Дополнительные проверки: почему список может быть пустым?

Если вышеуказанные методы не помогли, стоит проверить еще несколько технических нюансов:

1. Функциональные опции. Проверьте настройки в разделе НСИ и администрирование — Настройка НСИ и разделов — Семья и партнеры. Если у вас включена опция «Независимые партнеры и контрагенты», убедитесь, что у каждого Контрагента в поле Партнер указана корректная ссылка. Если поле пустое, контрагент не появится в управленческих списках.

2. Ключи реестра документов и аналитика. Выясним причину через проверку ключей аналитики. В системе существуют регистры, такие как КлючиАналитикиУчетаПоПартнерам. Если записей там нет, система может игнорировать объекты в некоторых отчетах и списках. Перезапись объекта обычно решает эту проблему автоматически.

3. Полнотекстовый поиск. Если вы ищете клиента через строку поиска, и он не находится (хотя глазами вы его видите), попробуйте обновить индекс полнотекстового поиска. Это делается в разделе Администрирование — Поддержка и обслуживание — Полнотекстовый поиск.

4. Признаки «Клиент» и «Поставщик». Проверьте в консоли запросов значения реквизитов Клиент и Поставщик в справочнике Партнеры. При переносе данных они могут установиться в значение Ложь. В этом случае партнер будет виден только в общем справочнике НСИ, но не в специализированных АРМ (Автоматизированных рабочих местах) продаж или закупок.

Подводя итог, можно сказать, что в 90% случаев проблема решается именно вызовом метода ВыполнитьЗаписьИерархияПартнеров или массовой перезаписью справочника Партнеры с включенными обработчиками событий. Это восстанавливает служебные связи, которые были пропущены при прямой загрузке данных в базу.

← На главную