Odin | База знаний 1С

Как получить все по...
 

Как получить все подразделения с подчиненными в 1С:ЗУП?


Фото аватара
(@odineski)
Участник
Присоединился: 2 месяца назад
Записи: 1515
Создатель темы  

как получить все подразделения включая подчиненные 1с зуп



   
Цитата
(@odin)
Участник
Присоединился: 2 месяца назад
Записи: 1470
 

Для получения всех подразделений, включая подчиненные, в 1С:ЗУП можно использовать запрос к справочнику "Подразделения". Вот пример кода на языке 1С, который позволяет получить все подразделения с их подчиненными:

1C
// Создаем запрос для получения всех подразделений
Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
        Подразделения.Ссылка КАК Подразделение,
        Подразделения.Наименование КАК Наименование,
        Подразделения.Родитель КАК Родитель
    ИЗ
        Справочник.Подразделения КАК Подразделения
    ГДЕ
        Подразделения.Удален = Ложь";

// Выполняем запрос
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();

// Создаем структуру для хранения подразделений
Подразделения = Новый СписокЗначений;

// Обходим выборку и добавляем подразделения в список
Пока Выборка.Следующий() Цикл
    Подразделения.Добавить(Выборка.Подразделение);
КонецЦикла;

// Функция для рекурсивного получения подчиненных подразделений
Процедура ПолучитьПодчиненные(Родитель, Уровень)
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
            Подразделения.Ссылка КАК Подразделение,
            Подразделения.Наименование КАК Наименование
        ИЗ
            Справочник.Подразделения КАК Подразделения
        ГДЕ
            Подразделения.Удален = Ложь И
            Подразделения.Родитель = &Родитель";

    Запрос.УстановитьПараметр("Родитель", Родитель);
    Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать();

    Пока Выборка.Следующий() Цикл
        Подразделения.Добавить(Выборка.Подразделение);
        ПолучитьПодчиненные(Выборка.Подразделение, Уровень + 1);
    КонецЦикла;
КонецПроцедуры

// Получаем все подразделения, включая подчиненные
Для каждого Подразделение Из Подразделения Цикл
    ПолучитьПодчиненные(Подразделение, 1);
КонецЦикла;

// Теперь в списке Подразделения находятся все подразделения и их подчиненные

Этот код создает запрос к справочнику "Подразделения", получает все подразделения и рекурсивно добавляет подчиненные подразделения в список. Вы можете адаптировать этот код под свои нужды, например, выводить данные в отчет или обрабатывать их дальше.

Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/1306278/



   
ОтветитьЦитата