gifts2017

Просмотр временных таблиц

Опубликовал Sanek TGU (sanek_tgu) в раздел Программирование - Инструментарий

Функция для просмотра временных таблиц запроса и возможностью сохранения в Excel

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

Порядок работы:
1. Вставляем код в серверный общий модуль (либо создаем свой)
2. Ставим отчку остановки в нужном месте и выполням функцию (два параметра - Запрос и СохранитьВExcel) см. рис 2
в случае сохранения - на рабочем столе функция создаст папку VT_temp и поместит туда файлы.

Нужно быть внимательным, если стоит уничтожить временную таблицу, то она не будет показана.

Код:

ПолучитьСписокВТ(ТекстЗапроса) ...

Процедура ЗаписатьВТ(ИмяТаблицы, Результат, Каталог) ...


Функция ПросмотрВременныхТаблиц(Запрос, СохранитьВExcel = Ложь) Экспорт
    МассивВТ = ПолучитьСписокВТ(Запрос.Текст);
    МассивТаблиц = Новый Структура;
    
    МенеджерУстановлен = Истина;
    Если Запрос.МенеджерВременныхТаблиц = Неопределено Тогда
        МенеджерУстановлен = Ложь;    
    КонецЕсли;
    
    ЗапросВТ = Новый Запрос;
    
    Если НЕ МенеджерУстановлен Тогда
        МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
        Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
        Запрос.ВыполнитьПакет();
        
        ЗапросВТ.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
    Иначе
        ЗапросВТ.МенеджерВременныхТаблиц = Запрос.МенеджерВременныхТаблиц;    
    КонецЕсли;
    
    Если СохранитьВExcel Тогда
        Попытка
            // на рабочий стол
            WSS = Новый COMОбъект("WScript.Shell");
            ПутьКРабочемуСтолу = WSS.SpecialFolders().Item("Desktop");
            Каталог = "\VT_temp";
            СоздатьКаталог(ПутьКРабочемуСтолу + Каталог);
        Исключение
            Сообщить(ОписаниеОшибки());    
        КонецПопытки;
    КонецЕсли;
    
    Для Каждого ИмяТаблицы из МассивВТ Цикл
        ЗапросВТ.Текст = "ВЫБРАТЬ * ИЗ " + ИмяТаблицы;
        Попытка
            Результат = ЗапросВТ.Выполнить().Выгрузить();        
            МассивТаблиц.Вставить(ИмяТаблицы, Результат);
            
            Если СохранитьВExcel Тогда
                ЗаписатьВТ(ИмяТаблицы, Результат, ПутьКРабочемуСтолу + Каталог + "\");    
            КонецЕсли;
        Исключение
            Сообщить(ОписаниеОшибки());
            Продолжить;    
        КонецПопытки;
    КонецЦикла;
    
    Если НЕ МенеджерУстановлен Тогда
        Запрос.МенеджерВременныхТаблиц.Закрыть();    
    КонецЕсли;
                                        
    Возврат МассивТаблиц;
КонецФункции

Скачать файлы

Наименование Файл Версия Размер
Код полностью 10
.txt 2,69Kb
24.01.14
10
.txt 2,69Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Никита Грызлов (nixel) 07.02.14 14:43
Скапитаню - сохранение в серверном общем модуле на рабочий стол сохранит файлы на сервер.
Выводы очевидны.
Если вывалилось исключение при создании сом-объекта, имеет смысл прерывать процедуру.
Но за идею - плюс.

Еще как идея сохранять таблицы одного запроса не в разные файлы-таблицы, а в разные листы в пределах одного файла.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа