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

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

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

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

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

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

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

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

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

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

Иерархия не нужна, если справочник технологический и содержит фиксированный короткий перечень значений. Лишние уровни вложенности вредят: пользователи начинают путаться, где искать элемент, а в отчётах появляются промежуточные итоги, которые никому не нужны.

Виды иерархии в 1С: список или группы и элементы

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

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

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

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

Иерархия списка

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

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

Подходит для классификации данных: номенклатура, контрагенты, статьи. Группы — только папки, в документы подставляются только элементы. Не подходит, если «родитель» сам является рабочим объектом.

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

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

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

Ограничение количества уровней стоит задавать осознанно. Если бизнес-логика предполагает ровно три уровня классификации, ограничение защитит справочник от случайного создания четвёртого и пятого уровня, которые потом придётся вычищать. Если структура заранее неизвестна, ограничение лучше не включать — снять его позже можно безболезненно, а вот превышение лимита в пользовательском режиме блокирует работу.

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

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

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

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

Для массового заполнения удобнее использовать обработки загрузки из табличных документов (в типовых конфигурациях — «Загрузка данных из файла»). При загрузке иерархия обычно задаётся колонкой с путём группы, например «Материалы/Металлопрокат/Трубы». Перед загрузкой большого объёма проверьте механизм на 5–10 записях и убедитесь, что группы создаются корректно и без дублей.

Перенос элементов между группами и реорганизация структуры

Перенос выполняется командой «Переместить в группу» (в типовых — через меню «Ещё» или по Ctrl+Shift+M) либо перетаскиванием мышью в дереве. Можно выделить сразу несколько элементов и перенести их пакетно. Перенос безопасен для учёта: ссылка на элемент не меняется, все документы и отчёты продолжают ссылаться на тот же объект, меняется только его положение в дереве.

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

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

Проверка результата и контроль структуры

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

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

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

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

Дерево групп в форме списка
Норма

Группы раскрываются, вложенность соответствует задуманной структуре

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

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

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

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

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

В документ попадают группы — значит вид иерархии выбран неверно или форма выбора настроена некорректно

Отчёт с группировкой по родителю
Норма

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

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

Часть данных попадает в строку с пустой группой — элементы не распределены

Программная работа с иерархией

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

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

НовыйЭлемент = Справочники.Номенклатура.СоздатьЭлемент();
НовыйЭлемент.Наименование = "Труба 50";
НовыйЭлемент.Родитель = НоваяГруппа.Ссылка;
НовыйЭлемент.Записать();

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

FAQ: частые вопросы об иерархических справочниках

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

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

Как ограничить количество уровней вложенности?

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

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

Такое возможно, если выбран вид иерархии «Список» — там все объекты равнозначны. Для вида «Группы и элементы» стандартные формы выбора по умолчанию фильтруют группы, но в самописных формах и обработках отбор по «ЭтоГруппа = Ложь» нужно устанавливать явно.

Что произойдёт с документами при переносе элемента в другую группу?

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

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

Проще всего запросом с условием «Родитель = &ПустаяСсылка» и «ЭтоГруппа = Ложь» через консоль запросов, либо в форме списка отбором по полю «Родитель» с пустым значением. Найденные элементы выделите и перенесите в нужные группы командой «Переместить в группу».

Можно ли сделать разную иерархию для разных пользователей?

Штатно нет: структура дерева едина для всей базы. Если разным отделам нужны разные классификации одних и тех же объектов, используйте дополнительные реквизиты, свойства или отдельный регистр соответствия, а основную иерархию оставьте нейтральной.

Итог

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

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