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

Как использовать па...
 

Как использовать пакетные запросы в 1С?


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

пакетный запрос пример



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

Привет, Богдан!

Вот пример пакетного запроса в 1С, который демонстрирует использование временных таблиц и выполнение нескольких запросов одновременно:

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

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

В этом примере:
1. Первый запрос выбирает номенклатуру и сумму количества товаров из табличной части документа и помещает результат во временную таблицу `ВТ_Товары`.
2. Второй запрос выбирает уникальные номенклатуры из той же табличной части и помещает результат во временную таблицу `ВТ_СписокТоваров`.
3. Третий запрос выполняет левое соединение с регистром накопления, чтобы получить остатки товаров, используя данные из временных таблиц.

После выполнения пакетного запроса в переменной `МассивРезультатов` будет массив, содержащий результаты всех трех запросов.

Рекомендую посмотреть здесь: https://helpf.pro/faq/view/926.html



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