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

Разработка и Конфигурация · 9 мин

Какие виды иерархии существуют в системе 1С

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

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

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

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

Иерархия в справочниках: группы и элементы

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

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

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

Подчинённые справочники: иерархия между объектами

Второй вид иерархии — подчинение одного справочника другому. Классический пример: справочник «Договоры контрагентов» подчинён справочнику «Контрагенты». Каждый договор жёстко привязан к владельцу через поле «Владелец» (Owner) и не существует сам по себе.

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

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

Иерархия в планах видов характеристик и счетов

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

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

Иерархия в запросах и отчётах

Даже если данные хранятся линейно, иерархию можно построить при выборке. В языке запросов для этого служит конструкция «ИТОГИ ПО» с указанием иерархического поля, а также оператор «В ИЕРАРХИИ», который отбирает элементы, вложенные в заданную группу на любую глубину.

В системе компоновки данных (СКД) иерархические группировки настраиваются визуально: в настройках отчёта добавляется группировка по полю с типом «Иерархия». Это позволяет строить отчёты вида «Продажи по группам номенклатуры с раскрытием вложенности» без программирования.

bsl
ВЫБРАТЬ
	Номенклатура.Ссылка КАК Товар
ИЗ
	Справочник.Номенклатура КАК Номенклатура
ГДЕ
	Номенклатура.Ссылка В ИЕРАРХИИ(&Группа)

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

Иерархия метаданных и подсистем

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

Иерархия подсистем влияет на командный интерфейс приложения: вложенные подсистемы образуют разделы и подразделы панели навигации. Это также используется при настройке ролей — права можно назначать с учётом принадлежности объектов к подсистемам.

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

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

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

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

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

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

Подчинённые справочники

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

Иерархия в запросах и СКД

Аналитическая группировка в отчётах без изменения структуры данных. Требует внимания к производительности.

Как выбрать вид иерархии и проверить настройку

При проектировании исходите из природы данных. Если нужно классифицировать однотипные объекты — выбирайте иерархический справочник. Если объекты разных типов и один принадлежит другому — подчинённый справочник. Если иерархия нужна только для анализа — не меняйте структуру данных, используйте группировки в СКД.

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

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

Как выбрать вид иерархии

Нужно группировать однотипные объекты в папкиВключите иерархичность справочника с видом «Иерархия групп и элементов»
Любой объект может подчиняться другому такому жеИспользуйте вид «Иерархия элементов»
Объект принадлежит объекту другого типаНастройте подчинённый справочник через свойство «Владельцы»
Иерархия нужна только в отчётахОставьте данные линейными и используйте иерархические группировки СКД
Типичные ошибки
01
Использование подчинённого справочника вместо иерархического — ломает типовые отчёты и групповые итоги
02
Изменение вида иерархии в заполненной базе без проверки данных — элементы с дочерними записями вызывают ошибки
03
Перенос элементов между группами без учёта заполненных реквизитов по умолчанию — проводки и отчёты начинают считаться иначе
04
Построение отчётов с ИТОГИ ПО по неиндексированным полям — резкое падение скорости на больших базах
Контрольные точки

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

Отображение списка
Норма

Список показывается деревом с раскрывающимися группами

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

Все элементы выведены плоским списком — проверьте вид иерархии и настройки формы

Отбор по группе
Норма

Условие «В ИЕРАРХИИ» возвращает элементы всех уровней вложенности

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

Отбираются только элементы первого уровня — использовано равенство родителю вместо иерархического оператора

Итоги в отчёте
Норма

Итог по группе равен сумме итогов вложенных элементов

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

Итоги дублируются или занижены — проверьте тип группировки в СКД

Частые вопросы

Можно ли изменить вид иерархии справочника в рабочей базе?

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

Чем «В ИЕРАРХИИ» отличается от сравнения по полю «Родитель»?

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

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

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

Есть ли ограничение на глубину иерархии?

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

Как построить отчёт с итогами по всем уровням иерархии?

В СКД добавьте группировку по нужному полю и в её свойствах укажите тип группировки «Иерархия». В языке запросов используйте «ИТОГИ ПО Поле ИЕРАРХИЯ». Оба способа дадут итоги на каждом уровне дерева.

Итог

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

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