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

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

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

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

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

Многие знают, что временные таблицы используются в пакетах запросов, когда нужно сначала одним запросом получить какую-то информацию, а потом обработать ее уже с помощью другого запроса и получить результат. Таким образом, менеджеры временных таблиц существуют у любых запросов.

Но что делать, когда использования пакетного запроса недостаточно для решения задачи? Например, когда после создания временной таблицы требуется произвести какие-то действия с помощью встроенного языка 1С и только после этого получить окончательный результат запроса. Или, когда временная таблица должна быть получена различными способами, в зависимости от некоторых условий.

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

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

Как назначить менеджер временных в запрос 1С

//создадим запрос
запрос = новый запрос ;

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

Как добавить временную таблицу в менеджер

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

Как удалить временную таблицу из менеджера

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

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

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

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

рубрики: Платформа 8.3 | Дата: 12 Январь, 2017

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

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

Если же мы заглянем в синтакс-помощник 8.3, то увидим, что у менеджера временных таблиц добавилось свойство Таблицы, в котором хранятся все временные таблицы, принадлежащие менеджеру. Тип у этого свойства – ВременныеТаблицыЗапроса. Также добавился такой объект как ВременнаяТаблицаЗапроса у которого в свою очередь есть замечательный метод ПолучитьДанные().

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

Пусть у нас есть две функции:

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

А теперь представим, что нам потребовалось после получения результата запроса в функции ВыполнитьЗапросНаСервере(), просмотреть содержимое временной таблицы ВТ_Страна. Делается это достаточно просто. Ставим на соответствующей строке точку останова, открываем окно Вычислить выражение (не забываем про горячие клавиши Shift + F9) и вводим следующую строку

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

Оцените статью
SoftLast
Добавить комментарий