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