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

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

Иерархия в 1С: как работает и как её настроить

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

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

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

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

Что такое иерархия в 1С и где она применяется

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

Технически иерархия реализуется одним полем «Родитель» в таблице справочника. Платформа сама следит за базовыми правилами: не даёт сделать элемент родителем самого себя и не позволяет удалить группу, в которой есть вложенные элементы, без специальной обработки. Однако зацикливание через цепочку ссылок (А → Б → В → А) платформа на уровне СУБД не отслеживает — это зона ответственности разработчика.

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

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

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

ПараметрИерархия групп и элементовИерархия элементов
Кто может быть родителемТолько группа (папка)Любой элемент
Тип объектаРазличаются группы и элементыЕдиный тип — элемент
Реквизиты группыУ групп доступны не все реквизитыВсе реквизиты у всех элементов
Типичный примерНоменклатура, контрагентыПодразделения, сотрудники с подчинением
Проверка в запросеПоле «ЭтоГруппа»Проверка не требуется

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

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

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

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

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

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

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

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

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

Иерархия в запросах: В ИЕРАРХИИ и обход дерева

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

// Все товары группы и всех её подгрупп

ВЫБРАТЬ

Номенклатура.Ссылка

ИЗ

Справочник.Номенклатура КАК Номенклатура

ГДЕ

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

И НЕ Номенклатура.ЭтоГруппа

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

Элемент не попадает в отчёт по группеОтбор построен без учёта иерархии

Проверить, используется ли В ИЕРАРХИИ в запросе отчёта

В списке нет кнопки «Создать группу»Вид иерархии — элементы

Проверить свойства справочника в конфигураторе

Отчёт по группе показывает пустоУ группы нет собственных данных

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

Типичные задачи и ограничения механизма

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

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

Типичные ошибки
01
Хранение учётных данных в группах: у групп вида «группы и элементы» часть реквизитов недоступна, и данные теряются из отчётов — выносите показатели на уровень элементов.
02
Отбор «Равно» вместо «В иерархии» в отчётах: в выборку попадает только сама группа без вложенных элементов.
03
Глубокая вложенность ради красоты: дерево глубже 5–7 уровней неудобно пользователям и замедляет запросы с обходом.
04
Массовое изменение родителей обработкой без контроля зацикливания: цепочка А→Б→В→А ломает обход дерева и отчёты.

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

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

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

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

Элементы на верхнем уровне
Норма

Только осознанно оставленные элементы и группы первого уровня

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

Случайные элементы без группы, дубли по наименованию

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

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

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

Итог группы меньше суммы элементов — отбор без учёта иерархии

Открытие формы списка
Норма

Дерево разворачивается быстро, группы раскрываются

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

Зависание или ошибка при разворачивании — возможно зацикливание ссылок

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

Итог

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

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

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

Чем группа отличается от элемента в иерархическом справочнике?

Группа — это папка-классификатор: она только объединяет элементы и не предназначена для хранения учётных данных. У групп недоступна часть реквизитов (например, у группы номенклатуры нет единицы измерения и ставки НДС). Элемент — полноценная учётная единица со всеми реквизитами. Различие существует только при виде иерархии «группы и элементы».

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

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

Почему отчёт по группе показывает не все элементы?

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

Как программно определить всех потомков элемента?

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

Можно ли ограничить глубину дерева?

Да, в свойствах справочника на закладке «Иерархия» есть параметр ограничения количества уровней. Если задать, например, 3, платформа не позволит создать четвёртый уровень вложенности. Значение 0 означает неограниченную глубину. Учтите, что ограничение проверяется в интерактивном режиме и при стандартной записи, но обходы через обмен данными стоит контролировать отдельно.

Что будет, если удалить группу с элементами внутри?

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