Как получить иерархию элементов справочника и выполнить их массовую обработку в 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Получение иерархии элементов справочника через запрос

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

Рассмотрим пример запроса, который позволяет отобрать элементы, принадлежащие определенной группе:


ВЫБРАТЬ
    Т1.Ссылка КАК Ссылка
ИЗ
    Справочник.КонтактныеЛица КАК Т1
ГДЕ
    Т1.Ссылка В ИЕРАРХИИ (&СсылкаГруппы)

Разберем важные детали этого решения:

  1. Параметр &СсылкаГруппы: В этот параметр мы передаем ссылку на группу, полученную, например, методом Справочники.КонтактныеЛица.НайтиПоНаименованию("Не для СРМ").
  2. Отбор по иерархии: Оператор В ИЕРАРХИИ берет на себя всю логику поиска подчиненных объектов, что делает код лаконичным и быстрым.
  3. Использование ИТОГИ: Если вашей задачей является вывод данных в Дерево значений, добавление ИТОГИ ПО Ссылка ТОЛЬКО ИЕРАРХИЯ позволит системе автоматически построить структуру дерева в итоговом объекте. Однако, если вам нужен простой список для последующей обработки (например, для удаления тегов), использовать итоги не обязательно — это может быть избыточно.

Массовое изменение данных: как избежать проблем с производительностью

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

Рассмотрим, почему это опасно и как сделать лучше:

Рекомендации по реализации массовых правок

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

  1. Разработайте внешнюю обработку: Создайте обработку, которая выполняет выборку элементов по критерию (используя В ИЕРАРХИИ) и в цикле устанавливает нужные значения или очищает поля.
  2. Используйте транзакции: Если объектов очень много, разбивайте процесс на пакеты (например, по 500-1000 элементов в одной транзакции). Это защитит базу данных от длительных блокировок.
  3. Проверка через журнал регистрации: Всегда фиксируйте результаты массовой операции в ЖурналРегистрации. Это поможет быстро понять, сколько элементов было обработано и не возникло ли ошибок.
  4. Резервное копирование: Перед любыми групповыми операциями убедитесь, что сделана резервная копия. В 1С массовое изменение объектов может повлечь за собой пересчет итогов и значительное увеличение нагрузки на сервер.

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

← На главную