К статье
Практический материал

Справочники и Данные · 11 мин

Как сделать иерархический справочник в 1С

Как создать иерархический справочник в 1С: виды иерархии, настройка в конфигураторе, работа с группами и элементами, типовые ошибки и проверка результата.

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

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

Что такое иерархический справочник и когда он нужен

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

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

Два вида иерархии: какой выбрать

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

Иерархия групп и элементов — классический вариант «папки и файлы». Группы служат только для группировки и обычно не несут собственных данных; элементы лежат внутри групп. Именно так устроен справочник «Номенклатура» в типовых конфигурациях. Выбирайте этот вид, если группы — это чисто классификатор.

Иерархия элементов — здесь любой элемент может быть родителем другого элемента, отдельных «папок» нет. Типичный пример — справочник «Подразделения», где отдел подчинён управлению, а управление — департаменту, и каждый уровень является полноценным объектом учёта. Выбирайте этот вид, когда родитель сам участвует в документах.

Сравнение видов иерархии

Группы и элементы

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

Иерархия элементов

Любой элемент может иметь потомков и сам быть значением в документах. Подходит для подразделений, видов номенклатуры с вложенностью. Ограничение: нет визуального отличия «папки» от элемента, отчёты по группам строятся сложнее.

Включение иерархии в конфигураторе

Откройте конфигуратор, найдите нужный справочник в дереве конфигурации (ветка «Справочники») и откройте палитру свойств по правому клику. Если справочник ещё не создан, добавьте новый объект и задайте имя и синоним — например, «ТоварныеГруппы» и «Товарные группы».

В палитре свойств на вкладке «Основные» установите флаг «Иерархический» и ниже выберите «Вид иерархии»: «Иерархия групп и элементов» или «Иерархия элементов». Дополнительно доступны параметры: «Ограничение количества уровней» (по умолчанию 10, можно уменьшить для самоконтроля) и «Помещать группу в ...» — определяет, куда по умолчанию попадает новый элемент.

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

Порядок включения иерархии
  1. 1
    Откройте конфигуратор и найдите справочник в дереве конфигурации
  2. 2
    В палитре свойств установите «Иерархический» = Истина
  3. 3
    Выберите вид иерархии: «Группы и элементы» или «Элементы»
  4. 4
    При необходимости задайте ограничение количества уровней
  5. 5
    Обновите конфигурацию базы данных (F7)
  6. 6
    Проверьте в режиме предприятия: появилась кнопка создания группы

Работа с группами и элементами в режиме предприятия

После обновления конфигурации откройте справочник в режиме 1С:Предприятие. В списке появится кнопка «Создать группу» (обычно рядом с «Создать»). Группа создаётся так же, как элемент: укажите наименование, например «Материалы», и сохраните. Внутри группы можно создавать вложенные группы до предела уровней.

Чтобы поместить элемент в группу, используйте один из способов: создайте элемент, находясь внутри нужной группы; перетащите элемент мышью в дереве; либо откройте карточку элемента и заполните поле «Родитель» (в типовых интерфейсах оно может называться «Группа»). Для массового перемещения выделите несколько элементов через Ctrl и перетащите их разом.

Отображение списка переключается между режимами «Дерево», «Иерархический список» и «Список» (кнопка «Ещё — Режим просмотра» в управляемых формах). Режим «Список» удобен для поиска по наименованию: он показывает все элементы без учёта вложенности. Режим «Дерево» — для навигации по структуре.

Обращение к иерархии из кода и запросов

При программной работе родитель задаётся через свойство Родитель объекта. Пример создания группы и элемента внутри неё:

НоваяГруппа = Справочники.Номенклатура.СоздатьГруппу();

НоваяГруппа.Наименование = "Материалы";

НоваяГруппа.Записать();

НовыйЭлемент = Справочники.Номенклатура.СоздатьЭлемент();

НовыйЭлемент.Наименование = "Краска белая";

НовыйЭлемент.Родитель = НоваяГруппа.Ссылка;

НовыйЭлемент.Записать();

В запросах для отбора всех элементов, входящих в группу с учётом вложенности, используется конструкция В ИЕРАРХИИ(&Группа). Это стандартный приём для отчётов «по товарной группе с подгруппами»:

ВЫБРАТЬ Номенклатура.Ссылка

ИЗ Справочник.Номенклатура КАК Номенклатура

ГДЕ Номенклатура.Ссылка В ИЕРАРХИИ(&Группа)

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

Если отчёт по группе неожиданно показывает только часть позиций, чаще всего причина в том, что в запросе использовано равенство «Родитель = &Группа» вместо «В ИЕРАРХИИ(&Группа)» — тогда учитываются только элементы первого уровня вложенности.
ПЗ
Практическое замечание

Проверка результата и типичные ошибки

После настройки убедитесь, что справочник ведёт себя как ожидалось. Контрольные точки ниже помогают отличить корректную настройку от проблемной.

Контрольные точки

Как проверить результат

Создание группы в режиме предприятия
Норма

Есть кнопка «Создать группу», группа отображается со значком папки

Тревожный признак

Кнопки нет — флаг «Иерархический» не установлен или конфигурация БД не обновлена

Перемещение элемента в группу
Норма

Элемент перетаскивается и отображается внутри группы

Тревожный признак

Перетаскивание не работает — проверьте режим просмотра (нужен «Дерево») и права пользователя

Отчёт по группе с вложенными группами
Норма

В отбор попадают элементы всех уровней вложенности

Тревожный признак

Видны только элементы первого уровня — в запросе нет В ИЕРАРХИИ

Выбор значения в документе
Норма

В поле ввода выбираются только элементы, группы недоступны (для вида «Группы и элементы»)

Тревожный признак

Можно выбрать группу — проверьте параметры выбора поля ввода

Типичные ошибки
01
Выбор вида «Иерархия элементов» для классификатора товаров — в документах можно случайно выбрать «родительскую» позицию, которая не является реальным товаром
02
Перенос данных обработкой без заполнения поля «Родитель» — вся структура групп теряется, элементы сваливаются в корень
03
Создание дублей групп с похожими наименованиями («Материалы» и «Материал») — элементы расползаются по разным веткам, отчёты расходятся
04
Снятие флага «Иерархический» на справочнике с данными без анализа — запросы с В ИЕРАРХИИ и формы с деревом перестают работать
05
Превышение разумной глубины вложенности (более 5–7 уровней) — пользователям трудно ориентироваться, поиск замедляется

Ограничения и альтернативы иерархии

Иерархия — не единственный способ группировки. Если одному элементу нужно принадлежать сразу нескольким классификациям (товар входит и в «Акции», и в «Сезонные», и в «Маржа»), древовидная структура не подходит: у элемента только один родитель. В этом случае используют дополнительные реквизиты, свойства или регистры сведений для связи «многие ко многим».

Ещё одна альтернатива — отдельный справочник-классификатор (например, «Виды номенклатуры») со ссылкой на него в основном справочнике. Такой подход проще для обменов и гибче для отчётности, но не даёт визуального дерева в списке. Выбирайте иерархию, когда структура действительно древовидная и стабильная, а классификация по реквизиту — когда группировок несколько или они часто меняются.

Маршрут решения

Как выбрать подход

Элементы образуют одну устойчивую древовидную классификациюВключите иерархию вида «Группы и элементы»
Родительский объект сам участвует в документах (подразделения, сотрудники с подчинёнными)Используйте «Иерархию элементов»
Элемент должен входить в несколько групп одновременноОткажитесь от иерархии, используйте реквизит или регистр сведений для классификации
Группировка нужна только для отчётов, а в списке дерево не требуетсяДостаточно ссылочного реквизита на справочник-классификатор

Часто задаваемые вопросы

Можно ли сделать справочник иерархическим, если в нём уже есть данные?

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

Как программно определить, группа это или элемент?

У ссылки справочника с видом иерархии «Группы и элементы» есть свойство ЭтоГруппа: Справочники.Номенклатура.НайтиПоНаименованию("Материалы").ЭтоГруппа. В запросе аналогично доступно поле «ЭтоГруппа». Для вида «Иерархия элементов» такого свойства нет — там различают только наличие потомков.

Почему в поле выбора документа видны группы, а не только элементы?

Проверьте свойство «Выбор групп и элементов» у поля ввода формы: значение «Группы» или «Группы и элементы» разрешает выбирать папки. Для большинства документов правильное значение — «Элементы», тогда группы будут служить только для навигации в списке выбора.

Как перенести структуру групп при обмене между базами?

Поле «Родитель» — обычная ссылка, оно переносится стандартными средствами обмена (конвертация данных, планы обмена). Важно, чтобы группы выгружались раньше или вместе с элементами и совпадали ключи поиска (GUID или наименование), иначе элементы потеряют родителя и попадут в корень.

Сколько уровней вложенности допустимо?

По умолчанию платформа ограничивает глубину десятью уровнями, значение можно изменить в свойствах справочника. На практике больше 5–7 уровней использовать не стоит: глубокое дерево неудобно для навигации и замедляет визуальный поиск. Избыточную вложенность лучше заменить реквизитами-классификаторами.

Можно ли запретить пользователям создавать группы, оставив только элементы?

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

Итог

Что важно запомнить

Иерархия включается флагом «Иерархический» в свойствах справочника; вид «Группы и элементы» подходит для классификаторов, «Иерархия элементов» — для объектов, где родитель сам участвует в учёте. Для отборов по ветке дерева в запросах используйте В ИЕРАРХИИ, а перед изменением настроек на справочнике с данными делайте резервную копию.