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

Как совместно испол...
 

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


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

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



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

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

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

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

Пример кода:

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

    МассивРезультатов = Запрос.ВыполнитьПакет();

    Для Каждого Результат Из МассивРезультатов Цикл
        Выборка = Результат.Выбрать();
        Пока Выборка.Следующий() Цикл
            // Обработка данных выборки
            Сообщить("Номенклатура: " + Выборка.Номенклатура + ", Количество: " + Выборка.Количество);
        КонецЦикла;

        // Пример использования обхода по группировкам
        Если Результат.ТипЗаписи = ТипЗаписи.РезультатЗапроса Тогда
            ВыборкаГруппировки = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Номенклатура");
            Пока ВыборкаГруппировки.Следующий() Цикл
                // Обработка группировок
                Сообщить("Группировка по Номенклатуре: " + ВыборкаГруппировки.Номенклатура);
            КонецЦикла;
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры

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

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



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