Долго пользовался предложенным методом //infostart.ru/public/90130/ . Как-то не догадывался опубликовать . Потом увидел запросник, идея понравилась, но не совсем понравился способ просмотра временных таблиц. Да и используется там консоль запросов, а я пользуюсь консолью отчетов. Я понимаю, что способов просмотра временных таблиц реализовано великое множество, но все же осмелюсь предложить велосипед свою доработку стандартной консоли отчетов для просмотра временных таблиц.
Код для вывода временных таблиц приведен ниже:
// формирует список временных таблиц из текста запроса // // Параметры // // Возвращаемое значение: // <Массив> - массив наименований временных таблиц // Функция ПолучитьМассивНаименованийВременныхТаблиц() Экспорт МассивНаименований = Новый Массив; ТекстЗапроса = ПостроительОтчетов.Текст;// преобразуем к стандартному тексту запроса с форматированием Конструктор = Новый КонструкторЗапроса(ТекстЗапроса); ТекстЗапроса = Конструктор.Текст; Шаблон = "Поместить\s+[A-z0-9_А-я]+"; //Поместить + любое количество пробелов (TAB, CR,LF FF)+ следующее слово RegExp = Новый COMОбъект("VBScript.RegExp"); // создаем объект для работы с регулярными выражениями RegExp.MultiLine = Истина; // истина — текст многострочный, ложь — одна строка RegExp.Global = Истина; // истина — поиск по всей строке, ложь — до первого совпадения RegExp.IgnoreCase = Истина; // истина — игнорировать регистр строки при поиске RegExp.Pattern = Шаблон; Если НЕ RegExp.Test(ТекстЗапроса) Тогда Возврат МассивНаименований КонецЕсли; МассивСтрок = RegExp.Execute(ТекстЗапроса); Для каждого Элемент Из МассивСтрок Цикл МассивНаименований.Добавить(СокрЛП(СтрЗаменить(Элемент.Value, "ПОМЕСТИТЬ", ""))); КонецЦикла; Возврат МассивНаименований; КонецФункции // ПолучитьСписокВременныхТаблиц() // формирование структуры временных таблицы // // Параметры // // Возвращаемое значение: // <Структура> - структура, содержащая временные таблицы // Функция ПолучитьВременныеТаблицы() Экспорт СтруктураВременныхТаблиц = Новый Структура; МассивНаименований = ПолучитьМассивНаименованийВременныхТаблиц(); Запрос = ПостроительОтчетов.ПолучитьЗапрос(); Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; Запрос.ВыполнитьПакет(); ВременныйЗапрос = Новый Запрос(); ВременныйЗапрос.МенеджерВременныхТаблиц = Запрос.МенеджерВременныхТаблиц; Для каждого Элемент Из МассивНаименований Цикл ВременныйЗапрос.Текст = "Выбрать * ИЗ " + Элемент; ТаблицаЗапроса = ВременныйЗапрос.Выполнить().Выгрузить(); СтруктураВременныхТаблиц.Вставить(Элемент, ТаблицаЗапроса); КонецЦикла; Возврат СтруктураВременныхТаблиц; КонецФункции // ПолучитьВременныеТаблицы() // формирование элементов формы для вывода таблицы // // Параметры // Процедура СоздатьСтраницуДляВыводаВременнойТаблицы(ЭлементСтруктуры) Наименование = ЭлементСтруктуры.Ключ; ТаблицаЗапроса = ЭлементСтруктуры.Значение; Страница = ЭлементыФормы.ПанельВременныхТаблиц.Страницы.Добавить(); Страница.Имя = Наименование; Страница.Заголовок = Наименование; ЭлементыФормы.ПанельВременныхТаблиц.ТекущаяСтраница = Страница; ТабличноеПоле = ЭлементыФормы.Добавить(Тип("ТабличноеПоле"), Наименование, ,ЭлементыФормы.ПанельВременныхТаблиц); ТабличноеПоле.Верх = 0; ТабличноеПоле.Лево = 0; ТабличноеПоле.Ширина = ЭлементыФормы.ПанельВременныхТаблиц.Ширина - 2; ТабличноеПоле.Высота = ЭлементыФормы.ПанельВременныхТаблиц.Высота - 20; ТабличноеПоле.ТолькоПросмотр = Истина; ТабличноеПоле.УстановитьПривязку(ГраницаЭлементаУправления.Низ, ЭлементыФормы.ПанельВременныхТаблиц, ГраницаЭлементаУправления.Низ); ТабличноеПоле.УстановитьПривязку(ГраницаЭлементаУправления.Право, ЭлементыФормы.ПанельВременныхТаблиц, ГраницаЭлементаУправления.Право); ТабличноеПоле.Значение = ТаблицаЗапроса; ТабличноеПоле.СоздатьКолонки(); КонецПроцедуры // СоздатьСтраницуДляВыводаВременнойТаблицы() // обработчик нажатия кнопки "Временные таблицы" // Процедура КоманднаяПанельФормыВременныеТаблицы(Кнопка) ЭлементыФормы.ПанельВременныхТаблиц.Страницы.Очистить(); СтруктураВременныхТаблиц = ПолучитьВременныеТаблицы(); Для каждого Значение Из СтруктураВременныхТаблиц Цикл СоздатьСтраницуДляВыводаВременнойТаблицы(Значение); КонецЦикла; ЭлементыФормы.ПанельРезультатов.ТекущаяСтраница = ЭлементыФормы.ПанельРезультатов.Страницы.ВременныеТаблицы; ЭлементыФормы.ПанельВременныхТаблиц.Страницы.Удалить(0);// первая страница не нужна. КонецПроцедуры
И не забыть добавить на форму страницу ПанельВременныхТаблиц, кнопку и повесить на нее обработчик.
Изменение от 25.09.2011
Добавлен файл с измененной обработкой "Консоль отчетов" для 8.1 с диска ИТС. В консоль добавлен функционал вывода временных таблиц для СКД.
Существующие ограничения: показ временных таблиц возможен только для первого набора данных типа "Запрос".