Язык запросов 1С позволяет использовать в запросах временные таблицы, с помощью которых можно:
- повысить производительность запросов;
- в некоторых случаях снизить количество блокировок;
- сделать текст запроса более легким для восприятия.
Предположим, нужно получить данные из двух регистров накопления. Данные из одного регистра поместим во временную таблицу:
Запрос, использующий временную таблицу, будет иметь вид:
Время «жизни» временной таблицы:
- в течение времени исполнения запроса, либо
- в течение времени жизни менеджера временных таблиц (исполнения процедуры в случае программной обработки менеджером).
В обоих случаях временная таблиц может быть уничтожена и ранее этого, с помощью (соответственно):
- конструкции языка запросов, либо
- метода МВТ.
Если требуется в рамках одного запроса определить две временные таблицы с одинаковым именем, одну из них нужно уничтожить вручную, поскольку в рамках одного запроса две временные таблицы с одинаковым именем существовать не могут.
Программная обработка временных таблиц в 1С
Временные таблицы можно обрабатывать программно, для чего используется объект метаданных «Менеджер временных таблиц«. С его помощью можно «перехватывать» таблицы из запроса и передавать между процедурами.
ВАЖНО! В случае использования менеджера временная таблица продолжает жить все время исполнения процедуры; поэтому, для оптимизации производительности, в данном случае ее желательно уничтожать в запросе, либо методом менеджера временных таблиц Закрыть().
Временную таблицу можно получить из другого запроса. Для этого предназначена кнопка «Создать описание временной таблицы»:
В окне «Временная таблица» можно определить её наименование и поля, а далее — работать с ней, как с обычной таблицей данных.
Особенности работы с временными таблицами 1С
- При создании временной таблицы в запросе после ключевого слова «Поместить» указывается имя временной таблицы, которое должно быть уникальным в пределах менеджера временных таблиц.
Рисунок[свернуть]
- При работе с временными таблицами в рамках одного сеанса может быть создано произвольное количество экземпляров менеджера временных таблиц.