По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Предлагаю изящное решение с применением рекурсии
Объявляем СписокОтделений как Список Значений.
Перед каждым обращением к процедуре очищаем его.
Допустим, необходимо выбрать все отделения входящие в данное подразделение на всю глубину иерархии.
Объявляем СписокОтделений как Список Значений.
Перед каждым обращением к процедуре очищаем его.
Допустим, необходимо выбрать все отделения входящие в данное подразделение на всю глубину иерархии.
&НаСервере
Процедура ВыборОтделенийВИерархии(Подразделение)
СписокОтделений.Добавить( Подразделение ); // Выводим сразу в Список Значений
Запрос = Новый Запрос;
Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| Отделения.Ссылка КАК Ссылка
| ИЗ
| Справочник.СтруктураПредприятия КАК Отделения
| ГДЕ
| Отделения.Родитель = &Подразделение // Выбираем подразделения у которых исходное является родителем
|";
Запрос.УстановитьПараметр("Подразделение", Подразделение);
Запрос.Текст = Текст;
РезультатЗапроса = Запрос.Выполнить().Выбрать();
Если РезультатЗапроса.Количество() > 0 Тогда
Пока РезультатЗапроса.Следующий() Цикл
ВыборОтделенийВИерархии(РезультатЗапроса.Ссылка); // В каждом из подчиненных подразделений в свою очередь ищем вложенных
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот