Язык запросов 1С 8.3 для начинающих программистов: пакетные запросы и временные таблицы
Автор уроков и преподаватель школы: Владимир Милькин
Пакетные запросы
Пусть у нас есть запрос, выбирающий наименования цветов:
ВЫБРАТЬ
Наименование КАК Цвет
ИЗ
Справочник.Цвета |
И запрос, выбирающий наименования вкусов:
ВЫБРАТЬ
Наименование КАК Вкус
ИЗ
Справочник.Вкусы |
Если нам потребуется получить результат каждого из этих запросов, то мы сначала вставим в консоль первый запрос, выполним его и сохраним результат, а затем проделаем то же самое со вторым запросом.
Вот бы иметь возможность выполнить оба этих запроса последовательно, но в один присест. Так сказать в одном пакете. У платформы есть такая возможность и она называется пакетный запрос.
Чтобы получить пакетный запрос нужно перечислить входящие в него запросы и отделить их друг от друга точкой с запятой.
Таким образом наш пакетный запрос для двух вышеперечисленных запросов будет таким:
ВЫБРАТЬ Наименование КАК Цвет ИЗ Справочник.Цвета ; ВЫБРАТЬ Наименование КАК Вкус ИЗ Справочник.Вкусы |
В результате пакетный запрос вернёт нам сразу две таблицы:
Разумеется в пакетный запрос может входить и 3 и 4 и сколько угодно запросов. Главное отделять их друг от друга точкой с запятой.
Временные таблицы
При пакетном исполнении запроса мы можем любой из его промежуточных результатов поместить во временную таблицу, которая создаётся в памяти компьютера на время исполнения запроса. Это делается для того, чтобы мы смогли обратиться к этому результату в ходе исполнения пакетного запроса ниже.
К примеру, давайте поставим себе цель написать пакетный запрос, который первым запросом выбирает все цвета и помещает их во временную таблицу с именем ТАБЛИЦА_ЦВЕТОВ, вторым запросом выбирает все вкусы и помещает их во временную таблицу с именем ТАБЛИЦА_ВКУСОВ, а третьим запросом делает объединение полученных ранее результатов в одну таблицу:
ВЫБРАТЬ Наименование КАК Цвет ПОМЕСТИТЬ ТАБЛИЦА_ЦВЕТОВ ИЗ Справочник.Цвета ; ВЫБРАТЬ Наименование КАК Вкус ПОМЕСТИТЬ ТАБЛИЦА_ВКУСОВ ИЗ Справочник.Вкусы ; ВЫБРАТЬ Цвет КАК Поле ИЗ ТАБЛИЦА_ЦВЕТОВ ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ Вкус ИЗ ТАБЛИЦА_ВКУСОВ |
Обратите внимание на то, что последняя часть пакетного запроса делает выборку из временных таблиц так, словно это реальные таблицы в базе данных.
Временные таблицы вместе с пакетными запросами позволяют писать достаточно сложные запросы, разбивая их на маленькие кусочки.
Не пугайтесь, если применение этих приемов для вас пока не совсем очевидно. Просто имейте в виду такую возможность и однажды (уже на практике) она обязательно вам пригодится.