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

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

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

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

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

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

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

Где в 1С применяется иерархия

Чаще всего иерархию встречают в справочниках. Номенклатура группируется по категориям товаров, контрагенты — по поставщикам и покупателям, подразделения — по структуре компании. Это упрощает поиск, позволяет назначать настройки сразу на группу (например, счета учёта для группы номенклатуры) и строить отчёты с итогами по папкам.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Иерархия в запросах: ИТОГИ и проверка принадлежности

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

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

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

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

Типичные ошибки и проблемы с иерархией

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

Вторая ошибка — зацикливание: элемент назначен родителем самому себе или своему потомку (А → Б → А). Платформа частично контролирует это при интерактивной записи, но программное присвоение родителя без проверки способно создать цикл, после чего запросы с иерархией и обход дерева начинают вести себя непредсказуемо. Всегда проверяйте, не является ли назначаемый родитель потомком текущего элемента.

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

Проверка результата и обслуживание структуры

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

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

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

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

Дерево справочника в режиме предприятия
Норма

Группы раскрываются, элементы лежат в ожидаемых папках

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

Элементы в корне, дубли групп, пустые ветки

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

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

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

Итог меньше фактической суммы — часть элементов вне группы

Запрос с В ИЕРАРХИИ
Норма

Выбираются элементы всех уровней вложенности

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

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

Частые вопросы об иерархии в 1С

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

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

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

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

Почему отбор по группе не находит элементы из подгрупп?

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

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

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

Ограничено ли количество уровней вложенности?

По умолчанию платформа допускает множество уровней, но в свойствах объекта можно задать «Количество уровней иерархии». На практике глубину дерева стоит ограничивать разумным числом (обычно 3–7 уровней): слишком глубокие структуры неудобны пользователям и замедляют запросы с иерархией.

Что делать с дублями групп после обмена данными?

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

Итог

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

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