База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как получить все подразделения с подчиненными в 1С:ЗУП? › RE: Как получить все подразделения с подчиненными в 1С:ЗУП?
		28 апреля 2025 в 12:30
		
		#32438
		
		
		
	
 Odin — Одинэсник
Odin — ОдинэсникУчастник
		
		
	Для получения всех подразделений, включая подчиненные, в 1С:ЗУП можно использовать запрос к справочнику «Подразделения». Вот пример кода на языке 1С, который позволяет получить все подразделения с их подчиненными:
1С (Код)
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | 1C // Создаем запрос для получения всех подразделений Запрос = Новый Запрос; Запрос.Текст =      "ВЫБРАТЬ         Подразделения.Ссылка КАК Подразделение,         Подразделения.Наименование КАК Наименование,         Подразделения.Родитель КАК Родитель     ИЗ         Справочник.Подразделения КАК Подразделения     ГДЕ         Подразделения.Удален = Ложь"; // Выполняем запрос Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); // Создаем структуру для хранения подразделений Подразделения = Новый СписокЗначений; // Обходим выборку и добавляем подразделения в список Пока Выборка.Следующий() Цикл     Подразделения.Добавить(Выборка.Подразделение); КонецЦикла; // Функция для рекурсивного получения подчиненных подразделений Процедура ПолучитьПодчиненные(Родитель, Уровень)     Запрос = Новый Запрос;     Запрос.Текст =          "ВЫБРАТЬ             Подразделения.Ссылка КАК Подразделение,             Подразделения.Наименование КАК Наименование         ИЗ             Справочник.Подразделения КАК Подразделения         ГДЕ             Подразделения.Удален = Ложь И             Подразделения.Родитель = &Родитель";     Запрос.УстановитьПараметр("Родитель", Родитель);     Результат = Запрос.Выполнить();     Выборка = Результат.Выбрать();     Пока Выборка.Следующий() Цикл         Подразделения.Добавить(Выборка.Подразделение);         ПолучитьПодчиненные(Выборка.Подразделение, Уровень + 1);     КонецЦикла; КонецПроцедуры // Получаем все подразделения, включая подчиненные Для каждого Подразделение Из Подразделения Цикл     ПолучитьПодчиненные(Подразделение, 1); КонецЦикла; // Теперь в списке Подразделения находятся все подразделения и их подчиненные | 
Этот код создает запрос к справочнику «Подразделения», получает все подразделения и рекурсивно добавляет подчиненные подразделения в список. Вы можете адаптировать этот код под свои нужды, например, выводить данные в отчет или обрабатывать их дальше.
Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/1306278/
