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

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

Как построить иерархию в 1С

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

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

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

Какие виды иерархии существуют в 1С

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

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

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

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

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

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

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

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

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

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

Дополнительно настройте связанные параметры. «Количество уровней иерархии» ограничивает глубину дерева; значение 0 означает неограниченную вложенность — для большинства задач это оптимально, но для строго регламентированных структур (например, ровно три уровня каталога) ограничение защитит от ошибок ввода. Флаг «Ограничение количества уровней» работает только совместно с указанным числом уровней.

Включение иерархии в конфигураторе
  1. 1
    Откройте конфигуратор и разблокируйте конфигурацию от поддержки, если она типовая и требует доработки
  2. 2
    Найдите справочник, откройте палитру свойств, установите «Иерархический» = Истина
  3. 3
    Выберите вид иерархии и задайте количество уровней (0 — без ограничений)
  4. 4
    Обновите конфигурацию базы данных (F7), согласившись с реструктуризацией
  5. 5
    Запустите режим предприятия и проверьте, что в форме списка появилось дерево групп

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

Создание групп и распределение элементов в режиме предприятия

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

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

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

Обращение к иерархии в запросах и коде

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

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

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

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

Иерархия в планах счетов и других объектах

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

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

Типичные ошибки
01
Использование подчинённого справочника вместо иерархии — структура усложняется, а отчёты по дереву построить нельзя
02
Сравнение по родителю вместо «В ИЕРАРХИИ» в запросах — из отчётов выпадают элементы вложенных подгрупп
03
Создание элементов в корне «на потом» — через полгода справочник снова плоский, и разбирать его дороже
04
Изменение вида иерархии на заполненном справочнике без копии — риск потери смысла ссылок в документах
05
Чрезмерная глубина дерева (7–10 уровней) — пользователи не находят элементы, формы работают медленнее

Проверка результата и типовые проблемы

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

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

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

Форма списка в режиме «Дерево»
Норма

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

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

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

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

В отбор попадают элементы всех вложенных подгрупп

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

Видны только элементы верхнего уровня — в запросе нет «В ИЕРАРХИИ»

Выбор значения в документе
Норма

Группы недоступны для выбора (вид «Группы и элементы») или доступны осознанно

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

В документ можно подобрать группу вместо элемента — проверьте вид иерархии и «Выбор групп и элементов»

Скорость открытия списка
Норма

Дерево открывается без заметной паузы

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

Список «зависает» — вероятно, чрезмерная глубина или сотни элементов в одной группе

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

Рекомендации по проектированию структуры

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

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

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

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

Иерархия строится на иерархических справочниках: включите свойство в конфигураторе, выберите вид «Группы и элементы» или «Элементы», создайте группы и перенесите элементы. В запросах используйте «В ИЕРАРХИИ», глубину дерева держите в пределах 2–4 уровней, а любые изменения структуры в рабочей базе выполняйте после резервного копирования.

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

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

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

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

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

Почему в отчёт по группе не попадают элементы из подгрупп?

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

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

Для вида «Группы и элементы» группы по умолчанию недоступны для выбора в большинстве полей. Если требуется гибкая настройка, используйте свойство поля ввода «Выбор групп и элементов» (ГруппыИЭлементы) — оно определяет, можно ли выбирать группы, только элементы или и то и другое.

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

Технически при значении «Количество уровней» = 0 вложенность не ограничена. Практический предел определяется удобством: деревья глубже четырёх-пяти уровней замедляют навигацию и провоцируют ошибки при выборе. Глубокую классификацию лучше реализовывать через дополнительные реквизиты и свойства.

Что произойдёт с документами, если удалить группу справочника?

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