Почему не отображаются элементы справочника Партнеры в 1С:УТ 11 после переноса данных

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

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

Причина 1: Ошибки в структуре иерархии (Группа vs Элемент)

Проанализируем наиболее частую техническую ошибку, с которой сталкиваются разработчики при написании правил конвертации. В справочнике Партнеры, как и в других иерархических справочниках 1С, существует реквизит ЭтоГруппа. Если при переносе данных из-за ошибки в правилах объект, который должен быть группой, создается как элемент (или наоборот), динамический список в интерфейсе может «сломаться».

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


Выборка = Справочники.Партнеры.Выбрать();
Пока Выборка.Следующий() Цикл
    Если Выборка.ЭтоГруппа Тогда
        Сообщить("Это группа: " + Выборка.Наименование);
    Иначе
        // Проверяем, нет ли у него подчиненных
        Запрос = Новый Запрос;
        Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 Ссылка ИЗ Справочник.Партнеры ГДЕ Родитель = &Родитель";
        Запрос.УстановитьПараметр("Родитель", Выборка.Ссылка);
        Если НЕ Запрос.Выполнить().Пустой() Тогда
            Сообщить("ВНИМАНИЕ: Элемент " + Выборка.Наименование + " является родителем, но не помечен как группа!");
        КонецЕсли;
    КонецЕсли;
КонецЦикла;

Для исправления такой ситуации необходимо либо перенести данные заново с корректными правилами, либо написать обработку, которая исправит признак ЭтоГруппа (что технически сложно для существующих записей) или перепривяжет элементы к корректным родителям.

Причина 2: Служебный регистр сведений «Иерархия партнеров»

Разберем архитектурную особенность современных конфигураций на базе ERP-платформы. В 1С:УТ 11 справочник Партнеры использует вспомогательный регистр сведений ИерархияПартнеров. Этот регистр необходим для оптимизации работы динамических списков и быстрого построения дерева связей.

Когда мы переносим данные программно (особенно в режиме обмена данными ОбменДанными.Загрузка = Истина), стандартные обработчики событий справочника могут не срабатывать. В итоге записи в справочнике есть, а в регистре ИерархияПартнеров — пусто. Система, пытаясь построить список на основе регистра, не находит записей и показывает пустую форму.

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


// Пример вызова обновления иерархии
Справочники.Партнеры.ОбновитьИерархиюПартнеров();

Если такой метод недоступен или не помогает, можно воспользоваться методом «простой перезаписи». Пройдем циклом по всем партнерам и вызовем метод Записать() без флага загрузки. Это заставит систему выполнить встроенные триггеры обновления иерархии:


Выборка = Справочники.Партнеры.Выбрать();
Пока Выборка.Следующий() Цикл
    Объект = Выборка.ПолучитьОбъект();
    Объект.ОбменДанными.Загрузка = Ложь; // Важно для запуска обработчиков
    Попытка
        Объект.Записать();
    Исключение
        Сообщить("Ошибка записи: " + Выборка.Наименование);
    КонецПопытки;
КонецЦикла;

Причина 3: Соответствие партнеров и контрагентов

Проанализируем ситуацию, связанную с разделением сущностей. В 1С:УТ 11 существует фундаментальное различие: Партнер — это управленческая сущность, а Контрагент — юридическое лицо. Между ними должна быть установлена связь.

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

Рекомендация: если вам не нужно сложное соответствие «один партнер — много юрлиц», убедитесь, что при переносе для каждого контрагента создается партнер с тем же ИНН/КПП и они связаны в соответствующем регистре.

Причина 4: Флаги «Клиент» и «Поставщик» и архивное состояние

Часто пользователи не видят партнеров, потому что в форме списка по умолчанию установлены фильтры. Рассмотрим реквизиты Клиент, Поставщик и ПрочиеОтношения. Если групповой обработкой эти флаги были выставлены некорректно или не во всех записях, партнеры не попадут в специализированные списки (например, в список «Продажи -> Клиенты»).

Кроме того, обратим внимание на реквизит ВАрхиве. Если при конвертации в это поле попало значение Истина, партнер будет скрыт из всех стандартных списков. Проверьте это значение в консоли запросов:


ВЫБРАТЬ
    Ссылка,
    Наименование,
    Клиент,
    Поставщик,
    ВАрхиве
ИЗ
    Справочник.Партнеры
ГДЕ
    ВАрхиве = ИСТИНА

Причина 5: Настройки RLS (Ограничение прав на уровне записей)

Если проблема наблюдается не только у обычных пользователей, но и у администратора (хотя RLS для полных прав часто игнорируется, в некоторых версиях конфигураций бывают исключения), стоит проверить группы доступа. У каждого партнера есть реквизит ГруппаДоступа. Если система настроена на работу с группами доступа, а у перенесенных партнеров это поле пустое, механизмы RLS могут просто «отсекать» эти записи из выборки динамического списка.

Выясним это, временно отключив RLS в настройках профилей групп доступа или заполнив группу доступа по умолчанию для всех новых элементов.

Итоги и план действий

Подводя итог, если вы столкнулись с «невидимостью» партнеров после переноса, выполните следующие шаги:

  1. Проверьте корректность признака ЭтоГруппа у всех записей. Убедитесь, что обычные элементы не стали родителями для других.
  2. Запустите принудительное обновление регистра Иерархия партнеров через модуль менеджера или перезапись объектов.
  3. Убедитесь, что заполнены флаги Клиент или Поставщик, так как без них элементы не отображаются в разделах «Продажи» и «Закупки».
  4. Проверьте состояние флага В архиве — он должен быть выключен.
  5. Обновите Полнотекстовый индекс (через Поддержку и обслуживание), так как поиск в списках часто завязан на него.

Использование этих методов позволит восстановить целостность данных и корректное отображение справочника в интерфейсе 1С.

← На главную