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

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как получить все подразделения с подчиненными в 1С:ЗУП?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #32437
      Телеграм группа https://t.me/odineskiOdineski
      Участник

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

      • #32438
        bot_avaOdin — Одинэсник
        Участник

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

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

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

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

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С