Менеджер временных таблиц в запросах 1С

Что такое менеджер временных таблиц?

Если говорить в общем смысле, то Менеджер временных таблиц (МВТ) — это встроенный механизм. Он позволяет сохранять промежуточные результаты запросов и использовать их в нескольких запросах подряд. Для этого в 1С существует специальный объект конфигурации, который хранит временные таблицы. Он управляет их жизненным циклом и называется — МенеджерВременныхТаблиц (далее часто МВТ).

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

Как создать и использовать менеджер временных таблиц

1. Создать объект Менеджер временных таблиц

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

МенеджерВТ = Новый МенеджерВременныхТаблиц;

2. Привязать Менеджер временных таблиц к запросу

У объекта Запрос есть свойство МенеджерВременныхТаблиц. В него нужно передать созданный менеджер.

Запрос1 = Новый Запрос;
Запрос1.МенеджерВременныхТаблиц = МенеджерВТ;

3. Создать временную таблицу в запросе

Для создания временной таблицы в запросе используется ключевое слово ПОМЕСТИТЬ. Либо можно это сделать на вкладке Дополнительно в Конструкторе запроса.

МенеджерВТ = Новый МенеджерВременныхТаблиц;
  
Запрос1 = Новый Запрос;
Запрос1.МенеджерВременныхТаблиц = МенеджерВТ;

Запрос1.Текст = 
   "ВЫБРАТЬ
   |	Контрагенты.Ссылка КАК Ссылка,
   |	Контрагенты.Наименование КАК Наименование,
   |	Контрагенты.ИНН КАК ИНН
   |ПОМЕСТИТЬ втКонтрагенты
   |ИЗ
   |	Справочник.Контрагенты КАК Контрагенты";
Создание временной таблицы в 1С

После выполнения такого запроса таблица «втКонтрагенты» будет сохранена в менеджере временных таблиц и доступна для следующих запросов.

4. Использовать временную таблицу в следующем запросе

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

МенеджерВТ = Новый МенеджерВременныхТаблиц;
  
Запрос1 = Новый Запрос;
Запрос1.МенеджерВременныхТаблиц = МенеджерВТ;

Запрос1.Текст = 
   "ВЫБРАТЬ
   |	Контрагенты.Ссылка КАК Ссылка,
   |	Контрагенты.Наименование КАК Наименование,
   |	Контрагенты.ИНН КАК ИНН
   |ПОМЕСТИТЬ втКонтрагенты
   |ИЗ
   |	Справочник.Контрагенты КАК Контрагенты";

... // возможно какой-то код

Запрос2 = Новый Запрос;
Запрос2.МенеджерВременныхТаблиц = МенеджерВТ;
Запрос2.Текст = 
   "ВЫБРАТЬ
   |	втКонтрагенты.Ссылка КАК Ссылка,
   |	втКонтрагенты.Наименование КАК Наименование,
   |	втКонтрагенты.ИНН КАК ИНН,
   |	ДоговорыКонтрагентов.Наименование КАК НаименованиеДоговора,
   |	ДоговорыКонтрагентов.ДатаНачалаДействия КАК ДатаНачалаДействия,
   |	ДоговорыКонтрагентов.ДатаОкончанияДействия КАК ДатаОкончанияДействия,
   |	ДоговорыКонтрагентов.Дата КАК Дата,
   |	ДоговорыКонтрагентов.Номер КАК Номер
   |ИЗ
   |	втКонтрагенты КАК втКонтрагенты
   |	   ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
   |	   ПО втКонтрагенты.Ссылка = ДоговорыКонтрагентов.Контрагент"

Чтобы добавить уже созданную ранее временную таблицу в конструкторе запросов необходимо воспользоваться кнопкой «Создать описание временной таблицы». В открывшемся окне необходимо описать поля созданной таблицы.

Описание временной таблицы в 1С

*Стоит сделать поправку, что в реальной практике после описания временной таблицы ее желательно поместить во временную таблицу, прежде чем соединяться с реальными таблицами. Но в данном примере этот этап был опущен для наглядности использования созданной ВТ в новом запросе.

Жизненный цикл временной таблицы

У временных таблиц есть чёткий жизненный цикл:

  • Временная таблица создаётся при выполнении запроса с оператором ПОМЕСТИТЬ.
  • Она хранится в памяти или на диске (внутри СУБД). Временная таблица доступна только в рамках действия менеджера временных таблиц.
  • После завершения работы с менеджером (или при явном удалении) таблица уничтожается и больше не доступна.

Если нужно явно удалить временную таблицу до окончания работы, применяют специальный метод УНИЧТОЖИТЬ:

////////////////////////////////////////////////////////////////////////////////
УНИЧТОЖИТЬ втКонтрагенты
Уничтожение временной таблицы в 1С

Если же необходимо удалить все временные таблицы, хранящиеся в МВТ, то можно использовать метод Закрыть() менеджера временных таблиц.

МенеджерВТ.Закрыть();

В этом случае МВТ закрывается, все находящиеся в нем временные таблицы удаляются, дальнейшая работа с ним невозможна.

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Отправьте форму и мы вам перезвоним

Отправляя форму вы соглашаетесь с политикой конфиденциальности и даете согласие на обработку персональных данных компании ИП Рыжиченко Антону Ивановичу
Сайт itviar.ru использует cookie для персонализации и хранения настроек.
Отправляя форму вы соглашаетесь с политикой конфиденциальности и даете согласие на обработку персональных данных компании ИП Рыжиченко Антону Ивановичу