Вопрос о том, стоит ли включать иерархию у справочника, является фундаментальным при проектировании метаданных в системе «1С:Предприятие». На первый взгляд может показаться, что папки — это всегда удобно для пользователя. Однако на практике иерархия накладывает определенные технические ограничения и может влиять на производительность системы. В этой статье мы подробно разберем, как принять взвешенное решение, проанализируем различные сценарии и рассмотрим альтернативные способы группировки данных.
Прежде чем принимать решение, важно понимать, что платформа предлагает два принципиально разных типа иерархии. Выбор между ними зависит от бизнес-логики объекта:
Подразделения или СтатьиЗатрат. Например, «Цех №1» может иметь подчиненный узел «Участок сборки», но оба они являются подразделениями и могут указываться в документах.Рассмотрим ситуации, когда использование стандартного механизма иерархии оправдано и даже необходимо:
1. Объект по своей природе является деревом. Если структура данных изначально подразумевает подчиненность (родитель — потомок), иерархия неизбежна. Самый яркий пример — справочник Подразделения. Организационная структура компании — это дерево, где отделы входят в управления, а те — в департаменты.
2. Агрегация данных в бухгалтерских и управленческих отчетах. Если пользователю важно видеть итоги не только по конкретному договору или номенклатуре, но и по группе в целом, стандартная иерархия позволяет легко это реализовать. В запросах оператор В ИЕРАРХИИ автоматически собирает данные по всем вложенным элементам. Рассмотрим пример запроса для получения остатков по иерархической группе:
ВЫБРАТЬ
ХозрасчетныйОстатки.Субконто1 КАК Номенклатура,
ХозрасчетныйОстатки.СуммаОстаток КАК Сумма
ИЗ
РегистрБухгалтерии.Хозрасчетный.Остатки(&Период, Счет = &Счет, , Субконто1 В ИЕРАРХИИ (&ГруппаНоменклатуры)) КАК ХозрасчетныйОстатки
3. Специфические отраслевые требования. Проанализируем пример со справочником «Дети» в детском саду. Здесь структура (Группа «Гномики», Группа «Колокольчики») является основой учета. Начисления, табели и отчеты строятся строго по этим группам. В таком случае плоский справочник создаст колоссальные неудобства для пользователей.
Часто иерархию используют как способ борьбы с «мусором». Если жизненный цикл элементов короток (например, разовые начисления или старые контрагенты), программисты создают папку «Архив» или «Не использовать». Это позволяет:
Хотя этот метод популярен, разберем и альтернативу: в современных конфигурациях чаще используют реквизит НеИспользуется (булево), а скрытие элементов реализуется через настройки Динамического списка с отбором.
Существует мнение, что в интерфейсе «Такси» иерархические справочники становятся менее востребованными. Рассмотрим причины:
Проанализируем ситуацию с точки зрения системного программиста. Использование иерархии влияет на несколько аспектов:
Ограничение вложенности. Платформа 1С ограничивает глубину дерева 25 уровнями. Для большинства задач этого достаточно, но для сложных инженерных справочников это может стать препятствием.
Механизм RLS (права доступа). Если в системе настроено ограничение доступа на уровне записей (RLS) по группам справочника, это может существенно замедлить работу. Проверка условия В ИЕРАРХИИ в SQL-запросе — это тяжелая операция, требующая обхода индексов. Если справочник содержит сотни тысяч элементов, открытие списка пользователем с ограниченными правами может занять значительное время.
Индексация. Поле Родитель всегда индексируется. Однако любое перемещение элемента между группами вызывает обновление индексов, что в высоконагруженных системах может приводить к избыточным блокировкам таблиц.
Вместо того чтобы ставить галочку «Иерархия» в конфигураторе, рассмотрим возможность создания плоского справочника с использованием возможностей Динамического списка. Мы можем сгруппировать данные по любому реквизиту (например, по Виду номенклатуры или Производителю) прямо в форме списка. Это дает пользователю ощущение работы с папками, но сохраняет гибкость плоской структуры.
Также эффективным методом является использование Дополнительных реквизитов и сведений. Это позволяет строить отчеты в разрезе множества классификаторов одновременно, что невозможно при жесткой привязке к одной «папке-родителю».
Чтобы окончательно определиться, выполним следующие шаги:
Резюмируем: Иерархия — это мощный инструмент визуализации и агрегации, но использовать его нужно только тогда, когда структура данных сама диктует древовидную модель. В остальных случаях современные возможности интерфейса 1С позволяют обойтись более гибкими и производительными методами.