Вот пример пакетного запроса в 1С, который демонстрирует использование временных таблиц и выполнение нескольких запросов одновременно:
1С (Код)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
1C
Запрос= Новый Запрос;
Запрос.Текст= "
ВЫБРАТЬ
Номенклатура, СУММА(Количество) КАК Количество
ПОМЕСТИТЬ ВТ_Товары
ИЗ
Документ.Расходная.Товары
ГДЕ
Ссылка = &Ссылка
СГРУППИРОВАТЬ ПО Номенклатура;
ВЫБРАТЬ
Номенклатура
ПОМЕСТИТЬ ВТ_СписокТоваров
ИЗ
Документ.Расходная.Товары
ГДЕ
Ссылка = &Ссылка;
ВЫБРАТЬ
Док.Номенклатура,
Док.Количество КАК Док_Количество,
ЕСТЬNULL(Рег.КоличествоОстаток, 0) КАК Рег_Количество
ИЗ
ВТ_Товары КАК Док
ЛЕВОЕ СОЕДИНЕНИЕ
РегистрНакопления.ОстаткиТоваров.Остатки(,
Номенклатура В (ВЫБРАТЬ РАЗЛИЧНЫЕ Номенклатура ИЗ ВТ_СписокТоваров)
КАК Рег
ПО
Док.Номенклатура = Рег.Номенклатура";
Запрос.УстановитьПараметр("Ссылка",Ссылка);
МассивРезультатов= Запрос.ВыполнитьПакет();
В этом примере:
1. Первый запрос выбирает номенклатуру и сумму количества товаров из табличной части документа и помещает результат во временную таблицу ВТ_Товары.
2. Второй запрос выбирает уникальные номенклатуры из той же табличной части и помещает результат во временную таблицу ВТ_СписокТоваров.
3. Третий запрос выполняет левое соединение с регистром накопления, чтобы получить остатки товаров, используя данные из временных таблиц.
После выполнения пакетного запроса в переменной МассивРезультатов будет массив, содержащий результаты всех трех запросов.