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

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

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

Какие виды иерархии существуют в 1С:Предприятие 8 — иерархия групп и элементов, иерархия групп, подчинённые справочники. Настройка, запросы, типичные ошибки.

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

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

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

Где в конфигураторе задаётся вид иерархии

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

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

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

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

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

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

bsl
ВЫБРАТЬ Номенклатура.Ссылка ГДЕ Номенклатура.ЭтоГруппа = ЛОЖЬ И Номенклатура.Родитель = &Группа

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

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

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

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

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

Механизм подчинённых справочников реализует связь «один ко многим» между двумя разными объектами метаданных. У подчинённого справочника появляется стандартный реквизит «Владелец» (Owner), ссылающийся на элемент родительского справочника. Примеры из типовых решений: «Договоры контрагентов» подчинены «Контрагентам», «Банковские счета» — «Организациям».

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

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

Сравнение вариантов

Группы и элементы

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

Элементы

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

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

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

Ограничение уровней и особенности планов счетов

В свойствах иерархического справочника можно задать «Количество уровней иерархии». Значение 0 означает неограниченную вложенность. Ограничение уровней полезно, когда структура регламентирована — например, классификатор с фиксированной глубиной, — и снижает риск случайного создания избыточной вложенности пользователями.

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

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

Работа с иерархией в запросах и отчётах

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

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

Как проверить принадлежность к группе в запросе
  1. 1
    Убедитесь, что справочник иерархический и у элементов заполнен реквизит «Родитель»
  2. 2
    В запросе используйте условие: Ссылка В ИЕРАРХИИ(&Группа)
  3. 3
    Передайте в параметр ссылку на группу или элемент-родителя
  4. 4
    Проверьте результат на элементе из вложенной подгруппы — он должен попасть в выборку

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

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

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

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

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

Как выбрать вид иерархии под задачу

Критерий выбора простой: ответьте на вопрос, может ли родительский узел сам участвовать в учёте. Если нет — это папка, выбирайте «Группы и элементы». Если да — выбирайте «Элементы». Если потомок имеет собственный состав реквизитов и документы движения — делайте подчинённый справочник.

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

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

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

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

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

Итог

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

В 1С:Предприятие 8 есть два вида иерархии справочников (группы и элементы / элементы) плюс механизм подчинённых справочников. Выбор определяется ролью родителя: папка, объект учёта или владелец отдельной сущности. Менять вид иерархии после ввода данных трудоёмко — решение принимайте на этапе проектирования.

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

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

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

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

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

Может ли элемент иметь несколько родителей?

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

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

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

Влияет ли глубина иерархии на производительность?

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

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

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