Эта функция здорово облегчила мне жизнь во время отладки типовых механизмов.
В конфигурацию надо добавить модуль. Я его назвал «Р_ОбщийМодуль»
В модуле надо описать следующую функцию
Функция ПроверитьВремТаб(МенеджерВремТаб,ИмяВремтаб ="",Порядок = "") Экспорт
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВремТаб;
Запрос.Текст =
"ВЫБРАТЬ
| *
|ИЗ
| ВремТаб КАК ВремТаб
|
|УПОРЯДОЧИТЬ ПО Порядок";
Запрос.Текст = СтрЗаменить(Запрос.Текст,"ВремТаб",ИмяВремтаб);
Если Порядок = "" тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст,"УПОРЯДОЧИТЬ ПО Порядок","");
Иначе
Запрос.Текст = СтрЗаменить(Запрос.Текст,"Порядок",Порядок);
КонецЕсли;
ТЗ = Запрос.Выполнить().Выгрузить();
Возврат ТЗ;
КонецФункции
После этого в отладке после выполнения нужного запроса в Табло отладки надо вызвать эту функцию с указанием просматриваемого менеджера временных таблиц ,а так же имени временной таблицы
Пример:
Р_ОбщийМодуль.ПроверитьВремТаб(Запрос.МенеджерВременныхТаблиц,»ТЗМагазинВидЦены»)
Если временную таьлицу надо отсортировать по какой либо колонке, то третьим параметром надо указать имя колонки упорядочивания.
Например
Р_ОбщийМодуль.ПроверитьВремТаб(Запрос.МенеджерВременныхТаблиц,»ТЗМагазинВидЦены»,»Магазин»)
Также можно воспользоваться готовой обработкой и вызывать функцию из нее (обработка прилагается)
В ЗиУП для Украины…
ОбщегоНазначения.ПоказатьВременнуюТаблицу(ИсходныйЗапрос, ИмяВременнойТаблицы = «», Показать = Ложь)
все придумано до нас…
(1) спасибо, нашел аналог в УПП.
Не с самыми удобными параметрами и именем модуля конечно…
Модуль РасширеннаяАналитикаУчета
// Процедура формирует запрос по временной таблице.
//
// Параметры:
// СтруктураШапкиДокумента – Структура — Реквизиты документа «Расчет себестоимости выпуска»
// МенеджерВременныхТаблиц — МенеджерВременныхТаблиц
// ИмяВременнойТаблицы — Строка — Имя временной таблицы
//
Процедура ПоказатьВременнуюТаблицу(
СтруктураШапкиДокумента,
МенеджерВременныхТаблиц,
ИмяВременнойТаблицы
) Экспорт
(0) Всё уже украдено до нас. (С)
УТ 11.
Зато есть дополнительная сортировка чего в типовом варианте нет. 😉
(4) kibertechnology, у меня есть переделанная инфостаровская обработка с сортировкой и встроенным отбором
а я не знал… в типовых же функции не документированы … спасибо за идею, пусть уже и за совсем не свежую
В УТП для Украины я такой не нашел
В любом случае, я о таком не знал. У знал из статьи. Так что плюс =)
Это старо, как минимум года 2
(9) dryms, однако актуально, так как (2) использовать при отладке невозможно.
Сам пользовался подобной функцией, но на практике не всегда запрос с временными таблицами имеет МенеджерВременныхТаблиц, например, ВТ создается и используется в пределах одного вызова запроса. Поэтому сейчас пользуюсь таким доработанным под себя вариантом, может кому пригодится:
Функция ЛукВТ(Запрос, ИмяВнутреннейТаблицы) Экспорт
Перем ЗапросТМП, Р;
//Получаем таблицу из менеджера временных таблиц запроса
ЗапросТМП=Новый Запрос(«ВЫБРАТЬ * ИЗ «+ИмяВнутреннейТаблицы);
Если Запрос.МенеджерВременныхТаблиц=Неопределено Тогда
МенеджерВТ = Новый МенеджерВременныхТаблиц;
Запрос.МенеджерВременныхТаблиц = МенеджерВТ;
Запрос.Выполнить();
ЗапросТМП.МенеджерВременныхТаблиц=МенеджерВТ;
Р=ЗапросТМП.Выполнить().Выгрузить();
Запрос.МенеджерВременныхТаблиц = Неопределено;
Иначе
ЗапросТМП.МенеджерВременныхТаблиц=Запрос.МенеджерВременныхТаблиц;
Р=ЗапросТМП.Выполнить().Выгрузить();
КонецЕсли;
Возврат Р;
КонецФункции
В составе подсистемы «Обмен данными COM »
имеется консолька запросов, которая помимо многого прочего, позволяет:
1) используя код обработчиков событий,
перед и после выполнения запроса програмно запускать на выполнение другие запросы.
2) использовать при выполнении цепочки таких запросов единого менеджера ВТ.
Что позволяет реализовать обсуждаемую задачу прямо в консоли.
Перед выполнением запроса запускаем на выполнение другой запрос, который создает ВТ,
а самом запросе пишим: ВЫБРАТЬ * ИЗ ИмяВТ
Чтоб совсем красиво было, исправь в тексте «написал для проСОМТРА«.
тут велосипед с несколькими скоростямиhttp://infostart.ru/public/76529/
В ИР 2.71 добавлена аналогичная функция ПолВТ.
меня устраивает во всем — а некоторые моменты возьму на вооружение для дальнейшего использования
Прошу прощения за предыдущий пост. Как-то неправильно отформатировал текст.
Вот еще одна процедура
// Функция для просмотра временных таблиц запроса в отладчике
//
// Параметры
// Запрос — Запрос
// ИмяВремТаблицы — Имя временной таблицы.
// Если параметр задан, то функция вернет таблицу значений,
// иначе вернет структуру, содержащую все временные таблицы запроса
//
Функция ПоказВТ(Запрос, ИмяВремТаблицы = «») Экспорт
Если Запрос.МенеджерВременныхТаблиц = Неопределено Тогда
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.Выполнить();
КонецЕсли;
ЗапросВТ = Новый Запрос(«ВЫБРАТЬ * ИЗ » + ИмяВремТаблицы);
ЗапросВТ.МенеджерВременныхТаблиц = Запрос.МенеджерВременныхТаблиц;
Если ЗначениеЗаполнено(ИмяВремТаблицы) Тогда
Возврат ЗапросВТ.Выполнить().Выгрузить();
КонецЕсли;
Результат = Новый Структура;
Текст = СтрЗаменить(Запрос.Текст, Символы.ПС, » «);
ТекстНР = НРег(Текст);
Фрагмент = » поместить «;
Позиция = Найти(ТекстНР, Фрагмент);
Пока Позиция > 0 Цикл
ТекстНР = СокрЛ(Сред(ТекстНР, Позиция + СтрДлина(Фрагмент)));
Текст = СокрЛ(Сред(Текст, Позиция + СтрДлина(Фрагмент)));
Позиция = Найти(ТекстНР, » «);
Если Позиция = 0 Тогда
Прервать;
КонецЕсли;
ИмяВТ = Лев(Текст, Позиция-1);
ЗапросВТ.Текст = «ВЫБРАТЬ * ИЗ » + ИмяВТ;
Результат.Вставить(ИмяВТ, ЗапросВТ.Выполнить().Выгрузить());
ТекстНР = Сред(ТекстНР, Позиция + 1);
Текст = Сред(Текст, Позиция + 1);
Позиция = Найти(ТекстНР, Фрагмент);
КонецЦикла;
Возврат Результат;
КонецФункции
А назвать «ПоказатьВременнуюТаблицу», как в типовых слабо? Неудобное название.
начиная с платформы 8.3.8:
Реализован метод Запрос.ВыполнитьПакетСПромежуточнымиДанными().
Реализовано свойство МенеджерВременныхТаблиц.Таблицы
Как итог для просмотра временных таблиц:
Если временная таблица создается сразу в запросе:
Запрос.ВыполнитьПакетСПромежуточнымиДанными()[i].Выгрузить() — ТаблицаЗначений
Если используется менеджер временных таблиц:
МенеджерВременныхТаблиц.Таблицы[i].ПолучитьДанные().Выгрузить() — ТаблицаЗначений
Спасибо за подсказку !
🙂
Спасибо, очень помогла функция, а то я уже почти отчаялся понять регламентированный отчет «Расчет страховых взносов», там куча временных таблиц.
(22) Ну для полного счастья еще посмотри наэто
В случае использования Менеджера ВТ достаточно в табло отладчика указать
Запрос.МенеджерВременныхТаблиц.Таблицы[«ИмяВременнойТаблицы»].ПолучитьДанные().Выгрузить().
На выходе получите таблицу значений с данными временной таблицы.
// протупил. выше был подобный ответ.
Много инструментов, но в неподготовленной УПП на 8.2 ни один не работает.
Вечером вставлю ПоказатьВременнуюТаблицу(МенеджерВременныхТаблиц, ИмяВременнойТаблицы) из УТ11 в какой-нибудь общий модуль, но что делать прямо сейчас — непонятно.
И кто мешал разработчикам воткнуть эту функцию в стандартную поставку?