Справочники и Данные · 12 мин
Как создать дерево каталогов в 1С
Как создать дерево каталогов в 1С: настройка иерархического справочника, групп и папок, отображение в виде дерева, типичные ошибки и проверка результата.
Дерево каталогов в 1С — это иерархическая структура, в которой элементы объединяются в группы (папки), а группы могут вкладываться друг в друга. Такая структура используется для номенклатуры, контрагентов, статей расходов и любых других справочников, где элементов много и без группировки в них сложно ориентироваться.
В зависимости от задачи «создать дерево каталогов» может означать три разных действия: завести группы в уже существующем справочнике в режиме пользователя, включить иерархию у справочника в конфигураторе или программно построить дерево значений для отчёта или обработки. Ниже разобраны все три сценария с конкретными шагами, ограничениями и способами проверки результата.
Определитесь с типом иерархии: группы или элементы
Перед настройкой важно понять, какая модель дерева вам нужна, потому что 1С поддерживает два принципиально разных вида иерархии. Первый — «иерархия групп и элементов»: папки (группы) служат только для классификации, а данные хранятся в элементах внутри папок. Так устроен типовой справочник «Номенклатура». Второй — «иерархия элементов»: каждый элемент может быть одновременно и родителем, и потомком, как в организационной структуре подразделений.
Ошибка на этом этапе самая дорогая: изменить вид иерархии у справочника, уже заполненного данными, возможно, но это требует аккуратной проверки ссылочной целостности и может потребовать переноса элементов. Поэтому перед созданием дерева ответьте на вопрос: будут ли «папки» сами нести учётные данные (например, подразделение с реквизитами) или это только визуальная классификация.
Сравнение видов иерархии
Подходит для товаров, услуг, статей затрат. Группа не участвует в документах как самостоятельный объект. Ограничение: нельзя выбрать группу там, где ожидается элемент.
Подходит для подразделений, сотрудников с подчинением, территорий. Каждый узел — полноценный элемент. Ограничение: сложнее отличать «папки» от листьев в отчётах.
Создание дерева групп в пользовательском режиме
Если справочник уже иерархический (это видно по значку папки в списке), дерево строится без доступа к конфигуратору. Откройте справочник, например «Номенклатура», и нажмите кнопку «Создать группу» — обычно это отдельная кнопка с изображением папки или пункт в меню «Создать». Задайте наименование группы и при необходимости укажите родительскую группу в поле «Группа» или «Входит в группу».
Перемещение существующих элементов в группы выполняется двумя способами: перетаскиванием мышью в режиме отображения «Дерево» или через редактирование карточки элемента с изменением поля родителя. Для массового переноса удобнее выделить несколько элементов через Ctrl или Shift и перетащить их сразу.
- 1Откройте справочник и переключите список в режим «Дерево» (кнопка «Ещё» → «Режим просмотра» или аналогичная).
- 2Нажмите «Создать группу», введите наименование и сохраните.
- 3Создайте вложенные группы, указывая родителя, или создавайте их, находясь внутри нужной группы.
- 4Перенесите элементы в группы перетаскиванием или через поле «Группа» в карточке.
- 5Проверьте результат, развернув дерево: элементы должны находиться на ожидаемых уровнях.
Обратите внимание: глубина вложенности групп в типовых конфигурациях не ограничена жёстко, но практический предел удобства — 3–5 уровней. Более глубокие деревья замедляют навигацию и усложняют поиск, особенно в веб-клиенте и на медленных соединениях.
Включение иерархии справочника в конфигураторе
Если вы разрабатываете собственный справочник или дорабатываете существующий, дерево включается в свойствах объекта. Откройте конфигуратор, найдите нужный справочник, перейдите на закладку «Иерархия» и установите флаг «Иерархический справочник». Затем выберите вид иерархии: «Иерархия групп и элементов» или «Иерархия элементов».
На этой же закладке задаются дополнительные параметры: ограничение количества уровней вложенности (0 — без ограничений) и признак размещения групп на верхнем уровне. После изменения свойств обязательно выполните обновление конфигурации базы данных (F7), иначе изменения не вступят в силу.
После обновления базы проверьте, что у форм списка справочника корректно настроено отображение: в свойствах динамического списка формы должна быть включена иерархия (свойство списка «Отображение» — «Дерево» или «Иерархический список»), иначе пользователь увидит плоский перечень.
Программное создание групп и элементов
При загрузке данных из файлов или при интеграции дерево часто строится программно. Принцип прост: сначала создаётся группа с указанием родителя, затем в неё записываются элементы и вложенные группы. Ключевой реквизит — «Родитель», он определяет положение узла в дереве.
// Создание группы верхнего уровня
Группа = Справочники.Номенклатура.СоздатьГруппу();
Группа.Наименование = "Электроника";
Группа.Записать();
// Создание вложенной группы
Подгруппа = Справочники.Номенклатура.СоздатьГруппу();
Подгруппа.Наименование = "Ноутбуки";
Подгруппа.Родитель = Группа.Ссылка;
Подгруппа.Записать();
// Создание элемента внутри группы
Элемент = Справочники.Номенклатура.СоздатьЭлемент();
Элемент.Наименование = "Ноутбук офисный";
Элемент.Родитель = Подгруппа.Ссылка;
Элемент.Записать();При массовом создании узлов учитывайте два момента. Во-первых, методы «СоздатьГруппу» и «СоздатьЭлемент» невзаимозаменяемы: попытка создать элемент методом группы приведёт к ошибке или к записи не того типа объекта. Во-вторых, при загрузке больших объёмов записывайте объекты в транзакции порциями — это ускоряет процесс и упрощает откат при сбое.
Для проверки корректности заполнения родителя используйте функцию «ПринадлежитЭлементу» или запрос с иерархией по полю «Родитель». Это позволяет убедиться, что загруженный элемент действительно попал в нужную ветку, а не остался в корне.
Построение дерева значений для отчётов и обработок
Если нужно вывести произвольную иерархию, не привязанную к одному справочнику, используется объект «ДеревоЗначений». Это программная структура со строками и колонками, где у каждой строки могут быть дочерние строки. Типовой приём — выгрузить результат запроса с итогами в дерево методом «Выгрузить» с параметром «ОбходРезультатаЗапроса.ПоГруппировкамСИерархией».
Дерево значений отображается на управляемой форме через реквизит формы типа «ДеревоЗначений» и элемент формы «Таблица» с включённым отображением дерева. Для программного обхода узлов применяется рекурсия: обработка строки и вызов той же процедуры для её коллекции «Строки».
Настройка отображения дерева в списке
Даже при корректно настроенной иерархии пользователь может не видеть дерево из-за настроек формы списка. В пользовательском режиме режим просмотра переключается через «Ещё» → «Режим просмотра»: доступны варианты «Список», «Иерархический список» и «Дерево». Режим «Дерево» показывает панель навигации по группам слева, «Иерархический список» — вложенность прямо в таблице.
В конфигураторе отображение задаётся в свойствах таблицы формы списка: свойство «Отображение» принимает значения «Список», «ИерархическийСписок» и «Дерево». Учтите, что при включённом отборе (например, поиском по наименованию) дерево автоматически сворачивается в плоский список найденного — это штатное поведение, а не ошибка настройки.
Как проверить результат
Установлен нужный вид: группы и элементы или иерархия элементов
Флаг «Иерархический» снят — группы создать нельзя
В режиме «Дерево» видны папки и вложенность
Плоский список без папок при отключённом отборе
Реквизит «Родитель» заполнен ссылкой на группу
Родитель пустой — элементы лежат в корне
В полях выбора предлагаются только элементы
В документ можно подобрать группу как товар — признак неверного вида иерархии
Типичные ошибки и ограничения
Самая частая проблема — попытка создать группу в неиерархическом справочнике: кнопка «Создать группу» просто отсутствует, и пользователи трактуют это как неисправность. Вторая распространённая ситуация — дублирование структуры: группы создают и в справочнике, и через дополнительные реквизиты классификации, после чего данные расходятся. Выбирайте один способ классификации и придерживайтесь его.
Из технических ограничений стоит помнить: элемент нельзя сделать родителем самому себе или своему потомку — платформа блокирует такую запись ошибкой циклической ссылки. Также удаление группы с вложенными элементами либо запрещено, либо требует предварительного перемещения содержимого, в зависимости от настроек конфигурации.
Когда дерево справочника не подходит: альтернативы
Иерархия справочника — не единственный способ классификации. Если один элемент должен входить сразу в несколько веток (товар относится и к «Акциям», и к «Сезонным»), дерево не справится: у узла только один родитель. В таких случаях используют дополнительные реквизиты и сведения, механизм сегментов или отдельный справочник классификаторов со связью «многие ко многим» через регистр сведений.
Для аналитических разрезов, которые нужны только в отчётах, часто достаточно произвольных группировок в СКД — структура хранения при этом остаётся плоской, а «дерево» строится на лету при формировании отчёта. Это проще в сопровождении, если классификация часто меняется.
Как выбрать подход
Что важно запомнить
Дерево каталогов в 1С строится на иерархических справочниках: включите иерархию в конфигураторе, выберите правильный вид (группы или элементы), создавайте группы кнопкой или кодом через реквизит «Родитель» и проверяйте результат в режиме «Дерево». Любые изменения структуры в рабочей базе делайте только после резервного копирования.
Частые вопросы
Почему в справочнике нет кнопки «Создать группу»?
Кнопка отсутствует, если справочник не является иерархическим или у него выбран вид «Иерархия элементов» — в этом случае вложенность задаётся полем «Родитель» в карточке самого элемента. Проверить настройку можно в конфигураторе на закладке «Иерархия» свойств справочника. Изменить вид иерархии в рабочей базе следует только после резервного копирования.
Можно ли перенести элемент из одной группы в другую?
Да. В пользовательском режиме элемент перетаскивается мышью в нужную группу в режиме отображения «Дерево» либо переносится через изменение поля «Группа» в карточке. Программно достаточно присвоить реквизиту «Родитель» ссылку на новую группу и записать объект. Ссылки на элемент в документах при этом не меняются — перенос безопасен для учётных данных.
Что произойдёт с элементами при удалении группы?
Поведение зависит от конфигурации: чаще всего платформа не даст удалить группу, пока в ней есть элементы или вложенные группы, либо удаление выполняется через пометку с последующим контролем ссылочной целостности. Перед удалением переместите содержимое в другую группу. Удаление объектов с контролем ссылок выполняется через штатную обработку «Удаление помеченных объектов».
Есть ли ограничение на глубину вложенности?
Жёсткого ограничения платформы на число уровней нет, а в конфигураторе можно задать ограничение вручную (значение 0 означает «без ограничений»). Практический предел определяется удобством: структуры глубже 5–7 уровней неудобны в навигации и усложняют построение отчётов с иерархией.
Как вывести иерархию справочника в отчёт?
В запросе отчёта используется конструкция «ИТОГИ ПО» с указанием иерархии, либо в СКД включается группировка по полю с типом «Иерархия». Для справочников с иерархией элементов в запросе дополнительно применяют связь через поле «Родитель». Если стандартных средств не хватает, результат запроса выгружается в дерево значений и формируется программно.
Можно ли сделать, чтобы один товар входил в несколько папок?
Нет, у элемента иерархического справочника только один родитель. Для множественной классификации используют дополнительные реквизиты и сведения, сегменты номенклатуры или отдельный регистр сведений, связывающий товар с несколькими категориями. Попытка эмулировать это дублированием элементов приводит к задвоению остатков и ошибкам в отчётах.