Работа с пакетными запросами
Работа с пакетными запросами
Платформа 1С:Предприятие 8 позволяет работать с пакетами запросов. В пакетном запросе тексты запросов разделяются символом ";". Запросы исполняются последовательно, при этом временные таблицы, которые были созданы во время исполнения какого-либо запроса будут существовать до окончания исполнения всего пакета запроса или до исполнения в пакете запроса, уничтожающего данную временную таблицу. Например:
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| УчетНоменклатурыОстаткиИОбороты.Номенклатура,
| УчетНоменклатурыОстаткиИОбороты.КоличествоПриход,
| УчетНоменклатурыОстаткиИОбороты.КоличествоРасход,
| УчетНоменклатурыОстаткиИОбороты.КоличествоКонечныйОстаток
|ПОМЕСТИТЬ УчетНоменклатуры
|ИЗ
| РегистрНакопления.УчетНоменклатуры.ОстаткиИОбороты(, , Авто, , ) КАК УчетНоменклатурыОстаткиИОбороты
|;
|
|ВЫБРАТЬ
| УчетНоменклатуры.Номенклатура,
| УчетНоменклатуры.КоличествоРасход,
| УчетНоменклатуры.КоличествоКонечныйОстаток
|ИЗ
| УчетНоменклатуры КАК УчетНоменклатуры
|";
Результат=Запрос.Выполнить();
Первый запрос создает временную таблицу, данные из которой используются во втором запросе.
Если объекту Запрос, исполняющему пакетный запрос, установлен менеджер временных таблиц, временные таблицы, которые не были уничтожены в рамках пакетного запроса, сохранятся в установленном менеджере. В тексте пакетного запроса возможно использование и уничтожение временных таблиц, которые существовали в установленном менеджере временных таблиц на момент запуска пакета на исполнение.
Метод ВыполнитьПакет()
Кроме метода Выполнить() [v8help://SyntaxHelperContext/objects/catalog213/catalog393/Query/methods/Execute564.html], последовательно выполняющего все запросы пакета и возвращающего результат последнего запроса в пакете, платформа 1С:Предприятие 8 предоставляет еще один метод – ВыполнитьПакет() [v8help://SyntaxHelperContext/objects/catalog213/catalog393/Query/methods/ExecuteBatch3663.html]. Этот метод последовательно выполняет все запросы и возвращает массив результатов для каждого запроса из пакета в последовательности расположения запросов в тексте пакета. Результатом выполнения запроса на уничтожение временной таблицы является значение Неопределено, которое также помещается в массив результатов.