Справочники и Данные · 13 мин
Виды иерархии в системе 1С:Предприятие
Разбираем виды иерархии в системе 1С:Предприятие: иерархия групп и элементов справочников, подчинённые справочники, иерархия документов и планов счетов.
Иерархия в 1С:Предприятие — это способ организации данных в виде дерева, где элементы связаны отношением «родитель — потомок». Она встречается в справочниках, документах, планах счетов, планах видов характеристик и планах видов расчёта. Знание видов иерархии критично при проектировании конфигурации: от выбранного типа зависят возможности выборки, группировки отчётов, наследование значений и права доступа.
Ошибка на этапе проектирования — например, создание справочника без иерархии там, где она нужна, — позже оборачивается доработками конфигурации, переносом данных и переписыванием запросов. Поэтому вид иерархии выбирают до наполнения базы данными, исходя из того, как будут строиться отчёты и отборы.
В этой статье разберём все основные виды иерархии в 1С, их отличия, типовые сценарии применения и ограничения, а также покажем, как проверить и изменить настройки иерархии в конфигураторе.
Иерархия справочников: два базовых вида
Справочники — главный носитель иерархии в 1С. В конфигураторе на закладке «Иерархия» объекта доступны два принципиально разных вида: иерархия групп и элементов и иерархия элементов. Разница между ними — в том, может ли элемент-родитель сам являться полноценной записью с данными.
При иерархии групп и элементов справочник делится на два типа записей: группы (папки) и элементы. Группа служит только для классификации — например, папка «Обувь» в справочнике «Номенклатура». Её нельзя выбрать в документе как товар, она не имеет собственных реквизитов с прикладным смыслом (хотя технически хранит код и наименование). Элементы внутри группы — это уже рабочие записи.
При иерархии элементов любой элемент может одновременно быть и родителем, и полноценной записью. Классический пример — справочник «Подразделения»: элемент «Завод» является самостоятельным подразделением и одновременно родителем для элементов «Цех №1», «Цех №2». Другой пример — «Сотрудники», где руководитель является родителем подчинённых.
Сравнение видов иерархии справочника
Подходит для классификации: номенклатура, контрагенты, статьи затрат. Группу нельзя выбрать в документе как значение — это только папка.
Подходит, когда родитель сам является рабочей записью: подразделения, сотрудники, проекты. Родителя можно указывать в документах.
Плоский список: валюты, виды документов, единицы измерения. Проще структура, быстрее выборки, но нет группировки.
Как выбрать вид иерархии для справочника
Правило выбора простое: если родительский уровень — это только классификатор без собственного прикладного смысла, используйте иерархию групп и элементов. Если родитель — самостоятельная сущность, участвующая в документах и отчётах, — иерархию элементов.
Дополнительные критерии:
- Отчёты с группировкой. Если нужен отчёт «Остатки по группам номенклатуры», удобнее иерархия групп — группировка по родителю строится напрямую.
- Наследование реквизитов. При иерархии элементов часто требуется, чтобы реквизит (например, «Куратор») наследовался от родителя — это реализуется программно, но логически естественно.
- Ограничение вложенности. В конфигураторе задаётся «Количество уровней иерархии». Значение 0 означает неограниченную вложенность. Для номенклатуры обычно хватает 3–7 уровней, для подразделений — 3–5.
- Права доступа. RLS-ограничения часто настраиваются по группам справочника (например, менеджер видит только свою группу контрагентов) — это проще при иерархии групп.
Как выбрать вид иерархии
Подчинённые справочники: иерархия через владельца
Отдельный вид иерархии — связь двух справочников отношением «владелец — подчинённый». Например, справочник «Договоры контрагентов» подчинён справочнику «Контрагенты»: каждый договор обязан иметь владельца-контрагента, и в интерфейсе договоры показываются отфильтрованными по выбранному контрагенту.
Настройка выполняется в конфигураторе на закладке «Владельцы» подчинённого справочника. После этого у каждого элемента появляется обязательный реквизит «Владелец», а в формах списка — автоматический отбор по владельцу при открытии из карточки родителя.
Типовые пары «владелец — подчинённый» в типовых конфигурациях:
- Контрагенты → Договоры контрагентов;
- Номенклатура → Единицы измерения, Характеристики номенклатуры;
- Организации → Банковские счета;
- Контрагенты → Контактные лица.
Изменение владельца у существующего элемента возможно, но делайте это осознанно: записи регистров и документов, ссылающиеся на подчинённый элемент, при этом не перепроводятся, и отчёты могут показать данные в новом разрезе. Движения по регистрам хранят ссылку на сам элемент, поэтому физически данные не потеряются, но логика отчётов, построенная через владельца, изменится.
Иерархия в планах счетов, видах характеристик и расчёта
Иерархия применяется не только в справочниках. В планах счетов она реализована через субсчета: счёт 10 «Материалы» имеет субсчета 10.01, 10.11 и т.д. Здесь действует особое правило: если у счёта есть субсчета, проводки напрямую по счёту-родителю обычно запрещены — движения формируются только по конечным субсчетам, а итоги по родителю собираются автоматически. Это контролируется признаком «Запретить использовать в проводках».
В планах видов характеристик иерархия работает так же, как в справочниках, — с выбором вида (группы и элементы или элементы). Типовое применение — классификация дополнительных реквизитов и свойств объектов.
В планах видов расчёта существует особый вид связей — зависимости «ведущие — зависимые» и «вытесняющие». Формально это не древовидная иерархия, но логически близкий механизм: один вид расчёта влияет на расчёт другого (например, «Отпуск» вытесняет «Оклад» за период). Эти связи задаются на закладках «Зависимость от базы» и «Вытесняющие» и учитываются механизмом расчёта периодических начислений.
Иерархия документов и структура подчинённости
Документы в 1С не имеют древовидной иерархии внутри одного вида, но между разными видами документов существует структура подчинённости: «Заказ покупателя» → «Реализация товаров и услуг» → «Счёт-фактура выданный». Связь строится через реквизиты основания (например, «Документ основание») и механизм ввода на основании.
Структура подчинённости отображается в интерфейсе кнопкой «Структура подчинённости» в форме документа и показывает цепочку связанных документов вверх и вниз. Это не классификационная иерархия, а технологическая: она отражает поток документооборота и позволяет отслеживать, какие документы созданы на основании текущего.
Кроме того, иерархические отношения встречаются в задачах и бизнес-процессах: задача имеет родительский бизнес-процесс, а точки маршрута образуют граф исполнения. Это важно при разработке механизмов согласования.
Работа с иерархией в запросах и коде
При разработке важно уметь выбирать данные с учётом иерархии. В языке запросов для этого есть оператор ИЕРАРХИЯ в предложении ИТОГИ и конструкция В ИЕРАРХИИ для отбора по группе с учётом вложенности.
Примеры типовых конструкций:
// Отбор элементов, входящих в группу (с учётом вложенных)
ГДЕ Номенклатура В ИЕРАРХИИ(&Группа)
// Итоги с иерархией
ИТОГИ СУММА(Количество) ПО Номенклатура ИЕРАРХИЯ
Во встроенном языке для обхода дерева используются методы: Родитель (ссылка на родителя), ЭтоГруппа (признак группы при иерархии групп и элементов), ПринадлежитЭлементу() — проверка вхождения элемента в указанную группу с учётом всех уровней вложенности.
Если Элемент.ПринадлежитЭлементу(ГруппаОбувь) Тогда
// элемент находится в группе на любом уровне
КонецЕсли;
Как проверить и изменить настройки иерархии
Настройки иерархии справочника смотрятся в конфигураторе: откройте объект конфигурации, перейдите на закладку «Иерархия». Там задаются: флаг «Иерархический справочник», вид иерархии и количество уровней. Владельцы настраиваются на одноимённой закладке «Владельцы».
- 1Откройте конфигуратор и найдите нужный справочник в дереве конфигурации
- 2Откройте палитру свойств и закладку «Иерархия»: проверьте вид иерархии и число уровней
- 3Проверьте закладку «Владельцы» — есть ли подчинение другим справочникам
- 4На копии базы измените настройки, выполните обновление конфигурации базы данных (реструктуризацию)
- 5Проверьте в пользовательском режиме: отображение дерева, работу отборов и ключевых отчётов
Признаки корректно настроенной иерархии в пользовательском режиме: список справочника отображается деревом, кнопка «Создать группу» доступна (для иерархии групп и элементов), при выборе значения в документе группы либо недоступны для выбора, либо выбираются — в зависимости от вида иерархии.
Как проверить результат
Список показывает дерево с группами/родителями
Плоский список при включённой иерархии — проверьте настройку формы списка
Группы недоступны для выбора (иерархия групп и элементов)
В документ можно выбрать папку — вероятно, выбран вид «иерархия элементов»
Отбор по группе захватывает вложенные элементы
В отчёт попадают только элементы первого уровня — в запросе нет ИЕРАРХИИ
Владелец заполняется автоматически и обязателен
Элемент сохраняется без владельца — проверьте настройку владельцев
FAQ: частые вопросы об иерархии в 1С
Можно ли изменить вид иерархии у справочника, в котором уже есть данные?
Технически да — конфигуратор выполнит реструктуризацию. Но при смене с «иерархии элементов» на «иерархию групп и элементов» все существующие родительские записи станут группами и перестанут быть доступными для выбора в документах, что сломает существующие документы и отчёты. Перед изменением сделайте копию базы, оцените последствия и при необходимости напишите обработку переноса данных.
Чем подчинённый справочник отличается от иерархического?
Иерархический справочник связывает элементы внутри одного справочника отношением «родитель — потомок». Подчинённый справочник связывает элементы двух разных справочников через реквизит «Владелец»: например, договоры принадлежат контрагентам. Это независимые механизмы, их можно комбинировать — подчинённый справочник сам может быть иерархическим.
Как выбрать в запросе все элементы группы со всеми вложенными подгруппами?
Используйте оператор В ИЕРАРХИИ(&Группа) в секции ГДЕ. Простое сравнение Родитель = &Группа вернёт только элементы первого уровня вложенности, а вложенные группы будут потеряны — это одна из самых частых ошибок при написании запросов.
Почему в форме списка не отображается дерево, хотя справочник иерархический?
Вид отображения задаётся в настройках формы списка: свойство «Отображение» динамического списка должно быть «Дерево» или «Иерархический список», а для дерева корректно заполнены свойства связи по родителю. Также проверьте, что пользователь не включил режим списка в настройках формы в пользовательском режиме.
Есть ли иерархия у регистров сведений и накопления?
Нет, регистры не поддерживают иерархию — они хранят плоские записи. Иерархия в отчётах по регистрам получается через иерархию измерений: если измерение ссылается на иерархический справочник, в запросе и СКД можно построить группировку с иерархией по этому измерению.
Что делать, если не хватает уровней иерархии?
Увеличьте значение «Количество уровней иерархии» в свойствах справочника или установите 0 для неограниченной вложенности. Учтите, что глубокая вложенность замедляет запросы с ИЕРАРХИИ и затрудняет навигацию: на практике редко нужно больше 5–7 уровней. Если структура глубже, возможно, часть уровней стоит вынести в отдельные справочники или реквизиты.
Что важно запомнить
В 1С существует несколько видов иерархии: иерархия групп и элементов (родитель — только папка), иерархия элементов (родитель — полноценная запись), подчинённые справочники через владельца, а также иерархия в планах счетов, видов характеристик и структура подчинённости документов. Вид иерархии выбирают до наполнения базы: изменение на рабочих данных требует копии и проверки отчётов. В запросах для выборки с учётом вложенности используйте В ИЕРАРХИИ и ИТОГИ ПО ... ИЕРАРХИЯ.