Как совместно использовать ВыполнитьПакет и ПоГруппировкам в 1С?

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

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

        Как совместно использовать Запрос.ВыполнитьПакет и ОбходРезультатаЗапроса.ПоГруппировкам?

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

          Для совместного использования методов `Запрос.ВыполнитьПакет()` и `ОбходРезультатаЗапроса.ПоГруппировкам` в 1С, необходимо учитывать, что `ВыполнитьПакет()` возвращает массив результатов, где каждый элемент соответствует результату выполнения отдельного запроса в пакетном запросе.

          Вот пример, как это можно реализовать:

          1. Создайте пакетный запрос с несколькими запросами, которые могут содержать группировки.
          2. Выполните пакетный запрос с помощью метода `ВыполнитьПакет()`.
          3. Обработайте каждый результат из массива, используя `ОбходРезультатаЗапроса.ПоГруппировкам` для обхода группировок.

          Пример кода:

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

          В этом примере:
          — Мы создаем пакетный запрос, который включает два запроса с группировкой по полю «Номенклатура».
          — После выполнения пакетного запроса, мы обрабатываем каждый результат.
          — Для каждого результата мы используем `ОбходРезультатаЗапроса.ПоГруппировкам`, чтобы пройтись по группировкам и обработать их.

          Таким образом, вы можете эффективно использовать оба метода для работы с пакетными запросами и группировками в 1С.

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