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

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

Что значит иерархия в 1С и как с ней работать

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

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

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

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

Где в 1С используется иерархия

Основное место применения — иерархические справочники. Типичные примеры из типовых конфигураций: «Номенклатура» (группы товаров и услуг), «Контрагенты», «Статьи затрат», «Подразделения», «Физические лица». Во всех этих списках элемент можно положить внутрь группы, а группу — внутрь другой группы, формируя многоуровневое дерево.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Как работать с иерархией в режиме 1С:Предприятие

Пользовательские операции с деревом просты, но у них есть нюансы, о которых часто забывают.

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

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

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

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

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

Типовая задача — проверить, входит ли товар в определённую группу со всеми её подгруппами. Условие «Номенклатура.Родитель = &Группа» найдёт только прямых потомков, а конструкция «Номенклатура В ИЕРАРХИИ (&Группа)» — всю ветку любой глубины. Это принципиально для отборов в отчётах по продажам и остаткам.

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

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

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

Типичные ошибки и ограничения

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

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

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

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

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

Структура дерева после переноса
Норма

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

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

Элемент остался в корне или попал не в ту ветку

Документы со ссылкой на элемент
Норма

Открываются, ссылка на месте, проведение не ломается

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

Ошибки «Объект не найден» — признак битой ссылки, а не проблемы иерархии

Отчёт с условием «В ИЕРАРХИИ»
Норма

В выборку попадают позиции из всех подгрупп ветки

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

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

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

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

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

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

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

Пропадут ли документы, если переместить элемент в другую группу?

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

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

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

Сколько уровней вложенности допустимо?

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

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

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

Итог

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

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