рубрики: Платформа 8.3 | Дата: 12 января, 2017
В платформе 1С:Предриятие 8.3 появилось много новых полезных функций, которые существенно облегчают жизнь разработчику. В частности это касается менеджера временных таблиц.
Напомню, что в платформе 8.2 у менеджера временных таблиц был единственный метод Закрыть(), который закрывал сам менеджер и удалял все временные таблицы, которые в нем использовались.
Если же мы заглянем в синтакс-помощник 8.3, то увидим, что у менеджера временных таблиц добавилось свойство Таблицы, в котором хранятся все временные таблицы, принадлежащие менеджеру. Тип у этого свойства – ВременныеТаблицыЗапроса. Также добавился такой объект как ВременнаяТаблицаЗапроса у которого в свою очередь есть замечательный метод ПолучитьДанные().
Что же это дает нам на практике? А на практике это дает нам возможность в режиме отладки просматривать содержимое временных таблиц, выгружая их в таблицу значений, что в версии 8.2 было невозможно.
Рассмотрим это на примере.
Пусть у нас есть две функции:
&НаСервере
Функция СформироватьВременныеТаблицы()
МенеджерВТ = Новый МенеджерВременныхТаблиц;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ""001"" КАК КодТовара,
| ""Яблоки"" КАК Наименование
|ПОМЕСТИТЬ ВТ_Товар
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ""002"",
| ""Апельсины""
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ""001"" КАК КодТовара,
| ""Россия"" КАК Страна
|ПОМЕСТИТЬ ВТ_Страна
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ""002"",
| ""Турция""
|";
Запрос.МенеджерВременныхТаблиц = МенеджерВТ;
Запрос.Выполнить();
Возврат МенеджерВТ;
КонецФункции
&НаСервере
Функция ВыполнитьЗапросНаСервере()
МенеджерВТ = СформироватьВременныеТаблицы();
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВТ_Товар.КодТовара,
| ВТ_Товар.Наименование,
| ВТ_Страна.Страна
|ИЗ
| ВТ_Товар КАК ВТ_Товар
| ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Страна КАК ВТ_Страна
| ПО ВТ_Товар.КодТовара = ВТ_Страна.КодТовара";
Запрос.МенеджерВременныхТаблиц = МенеджерВТ;
Результат = Запрос.Выполнить();
МенеджерВТ.Закрыть();
Возврат Результат;
КонецФункции
В функции СформироватьВременныеТаблицы() мы подготавливаем временные таблицы и возвращаем менеджер временных таблиц. Соответсвенно в функции ВыполнитьЗапросНаСервере() мы выполняем запрос с использованием ранее полученных временных таблиц. Такая схема достаточно часто встречается в типовых конфигурациях, но конечно же в более сложном виде.
А теперь представим, что нам потребовалось после получения результата запроса в функции ВыполнитьЗапросНаСервере(), просмотреть содержимое временной таблицы ВТ_Страна. Делается это достаточно просто. Ставим на соответствующей строке точку останова, открываем окно Вычислить выражение (не забываем про горячие клавиши Shift + F9) и вводим следующую строку
МенеджерВТ.Таблицы.Найти("ВТ_Страна").ПолучитьДанные().Выгрузить()
В результате вычисления этого выражения получим таблицу значений с данными временной таблицы.
Можно также вместо имени таблицы воспользоваться ее индексом
МенеджерВТ.Таблицы[1].ПолучитьДанные().Выгрузить()
Полезно, Пригодилось.
Спасибос!