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

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

Виды иерархии в системе 1С:Предприятие

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

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

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

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

Иерархия справочников: два базовых вида

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

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

При иерархии элементов любой элемент может одновременно быть и родителем, и полноценной записью. Классический пример — справочник «Подразделения»: элемент «Завод» является самостоятельным подразделением и одновременно родителем для элементов «Цех №1», «Цех №2». Другой пример — «Сотрудники», где руководитель является родителем подчинённых.

Сравнение видов иерархии справочника

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

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

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

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

Без иерархии

Плоский список: валюты, виды документов, единицы измерения. Проще структура, быстрее выборки, но нет группировки.

Как выбрать вид иерархии для справочника

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

Дополнительные критерии:

  • Отчёты с группировкой. Если нужен отчёт «Остатки по группам номенклатуры», удобнее иерархия групп — группировка по родителю строится напрямую.
  • Наследование реквизитов. При иерархии элементов часто требуется, чтобы реквизит (например, «Куратор») наследовался от родителя — это реализуется программно, но логически естественно.
  • Ограничение вложенности. В конфигураторе задаётся «Количество уровней иерархии». Значение 0 означает неограниченную вложенность. Для номенклатуры обычно хватает 3–7 уровней, для подразделений — 3–5.
  • Права доступа. RLS-ограничения часто настраиваются по группам справочника (например, менеджер видит только свою группу контрагентов) — это проще при иерархии групп.
Маршрут решения

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

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

Подчинённые справочники: иерархия через владельца

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

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

Типовые пары «владелец — подчинённый» в типовых конфигурациях:

  • Контрагенты → Договоры контрагентов;
  • Номенклатура → Единицы измерения, Характеристики номенклатуры;
  • Организации → Банковские счета;
  • Контрагенты → Контактные лица.

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

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

Иерархия применяется не только в справочниках. В планах счетов она реализована через субсчета: счёт 10 «Материалы» имеет субсчета 10.01, 10.11 и т.д. Здесь действует особое правило: если у счёта есть субсчета, проводки напрямую по счёту-родителю обычно запрещены — движения формируются только по конечным субсчетам, а итоги по родителю собираются автоматически. Это контролируется признаком «Запретить использовать в проводках».

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

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

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

Документы в 1С не имеют древовидной иерархии внутри одного вида, но между разными видами документов существует структура подчинённости: «Заказ покупателя» → «Реализация товаров и услуг» → «Счёт-фактура выданный». Связь строится через реквизиты основания (например, «Документ основание») и механизм ввода на основании.

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

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

Работа с иерархией в запросах и коде

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

Примеры типовых конструкций:

// Отбор элементов, входящих в группу (с учётом вложенных)

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

// Итоги с иерархией

ИТОГИ СУММА(Количество) ПО Номенклатура ИЕРАРХИЯ

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

Если Элемент.ПринадлежитЭлементу(ГруппаОбувь) Тогда

// элемент находится в группе на любом уровне

КонецЕсли;

Типичные ошибки
01
Сравнение Родитель = &Группа в запросе вместо В ИЕРАРХИИ — находятся только элементы первого уровня, вложенные группы теряются
02
Выбор иерархии групп и элементов для подразделений — потом оказывается, что папку нельзя указать в документе как подразделение
03
Игнорирование признака ЭтоГруппа при обходе справочника — группы попадают в обработку как обычные элементы
04
Ограничение уровней иерархии меньше реальной глубины данных — пользователи не могут создать нужную вложенность
05
Перенос элементов между группами без учёта отчётов по правам RLS — у пользователей пропадает или появляется доступ

Как проверить и изменить настройки иерархии

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

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

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

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

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

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

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

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

Плоский список при включённой иерархии — проверьте настройку формы списка

Выбор в документе
Норма

Группы недоступны для выбора (иерархия групп и элементов)

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

В документ можно выбрать папку — вероятно, выбран вид «иерархия элементов»

Отчёт по группе
Норма

Отбор по группе захватывает вложенные элементы

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

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

Создание подчинённого элемента
Норма

Владелец заполняется автоматически и обязателен

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

Элемент сохраняется без владельца — проверьте настройку владельцев

FAQ: частые вопросы об иерархии в 1С

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

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

Чем подчинённый справочник отличается от иерархического?

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

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

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

Почему в форме списка не отображается дерево, хотя справочник иерархический?

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

Есть ли иерархия у регистров сведений и накопления?

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

Что делать, если не хватает уровней иерархии?

Увеличьте значение «Количество уровней иерархии» в свойствах справочника или установите 0 для неограниченной вложенности. Учтите, что глубокая вложенность замедляет запросы с ИЕРАРХИИ и затрудняет навигацию: на практике редко нужно больше 5–7 уровней. Если структура глубже, возможно, часть уровней стоит вынести в отдельные справочники или реквизиты.

Итог

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

В 1С существует несколько видов иерархии: иерархия групп и элементов (родитель — только папка), иерархия элементов (родитель — полноценная запись), подчинённые справочники через владельца, а также иерархия в планах счетов, видов характеристик и структура подчинённости документов. Вид иерархии выбирают до наполнения базы: изменение на рабочих данных требует копии и проверки отчётов. В запросах для выборки с учётом вложенности используйте В ИЕРАРХИИ и ИТОГИ ПО ... ИЕРАРХИЯ.