Если вы работаете с 1С:Предприятие 8.3 и сталкиваетесь с необходимостью анализировать данные, организованные в виде древовидной структуры, то без механизма иерархического просмотра не обойтись. Этот инструмент позволяет не просто просматривать списки, а видеть их в контексте подчинённости — будь то справочники с иерархией (например, номенклатура по группам), планы видов характеристик или даже документы, связанные родительско-дочерними отношениями.

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

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

Что такое иерархический просмотр в 1С 8.3

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

Технически иерархический просмотр реализован на нескольких уровнях:

  • 📌 Уровень данных: иерархия хранится в самих объектах метаданных (справочниках, планах видов характеристик) через поля Родитель или ЭтоГруппа.
  • 🔍 Уровень запросов: в языке запросов есть специальные конструкции (ИЕРАРХИЯ, ПОДЧИНЕННЫЕ), позволяющие извлекать данные с учётом иерархии.
  • 🖥️ Уровень интерфейса: в управляемых формах и отчётах поддерживается визуализация дерева (разворачиваемые узлы, отступы, значки групп).

Важно понимать, что иерархический просмотр — это не просто «красивое отображение». Он влияет на:

  • 📊 Логику отчётов: например, в отчёте «Обороты по номенклатуре» можно увидеть сводные данные по группам товаров.
  • Производительность: неправильная настройка иерархии может замедлить работу системы при больших объёмах данных.
  • 🔗 Интеграцию: при обмене данными между базами иерархические структуры требуют особого подхода.
📊 Как часто вы используете иерархический просмотр в 1С?
Ежедневно
Несколько раз в неделю
Редко
Никогда не пользовался
Затрудняюсь ответить

Где применяется иерархический просмотр: практические примеры

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

1. Справочники с иерархией

  • 📦 Номенклатура: группировка товаров по категориям (например, «Мебель → Столы → Офисные столы»). Позволяет быстро находить нужные позиции и анализировать продажи по группам.
  • 👥 Контрагенты: иерархия по холдингам, филиалам или типам (например, «Поставщики → Оптовые поставщики»).
  • 🏢 Организации: структурирование по юридическим лицам и обособленным подразделениям.

2. Планы видов характеристик (ПВХ)

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

3. Документы с подчинением

Реже, но встречается в конфигурациях, где документы связаны между собой. Например, в 1С:Бухгалтерии платежное поручение может быть «подчинено» счёту-фактуре, а в 1С:ЗУП — приказ о приёме на работу связан с личной карточкой сотрудника.

4. Отчёты и аналитика

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

💡

Если в отчёте нужно показать только верхний уровень иерархии (без разворачивания), используйте параметр УровеньИерархии = 1 в настройках отбора. Это ускорит формирование отчёта для больших справочников.

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

Чтобы включить иерархический просмотр для справочника, необходимо выполнить несколько шагов в Конфигураторе:

  1. Откройте справочник в режиме редактирования (например, Номенклатура).

  2. Перейдите на закладку Иерархия.

  3. Установите флажок Иерархический справочник.

  4. Выберите тип иерархии:

    • Иерархия элементов — классический вариант (группы и элементы).
    • Иерархия групп и элементов — группы могут содержать как элементы, так и другие группы.

  5. Сохраните изменения и обновите конфигурацию базы данных.

  6. После этого в пользовательском режиме (1С:Предприятие) справочник будет отображаться как дерево. Например, в форме списка номенклатуры появится колонка с отступами, обозначающими уровень вложенности, а группы будут отмечены специальным значком (обычно папкой 📁).

    Для удобства работы можно настроить:

    • 🔄 Автоматическое разворачивание узлов при открытии формы (в настройках формы списка).
    • 📌 Фильтрацию по уровню иерархии (например, показать только группы первого уровня).
    • 🔍 Поиск с учётом иерархии (настройка в параметрах поиска).

    ☑️ Настройка иерархического справочника

    Выполнено: 0 / 5

    Если после настройки иерархия не отображается, проверьте:

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

    Если группы и элементы перемешаны или отступы не соответствуют уровню вложенности, проверьте поле Родитель в таблице справочника. Возможно, ссылки на родительские элементы повреждены. В этом случае поможет обработка "Поиск и исправление ссылок" или ручное исправление через запрос.

    Иерархический просмотр в запросах 1С: синтаксис и примеры

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

    Базовый синтаксис:

    ВЫБРАТЬ
    

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

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

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

    ИЗ

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

    ГДЕ

    Справочник.Номенклатура.ПометкаУдаления = ЛОЖЬ

    УПОРЯДОЧИТЬ ПО

    ИЕРАРХИЯ

    Этот запрос вернёт все элементы справочника Номенклатура, упорядоченные по иерархии. Группы будут идти перед своими подчинёнными элементами.

    Более сложный пример — выборка только групп с подсчётом количества подчинённых элементов:

    ВЫБРАТЬ
    

    Группы.Ссылка КАК Группа,

    Группы.Наименование КАК НаименованиеГруппы,

    (ВЫБРАТЬ КОЛИЧЕСТВО(DISTINCT Подчиненные.Ссылка)

    ИЗ Справочник.Номенклатура КАК Подчиненные

    ГДЕ Подчиненные.Родитель = Группы.Ссылка) КАК КоличествоПодчиненных

    ИЗ

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

    ГДЕ

    Группы.ЭтоГруппа = ИСТИНА

    И Группы.ПометкаУдаления = ЛОЖЬ

    УПОРЯДОЧИТЬ ПО

    ИЕРАРХИЯ

    Для работы с подчинёнными элементами используется конструкция ПОДЧИНЕННЫЕ:

    ВЫБРАТЬ
    

    Родитель.Наименование КАК Родитель,

    Подчиненный.Наименование КАК Подчиненный

    ИЗ

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

    ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Подчиненный

    ПО Подчиненный.Родитель = Родитель.Ссылка

    ГДЕ

    Родитель.ЭтоГруппа = ИСТИНА

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

    💡

    Конструкция ИЕРАРХИЯ в запросах не только упорядочивает данные, но и оптимизирует их выборку. При её использовании платформа 1С автоматически строит эффективный план выполнения, что особенно важно для больших справочников (10 000+ записей).

    При работе с иерархическими запросами учитывайте:

    • 🔹 Производительность: запросы с ИЕРАРХИЯ могут быть ресурсоёмкими. Для больших справочников используйте отбор по уровням или ограничивайте глубину вложенности.
    • 🔹 Рекурсия: если нужно получить все уровни вложенности (например, «прапрадедушки» элемента), используйте рекурсивные запросы или временные таблицы.
    • 🔹 Права доступа: в запросе учитываются права пользователя. Если у него нет доступа к определённой группе, подчинённые элементы тоже не будут показаны.
    Как ускорить иерархические запросы?

    Для ускорения запросов с ИЕРАРХИЯ создайте индекс по полю Родитель в таблице справочника. В Конфигураторе это делается через меню Администрирование → Поддержка и обслуживание → Тестирование и исправление → Перестроение индексов.

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

    Даже опытные пользователи и разработчики иногда сталкиваются с проблемами при работе с иерархией в 1С. Рассмотрим наиболее распространённые ошибки и способы их решения.

    1. «Иерархия не отображается в форме списка»

    Если после настройки справочник остаётся плоским (без отступов и значков групп), проверьте:

    • 🔹 Настройки формы: в некоторых конфигурациях иерархия скрыта по умолчанию. Откройте форму списка в Конфигураторе и найдите свойство ИерархическийПросмотр.
    • 🔹 Права доступа: пользователь может не иметь прав на просмотр групп. Проверьте роли в Администрирование → Пользователи.
    • 🔹 Тип иерархии: если в справочнике установлена Иерархия элементов, а вы пытаетесь создать группы групп, это не сработает.

    2. «Запрос с ИЕРАРХИЯ работает слишком долго»

    Иерархические запросы могут тормозить на больших объёмах данных. Чтобы ускорить их:

    • 🔹 Ограничьте глубину вложенности с помощью условия ГДЕ УРОВЕНЬИЕРАРХИИ(Ссылка) <= 3.
    • 🔹 Используйте временные таблицы для промежуточных расчётов.
    • 🔹 Перестройте индексы на поле Родитель.

    3. «При переносе данных иерархия сломалась»

    При обмене данными между базами или выгрузке/загрузке через XML связи «родитель-потомок» могут нарушиться. Чтобы этого избежать:

    • 🔹 Выгружайте данные вместе с иерархией (в правилах обмена должен быть обработан справочник целиком).
    • 🔹 Проверяйте целостность ссылок после загрузки с помощью обработки Поиск и исправление ссылок.
    • 🔹 Используйте уникальные идентификаторы (например, GUID) для сопоставления элементов.

    4. «В отчёте не считаются итоги по группам»

    Если в отчёте с иерархией не показываются сводные данные по группам, проверьте:

    • 🔹 Настройки группировок: в схеме компоновки данных должна быть включена группировка по иерархическому полю.
    • 🔹 Параметры отчёта: иногда итоги отключены в настройках пользовательского варианта отчёта.
    • 🔹 Источник данных: если запрос не возвращает группы (например, из-за отбора ЭТОГРУППА = ЛОЖЬ), итоги не будут рассчитаны.
    💡

    Если в отчёте нужно показать итоги только по группам, а не по всем элементам, добавьте в запрос условие ГДЕ ЭтоГруппа = ИСТИНА и используйте агрегатные функции (СУММА, КОЛИЧЕСТВО) с группировкой по родительским элементам.

    Оптимизация производительности при работе с большими иерархиями

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

    1. Ограничение глубины иерархии

    Если в справочнике более 5 уровней вложенности, рассмотрите возможность:

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

    2. Индексирование полей

    Для ускорения запросов с ИЕРАРХИЯ убедитесь, что:

    • 🔹 Поле Родитель проиндексировано.
    • 🔹 Поле ЭтоГруппа тоже имеет индекс (если часто используется в отборах).

    3. Кэширование иерархии

    Если иерархия редко меняется, можно:

    • 🔹 Кэшировать её в регистре сведений и обновлять по расписанию.
    • 🔹 Использовать планы обмена для распределённой синхронизации иерархии между базами.

    4. Оптимизация форм

    В управляемых формах:

    • 🔹 Отключите автоматическое разворачивание всех узлов (настройка АвтоРазвернутьУзлы = Ложь).
    • 🔹 Используйте динамический список вместо обычного для больших справочников.
    • 🔹 Настройте отложенную загрузку данных (например, подгружать подчинённые элементы только при разворачивании узла).

    5. Альтернативные подходы

    Если иерархический просмотр критично замедляет работу, рассмотрите:

    • 🔹 Использование виртуальных таблиц (например, Справочник.Номенклатура.Иерархия).
    • 🔹 Замену иерархии на дополнительные реквизиты с классификацией (например, «Категория1», «Категория2» вместо вложенности).
Проблема Причина Решение
Медленная загрузка формы списка Большое количество групп и элементов Использовать динамический список и отложенную загрузку
Долгое формирование отчёта Рекурсивные запросы по глубокой иерархии Ограничить уровень вложенности или использовать кэш
Ошибки при обмене данными Нарушение ссылок «родитель-потомок» Проверять целостность ссылок после загрузки
Неправильные итоги в отчёте Неверная группировка по иерархическому полю Проверить схему компоновки данных
💡

Если справочник содержит более 10 000 элементов с иерархией глубиной 4+ уровней, рассмотрите возможность денормализации данных. Например, можно хранить путь к элементу в виде строки (например, "1.2.5.8") и использовать его для быстрого поиска без рекурсивных запросов.

Иерархический просмотр в отчётах: настройка и примеры

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

Шаг 1: Создание схемы компоновки данных

В Конфигураторе:

  1. Создайте новый отчёт или откройте существующий (например, ОборотыПоНоменклатуре).
  2. В схеме компоновки данных добавьте набор данных — запрос с иерархией:
    ВЫБРАТЬ
    

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

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

    Номенклатура.ЭтоГруппа КАК ЭтоГруппа,

    СУММА(Документ.Товары.Количество) КАК Количество

    ИЗ

    Документ.РеализацияТоваровУслуг КАК Документ

    ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.Товары КАК Документ.Товары

    ПО Документ.Ссылка = Документ.Товары.Ссылка

    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура

    ПО Документ.Товары.Номенклатура = Номенклатура.Ссылка

    СГРУППИРОВАТЬ ПО

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

    Номенклатура.Наименование,

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

    УПОРЯДОЧИТЬ ПО

    ИЕРАРХИЯ Номенклатура.Ссылка

  3. В настройках группировки укажите поле Номенклатура как иерархическое.
  4. Настройте отображение итогов по группам в параметрах компоновки.

Шаг 2: Настройка пользовательского варианта отчёта

В пользовательском режиме (1С:Предприятие):

  • 🔹 Откройте отчёт и выберите вариант с иерархией.
  • 🔹 В настройках отчёта включите опцию «Показывать итоги по группам».
  • 🔹 При необходимости добавьте отбор по уровню иерархии (например, показать только группы 1-2 уровня).

Шаг 3: Оптимизация отчёта

Для ускорения формирования отчёта:

  • 🔹 Используйте виртуальные таблицы вместо прямых запросов к документам.
  • 🔹 Ограничивайте период формирования отчёта.
  • 🔹 Настройте кэширование результатов (если отчёт запускается часто с одинаковыми параметрами).

Пример отчёта с иерархией по контрагентам (группировка по холдингам):

ВЫБРАТЬ

Контрагенты.Ссылка КАК Контрагент,

Контрагенты.Наименование КАК Наименование,

Контрагенты.ЭтоГруппа КАК ЭтоГруппа,

СУММА(Документ.СуммаДокумента) КАК Сумма

ИЗ

Документ.ПоступлениеТоваровУслуг КАК Документ

ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты

ПО Документ.Контрагент = Контрагенты.Ссылка

СГРУППИРОВАТЬ ПО

Контрагенты.Ссылка,

Контрагенты.Наименование,

Контрагенты.ЭтоГруппа

УПОРЯДОЧИТЬ ПО

ИЕРАРХИЯ Контрагенты.Ссылка

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

Добавьте в запрос условие ГДЕ Контрагенты.ЭтоГруппа = ИСТИНА. Тогда в отчёте будут только холдинги и филиалы, без конечных контрагентов. Итоги будут рассчитаны по группам.

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

В управляемых формах 1С иерархический просмотр настраивается через свойства элементов формы. Рассмотрим ключевые моменты на примере формы списка справочника.

1. Настройка табличного поля

Чтобы таблица отображала иерархию:

  • 🔹 В Конфигураторе откройте форму списка справочника (например, Справочник.Номенклатура.ФормаСписка).
  • 🔹 Найдите элемент ТабличноеПоле (обычно называется Список).
  • 🔹 В свойствах табличного поля установите:
    • ИерархическийПросмотр = Истина
    • АвтоРазвернутьУзлы = Ложь (для больших справочников)

2. Добавление команд для работы с иерархией

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

  • 🔹 Команду «Развернуть все»:
    Процедура РазвернутьВсе(Команда)
    

    Элементы.Список.РазвернутьВсеУзлы();

    КонецПроцедуры

  • 🔹 Команду «Свернуть все»:
    Процедура СвернутьВсе(Команда)
    

    Элементы.Список.СвернутьВсеУзлы();

    КонецПроцедуры

  • 🔹 Команду «Показать только группы» (фильтрация):
    Процедура ПоказатьТолькоГруппы(Команда)
    

    Элементы.Список.Отбор.ЭтоГруппа.Установить(Истина);

    Элементы.Список.ПрименитьОтбор();

    КонецПроцедуры

3. Настройка отображения узлов

Для улучшения визуального восприятия:

  • 🔹 Настройте КартинкуУзла и КартинкуЛиста в свойствах табличного поля (например, папка 📁 для групп и документ 📄 для элементов).
  • 🔹 Установите ЦветФонаУзла для выделения групп.
  • 🔹 Используйте ОтступУзла для визуального разделения уровней (например, ОтступУзла = 20).

4. Динамическое обновление иерархии

Если иерархия меняется в процессе работы (например, при перемещении элементов), обновите отображение: