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

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

Как создать дерево каталогов в 1С

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

Дерево каталогов в 1С — это иерархическая структура, в которой элементы объединяются в группы (папки), а группы могут вкладываться друг в друга. Такая структура используется для номенклатуры, контрагентов, статей расходов и любых других справочников, где элементов много и без группировки в них сложно ориентироваться.

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

Определитесь с типом иерархии: группы или элементы

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

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

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

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

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

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

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

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

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

Перемещение существующих элементов в группы выполняется двумя способами: перетаскиванием мышью в режиме отображения «Дерево» или через редактирование карточки элемента с изменением поля родителя. Для массового переноса удобнее выделить несколько элементов через Ctrl или Shift и перетащить их сразу.

Порядок создания дерева групп
  1. 1
    Откройте справочник и переключите список в режим «Дерево» (кнопка «Ещё» → «Режим просмотра» или аналогичная).
  2. 2
    Нажмите «Создать группу», введите наименование и сохраните.
  3. 3
    Создайте вложенные группы, указывая родителя, или создавайте их, находясь внутри нужной группы.
  4. 4
    Перенесите элементы в группы перетаскиванием или через поле «Группа» в карточке.
  5. 5
    Проверьте результат, развернув дерево: элементы должны находиться на ожидаемых уровнях.

Обратите внимание: глубина вложенности групп в типовых конфигурациях не ограничена жёстко, но практический предел удобства — 3–5 уровней. Более глубокие деревья замедляют навигацию и усложняют поиск, особенно в веб-клиенте и на медленных соединениях.

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

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

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

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

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

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

bsl
// Создание группы верхнего уровня
Группа = Справочники.Номенклатура.СоздатьГруппу();
Группа.Наименование = "Электроника";
Группа.Записать();

// Создание вложенной группы
Подгруппа = Справочники.Номенклатура.СоздатьГруппу();
Подгруппа.Наименование = "Ноутбуки";
Подгруппа.Родитель = Группа.Ссылка;
Подгруппа.Записать();

// Создание элемента внутри группы
Элемент = Справочники.Номенклатура.СоздатьЭлемент();
Элемент.Наименование = "Ноутбук офисный";
Элемент.Родитель = Подгруппа.Ссылка;
Элемент.Записать();

При массовом создании узлов учитывайте два момента. Во-первых, методы «СоздатьГруппу» и «СоздатьЭлемент» невзаимозаменяемы: попытка создать элемент методом группы приведёт к ошибке или к записи не того типа объекта. Во-вторых, при загрузке больших объёмов записывайте объекты в транзакции порциями — это ускоряет процесс и упрощает откат при сбое.

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

Построение дерева значений для отчётов и обработок

Если нужно вывести произвольную иерархию, не привязанную к одному справочнику, используется объект «ДеревоЗначений». Это программная структура со строками и колонками, где у каждой строки могут быть дочерние строки. Типовой приём — выгрузить результат запроса с итогами в дерево методом «Выгрузить» с параметром «ОбходРезультатаЗапроса.ПоГруппировкамСИерархией».

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

Настройка отображения дерева в списке

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

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

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

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

Вид иерархии в конфигураторе
Норма

Установлен нужный вид: группы и элементы или иерархия элементов

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

Флаг «Иерархический» снят — группы создать нельзя

Отображение в списке
Норма

В режиме «Дерево» видны папки и вложенность

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

Плоский список без папок при отключённом отборе

Программно созданные узлы
Норма

Реквизит «Родитель» заполнен ссылкой на группу

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

Родитель пустой — элементы лежат в корне

Доступность групп в документах
Норма

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

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

В документ можно подобрать группу как товар — признак неверного вида иерархии

Типичные ошибки и ограничения

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

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

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

Когда дерево справочника не подходит: альтернативы

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

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

Маршрут решения

Как выбрать подход

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

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

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

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

Почему в справочнике нет кнопки «Создать группу»?

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

Можно ли перенести элемент из одной группы в другую?

Да. В пользовательском режиме элемент перетаскивается мышью в нужную группу в режиме отображения «Дерево» либо переносится через изменение поля «Группа» в карточке. Программно достаточно присвоить реквизиту «Родитель» ссылку на новую группу и записать объект. Ссылки на элемент в документах при этом не меняются — перенос безопасен для учётных данных.

Что произойдёт с элементами при удалении группы?

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

Есть ли ограничение на глубину вложенности?

Жёсткого ограничения платформы на число уровней нет, а в конфигураторе можно задать ограничение вручную (значение 0 означает «без ограничений»). Практический предел определяется удобством: структуры глубже 5–7 уровней неудобны в навигации и усложняют построение отчётов с иерархией.

Как вывести иерархию справочника в отчёт?

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

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

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