Профессия — 1С

Рукопашный бой Карташ

Категории

Менеджер временных таблиц в 8.3

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

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




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

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

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




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



&НаСервере
Функция СформироватьВременныеТаблицы()

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

	Запрос.Текст =
	"ВЫБРАТЬ
	|	""001"" КАК КодТовара,
	|	""Яблоки"" КАК Наименование
	|ПОМЕСТИТЬ ВТ_Товар
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ
	|	""002"",
	|	""Апельсины""
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	""001"" КАК КодТовара,
	|	""Россия"" КАК Страна
	|ПОМЕСТИТЬ ВТ_Страна
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ
	|	""002"",
	|	""Турция""
	|";

	Запрос.МенеджерВременныхТаблиц	= МенеджерВТ;
	Запрос.Выполнить();
	Возврат МенеджерВТ;

КонецФункции

&НаСервере
Функция ВыполнитьЗапросНаСервере()

	МенеджерВТ = СформироватьВременныеТаблицы();

	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
	|	ВТ_Товар.КодТовара,
	|	ВТ_Товар.Наименование,
	|	ВТ_Страна.Страна
	|ИЗ
	|	ВТ_Товар КАК ВТ_Товар
	|		ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Страна КАК ВТ_Страна
	|		ПО ВТ_Товар.КодТовара = ВТ_Страна.КодТовара";

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

КонецФункции

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




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


МенеджерВТ.Таблицы.Найти("ВТ_Страна").ПолучитьДанные().Выгрузить()

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


МенеджерВТ.Таблицы[1].ПолучитьДанные().Выгрузить()

Добавить комментарий

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

   

2018г. Профессия — 1С. Обмен опытом по программированию в 1С