[Alimir_BootModal_Login]

Язык запросов 1С 8.3 для начинающих программистов: пакетные запросы и временные таблицы

Автор уроков и преподаватель школы: Владимир Милькин

Пакетные запросы

Пусть у нас есть запрос, выбирающий наименования цветов:

ВЫБРАТЬ
    Наименование КАК Цвет
ИЗ
    Справочник.Цвета

И запрос, выбирающий наименования вкусов:

ВЫБРАТЬ
    Наименование КАК Вкус
ИЗ
    Справочник.Вкусы

Если нам потребуется получить результат каждого из этих запросов, то мы сначала вставим в консоль первый запрос, выполним его и сохраним результат, а затем проделаем то же самое со вторым запросом.

Вот бы иметь возможность выполнить оба этих запроса последовательно, но в один присест. Так сказать в одном пакете. У платформы есть такая возможность и она называется пакетный запрос.

Чтобы получить пакетный запрос нужно перечислить входящие в него запросы и отделить их друг от друга точкой с запятой.

Таким образом наш пакетный запрос для двух вышеперечисленных запросов будет таким:

ВЫБРАТЬ
    Наименование КАК Цвет
ИЗ
    Справочник.Цвета
 
;
 
ВЫБРАТЬ
    Наименование КАК Вкус
ИЗ
    Справочник.Вкусы

В результате пакетный запрос вернёт нам сразу две таблицы:

01

Разумеется в пакетный запрос может входить и 3 и 4 и сколько угодно запросов. Главное отделять их друг от друга точкой с запятой.

Временные таблицы

При пакетном исполнении запроса мы можем любой из его промежуточных результатов поместить во временную таблицу, которая создаётся в памяти компьютера на время исполнения запроса. Это делается для того, чтобы мы смогли обратиться к этому результату в ходе исполнения пакетного запроса ниже.

К примеру, давайте поставим себе цель написать пакетный запрос, который первым запросом выбирает все цвета и помещает их во временную таблицу с именем ТАБЛИЦА_ЦВЕТОВ, вторым запросом выбирает все вкусы и помещает их во временную таблицу с именем ТАБЛИЦА_ВКУСОВ, а третьим запросом делает объединение полученных ранее результатов в одну таблицу:

ВЫБРАТЬ
    Наименование КАК Цвет
ПОМЕСТИТЬ
	ТАБЛИЦА_ЦВЕТОВ
ИЗ
    Справочник.Цвета
 
;
 
ВЫБРАТЬ
    Наименование КАК Вкус
ПОМЕСТИТЬ
	ТАБЛИЦА_ВКУСОВ
ИЗ
    Справочник.Вкусы
 
;
 
ВЫБРАТЬ
    Цвет КАК Поле
ИЗ
    ТАБЛИЦА_ЦВЕТОВ
 
ОБЪЕДИНИТЬ ВСЕ
 
ВЫБРАТЬ
    Вкус
ИЗ
    ТАБЛИЦА_ВКУСОВ

02

Обратите внимание на то, что последняя часть пакетного запроса делает выборку из временных таблиц так, словно это реальные таблицы в базе данных.

Временные таблицы вместе с пакетными запросами позволяют писать достаточно сложные запросы, разбивая их на маленькие кусочки.

Не пугайтесь, если применение этих приемов для вас пока не совсем очевидно. Просто имейте в виду такую возможность и однажды (уже на практике) она обязательно вам пригодится.

Домашнего задания на тему пакетных запросов и временных таблиц в этой части курса не будет.

Пройдите тест

Начать тест

Мы отлично поработали, пора отдохнуть!

Продолжить обучение в школе программирования в 1С

Для учеников

Уровень сложности уроков идёт снизу вверх. Поэтому старайтесь заниматься последовательно, ничего не пропуская и не откладывая на потом.

Обязательно выполняйте все тесты и домашние задания, старайтесь улучшить свои результаты. Сверяйтесь с эталонными решениями только после самостоятельного выполнения задач.

На вопросы учеников — отвечаю по почте,  но прежде загляните в ЧАВО (ссылка) .

С уважением, Владимир Милькин

[Alimir_BootModal_Login]