Справочники и Данные · 11 мин
Как сделать иерархический справочник в 1С
Как создать иерархический справочник в 1С: виды иерархии, настройка в конфигураторе, работа с группами и элементами, типовые ошибки и проверка результата.
Иерархический справочник нужен, когда элементы данных естественно группируются: номенклатура по товарным группам, контрагенты по регионам, статьи затрат по направлениям. Без иерархии список из тысяч позиций превращается в плоскую простыню, в которой сложно искать и легко плодить дубли. В 1С иерархия включается одним свойством в конфигураторе, но от выбора её вида зависит поведение отчётов, подборов и обменов данными.
В этой инструкции разберём, как включить иерархию в конфигураторе, какой вид иерархии выбрать, как создавать группы и элементы в режиме предприятия, как обращаться к иерархии из кода и какие ошибки встречаются чаще всего. Материал подходит для платформы 1С:Предприятие 8.3 и типовых конфигураций на управляемых формах.
Что такое иерархический справочник и когда он нужен
Справочник в 1С — это объект конфигурации для хранения условно-постоянной нормативно-справочной информации: товаров, контрагентов, сотрудников, складов. Иерархия добавляет к справочнику связь «родитель — потомок»: каждый элемент получает поле «Родитель», указывающее на группу или элемент верхнего уровня.
Иерархия оправдана, когда выполняется хотя бы одно условие: элементов много (сотни и тысячи), их нужно группировать в отчётах, либо пользователи подбирают значения через дерево. Если справочник содержит десяток позиций — например, «Способы доставки» — иерархия только усложнит интерфейс без практической пользы.
Два вида иерархии: какой выбрать
Платформа предлагает два вида иерархии, и выбор делается один раз при проектировании — сменить вид позже можно, но это потребует проверки всех запросов и отчётов, использующих справочник.
Иерархия групп и элементов — классический вариант «папки и файлы». Группы служат только для группировки и обычно не несут собственных данных; элементы лежат внутри групп. Именно так устроен справочник «Номенклатура» в типовых конфигурациях. Выбирайте этот вид, если группы — это чисто классификатор.
Иерархия элементов — здесь любой элемент может быть родителем другого элемента, отдельных «папок» нет. Типичный пример — справочник «Подразделения», где отдел подчинён управлению, а управление — департаменту, и каждый уровень является полноценным объектом учёта. Выбирайте этот вид, когда родитель сам участвует в документах.
Сравнение видов иерархии
Группы — только папки для классификации, элементы не могут содержать потомков. Подходит для номенклатуры, статей, касс. Ограничение: группу нельзя выбрать как значение в документе, если это запрещено настройкой.
Любой элемент может иметь потомков и сам быть значением в документах. Подходит для подразделений, видов номенклатуры с вложенностью. Ограничение: нет визуального отличия «папки» от элемента, отчёты по группам строятся сложнее.
Включение иерархии в конфигураторе
Откройте конфигуратор, найдите нужный справочник в дереве конфигурации (ветка «Справочники») и откройте палитру свойств по правому клику. Если справочник ещё не создан, добавьте новый объект и задайте имя и синоним — например, «ТоварныеГруппы» и «Товарные группы».
В палитре свойств на вкладке «Основные» установите флаг «Иерархический» и ниже выберите «Вид иерархии»: «Иерархия групп и элементов» или «Иерархия элементов». Дополнительно доступны параметры: «Ограничение количества уровней» (по умолчанию 10, можно уменьшить для самоконтроля) и «Помещать группу в ...» — определяет, куда по умолчанию попадает новый элемент.
После изменения свойств обновите конфигурацию базы данных (F7 или «Конфигурация — Обновить конфигурацию базы данных»). Для пустого или нового справочника реструктуризация пройдёт быстро. Если справочник уже содержит данные, платформа добавит поле «Родитель» существующим элементам — они окажутся в корне.
- 1Откройте конфигуратор и найдите справочник в дереве конфигурации
- 2В палитре свойств установите «Иерархический» = Истина
- 3Выберите вид иерархии: «Группы и элементы» или «Элементы»
- 4При необходимости задайте ограничение количества уровней
- 5Обновите конфигурацию базы данных (F7)
- 6Проверьте в режиме предприятия: появилась кнопка создания группы
Работа с группами и элементами в режиме предприятия
После обновления конфигурации откройте справочник в режиме 1С:Предприятие. В списке появится кнопка «Создать группу» (обычно рядом с «Создать»). Группа создаётся так же, как элемент: укажите наименование, например «Материалы», и сохраните. Внутри группы можно создавать вложенные группы до предела уровней.
Чтобы поместить элемент в группу, используйте один из способов: создайте элемент, находясь внутри нужной группы; перетащите элемент мышью в дереве; либо откройте карточку элемента и заполните поле «Родитель» (в типовых интерфейсах оно может называться «Группа»). Для массового перемещения выделите несколько элементов через Ctrl и перетащите их разом.
Отображение списка переключается между режимами «Дерево», «Иерархический список» и «Список» (кнопка «Ещё — Режим просмотра» в управляемых формах). Режим «Список» удобен для поиска по наименованию: он показывает все элементы без учёта вложенности. Режим «Дерево» — для навигации по структуре.
Обращение к иерархии из кода и запросов
При программной работе родитель задаётся через свойство Родитель объекта. Пример создания группы и элемента внутри неё:
НоваяГруппа = Справочники.Номенклатура.СоздатьГруппу();
НоваяГруппа.Наименование = "Материалы";
НоваяГруппа.Записать();
НовыйЭлемент = Справочники.Номенклатура.СоздатьЭлемент();
НовыйЭлемент.Наименование = "Краска белая";
НовыйЭлемент.Родитель = НоваяГруппа.Ссылка;
НовыйЭлемент.Записать();
В запросах для отбора всех элементов, входящих в группу с учётом вложенности, используется конструкция В ИЕРАРХИИ(&Группа). Это стандартный приём для отчётов «по товарной группе с подгруппами»:
ВЫБРАТЬ Номенклатура.Ссылка
ИЗ Справочник.Номенклатура КАК Номенклатура
ГДЕ Номенклатура.Ссылка В ИЕРАРХИИ(&Группа)
Проверить, является ли ссылка группой, можно свойством ЭтоГруппа — оно доступно только у справочников с видом иерархии «Группы и элементы». При программном создании элементов не забывайте проверять это свойство, иначе в отборы могут попасть группы, которые не должны участвовать в документах.
Если отчёт по группе неожиданно показывает только часть позиций, чаще всего причина в том, что в запросе использовано равенство «Родитель = &Группа» вместо «В ИЕРАРХИИ(&Группа)» — тогда учитываются только элементы первого уровня вложенности.
Проверка результата и типичные ошибки
После настройки убедитесь, что справочник ведёт себя как ожидалось. Контрольные точки ниже помогают отличить корректную настройку от проблемной.
Как проверить результат
Есть кнопка «Создать группу», группа отображается со значком папки
Кнопки нет — флаг «Иерархический» не установлен или конфигурация БД не обновлена
Элемент перетаскивается и отображается внутри группы
Перетаскивание не работает — проверьте режим просмотра (нужен «Дерево») и права пользователя
В отбор попадают элементы всех уровней вложенности
Видны только элементы первого уровня — в запросе нет В ИЕРАРХИИ
В поле ввода выбираются только элементы, группы недоступны (для вида «Группы и элементы»)
Можно выбрать группу — проверьте параметры выбора поля ввода
Ограничения и альтернативы иерархии
Иерархия — не единственный способ группировки. Если одному элементу нужно принадлежать сразу нескольким классификациям (товар входит и в «Акции», и в «Сезонные», и в «Маржа»), древовидная структура не подходит: у элемента только один родитель. В этом случае используют дополнительные реквизиты, свойства или регистры сведений для связи «многие ко многим».
Ещё одна альтернатива — отдельный справочник-классификатор (например, «Виды номенклатуры») со ссылкой на него в основном справочнике. Такой подход проще для обменов и гибче для отчётности, но не даёт визуального дерева в списке. Выбирайте иерархию, когда структура действительно древовидная и стабильная, а классификация по реквизиту — когда группировок несколько или они часто меняются.
Как выбрать подход
Часто задаваемые вопросы
Можно ли сделать справочник иерархическим, если в нём уже есть данные?
Да. Установите флаг «Иерархический» и обновите конфигурацию базы данных. Все существующие элементы окажутся в корне, после чего их можно вручную или обработкой разложить по группам. Перед изменением сделайте резервную копию и проверьте отчёты и обмены, использующие этот справочник.
Как программно определить, группа это или элемент?
У ссылки справочника с видом иерархии «Группы и элементы» есть свойство ЭтоГруппа: Справочники.Номенклатура.НайтиПоНаименованию("Материалы").ЭтоГруппа. В запросе аналогично доступно поле «ЭтоГруппа». Для вида «Иерархия элементов» такого свойства нет — там различают только наличие потомков.
Почему в поле выбора документа видны группы, а не только элементы?
Проверьте свойство «Выбор групп и элементов» у поля ввода формы: значение «Группы» или «Группы и элементы» разрешает выбирать папки. Для большинства документов правильное значение — «Элементы», тогда группы будут служить только для навигации в списке выбора.
Как перенести структуру групп при обмене между базами?
Поле «Родитель» — обычная ссылка, оно переносится стандартными средствами обмена (конвертация данных, планы обмена). Важно, чтобы группы выгружались раньше или вместе с элементами и совпадали ключи поиска (GUID или наименование), иначе элементы потеряют родителя и попадут в корень.
Сколько уровней вложенности допустимо?
По умолчанию платформа ограничивает глубину десятью уровнями, значение можно изменить в свойствах справочника. На практике больше 5–7 уровней использовать не стоит: глубокое дерево неудобно для навигации и замедляет визуальный поиск. Избыточную вложенность лучше заменить реквизитами-классификаторами.
Можно ли запретить пользователям создавать группы, оставив только элементы?
Да, через роли и права доступа: настройте раздельные права на добавление групп и элементов либо ограничьте состав команд формы списка в расширении конфигурации. Также можно контролировать создание групп программно в обработчике «ПередЗаписью» модуля объекта.
Что важно запомнить
Иерархия включается флагом «Иерархический» в свойствах справочника; вид «Группы и элементы» подходит для классификаторов, «Иерархия элементов» — для объектов, где родитель сам участвует в учёте. Для отборов по ветке дерева в запросах используйте В ИЕРАРХИИ, а перед изменением настроек на справочнике с данными делайте резервную копию.