Почему в подчиненном справочнике 1С не открываются группы и не работает иерархия?

Программист 1С v8.3 (Обычные формы)
← На главную

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

Проанализируем причину поведения системы

Когда мы работаем со справочником в обычном приложении, список может находиться в двух состояниях: иерархический просмотр (дерево) и плоский список. Если иерархический просмотр отключен, любая группа (папка) воспринимается платформой как обычная строка данных. Именно поэтому двойной клик по ней не «проваливается» внутрь, а открывает форму элемента. Перетаскивание (Drag-and-Drop) также блокируется, так как в плоском списке нет четкой структуры вложенности, понятной интерфейсу.

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

Шаг 1. Проверка метаданных справочника

Прежде чем приступать к коду, нам необходимо убедиться, что структура справочника в Конфигураторе позволяет использовать иерархию совместно с подчинением. Проверим следующие настройки:

  1. Откроем свойства справочника и перейдем на вкладку Иерархия. Флажок Иерархический справочник должен быть установлен.
  2. Проверим Вид иерархии. Для создания полноценных папок должен быть выбран тип Иерархия групп и элементов.
  3. Перейдем на вкладку Владельцы. В поле Использование подчинения обязательно должно быть выбрано значение Группам и элементам. Если там указано только Элементам, иерархия внутри владельца будет работать некорректно или будет полностью заблокирована.

Шаг 2. Программная активация иерархического просмотра

Рассмотрим ситуацию, когда в интерфейсе кнопка «Иерархический просмотр» отображается серой и нажать ее невозможно. Это стандартное поведение для некоторых версий платформы при работе с подчиненными справочниками. Мы можем «заставить» список отображаться правильно, прописав команду принудительно. Для этого в модуле формы списка найдем процедуру ПриОткрытии и добавим следующий код:


Процедура ПриОткрытии()
    // Устанавливаем режим иерархии принудительно для табличного поля
    ЭлементыФормы.СправочникСписок.ИерархическийПросмотр = Истина;
КонецПроцедуры

Использование этого метода позволяет обойти визуальную блокировку кнопки в командной панели. Теперь при открытии формы справочник сразу будет представлен в виде дерева, и двойной клик по группе начнет выполнять навигацию, а не открытие формы.

Шаг 3. Решение проблемы с существующими данными

Если справочник изначально был «плоским», а затем в него добавили иерархию, старые элементы остаются «сиротами» в корне справочника. Рассмотрим, как правильно перенести их в группы. Важно понимать, что для платформы перенос элемента в группу — это изменение его реквизита Родитель.

Проанализируем ситуацию с подчинением: в подчиненном справочнике у каждой создаваемой ГРУППЫ также должен быть заполнен реквизит Владелец. Если вы создали группу, не указав владельца, а затем открыли список с фильтром по конкретному контрагенту (владельцу), вы просто не увидите эту группу или не сможете поместить в нее элементы.

Для массового исправления данных рекомендуем воспользоваться встроенной обработкой «Групповая обработка справочников и документов» или специализированными инструментами (например, упомянутой в теме ФормаАдминистратора). Нам нужно выполнить два действия:

  1. Убедиться, что у всех папок (групп) заполнен реквизит Владелец.
  2. Для старых элементов интерактивно или программно установить реквизит Родитель, выбрав нужную группу.

Шаг 4. Обновление форм в обычном приложении

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

  1. Зайдем в Конфигуратор.
  2. Удалим текущую форму списка справочника (предварительно сохранив важный код из ее модуля).
  3. Создадим новую форму списка с помощью конструктора.
  4. Платформа автоматически перестроит командную панель и табличное поле, учитывая новые свойства иерархии.

Особенности работы Drag-and-Drop

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

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

← На главную