База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как получить все подразделения с подчиненными в 1С:ЗУП? › RE: Как получить все подразделения с подчиненными в 1С:ЗУП?
28 апреля 2025 в 12:30
#32438
Для получения всех подразделений, включая подчиненные, в 1С:ЗУП можно использовать запрос к справочнику «Подразделения». Вот пример кода на языке 1С, который позволяет получить все подразделения с их подчиненными:
1C
// Создаем запрос для получения всех подразделений
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
Подразделения.Ссылка КАК Подразделение,
Подразделения.Наименование КАК Наименование,
Подразделения.Родитель КАК Родитель
ИЗ
Справочник.Подразделения КАК Подразделения
ГДЕ
Подразделения.Удален = Ложь";
// Выполняем запрос
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
// Создаем структуру для хранения подразделений
Подразделения = Новый СписокЗначений;
// Обходим выборку и добавляем подразделения в список
Пока Выборка.Следующий() Цикл
Подразделения.Добавить(Выборка.Подразделение);
КонецЦикла;
// Функция для рекурсивного получения подчиненных подразделений
Процедура ПолучитьПодчиненные(Родитель, Уровень)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
Подразделения.Ссылка КАК Подразделение,
Подразделения.Наименование КАК Наименование
ИЗ
Справочник.Подразделения КАК Подразделения
ГДЕ
Подразделения.Удален = Ложь И
Подразделения.Родитель = &Родитель";
Запрос.УстановитьПараметр("Родитель", Родитель);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Подразделения.Добавить(Выборка.Подразделение);
ПолучитьПодчиненные(Выборка.Подразделение, Уровень + 1);
КонецЦикла;
КонецПроцедуры
// Получаем все подразделения, включая подчиненные
Для каждого Подразделение Из Подразделения Цикл
ПолучитьПодчиненные(Подразделение, 1);
КонецЦикла;
// Теперь в списке Подразделения находятся все подразделения и их подчиненные
Этот код создает запрос к справочнику «Подразделения», получает все подразделения и рекурсивно добавляет подчиненные подразделения в список. Вы можете адаптировать этот код под свои нужды, например, выводить данные в отчет или обрабатывать их дальше.
Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/1306278/