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

18.02.13

Разработка - Инструментарий разработчика

Предлагаю для ознакомления функцию, которую я написал для просмотра содержания временных таблиц во время отладки. Эта функция здорово облегчила мне жизнь во время отладки типовых механизмов.

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

Наименование Файл Версия Размер
Помощник Отладки
.epf 4,25Kb
123
.epf 4,25Kb 123 Скачать

В конфигурацию надо добавить модуль. Я его назвал "Р_ОбщийМодуль"

В модуле надо описать следующую функцию

Функция ПроверитьВремТаб(МенеджерВремТаб,ИмяВремтаб ="",Порядок = "") Экспорт

Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВремТаб;
Запрос.Текст =
"ВЫБРАТЬ
| *
|ИЗ
| ВремТаб КАК ВремТаб
|
|УПОРЯДОЧИТЬ ПО Порядок";

Запрос.Текст = СтрЗаменить(Запрос.Текст,"ВремТаб",ИмяВремтаб); 
Если Порядок = "" тогда 
    Запрос.Текст = СтрЗаменить(Запрос.Текст,"УПОРЯДОЧИТЬ ПО Порядок","");
Иначе 
    Запрос.Текст = СтрЗаменить(Запрос.Текст,"Порядок",Порядок);
КонецЕсли; 

ТЗ = Запрос.Выполнить().Выгрузить(); 

Возврат ТЗ; 

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

После этого в отладке после выполнения нужного запроса в Табло отладки надо вызвать эту функцию с указанием просматриваемого менеджера временных таблиц ,а так же имени временной таблицы

Пример:

Р_ОбщийМодуль.ПроверитьВремТаб(Запрос.МенеджерВременныхТаблиц,"ТЗМагазинВидЦены")

Если временную таьлицу надо отсортировать по какой либо колонке, то третьим параметром надо указать имя колонки упорядочивания.

Например

 Р_ОбщийМодуль.ПроверитьВремТаб(Запрос.МенеджерВременныхТаблиц,"ТЗМагазинВидЦены","Магазин") 

Также можно воспользоваться готовой обработкой и вызывать функцию из нее (обработка прилагается) 

См. также

SALE! 20%

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 10400 руб.

02.09.2020    121547    670    389    

709

SALE! 25%

Infostart PrintWizard

Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

18000 15300 руб.

06.10.2023    7252    21    6    

39

SALE! 20%

Infostart УДиФ: Управление данными и формами

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

10000 8000 руб.

10.11.2023    3490    11    1    

33

SALE! 30%

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

3600 2520 руб.

14.01.2013    177716    1073    0    

849

Многопоточность. Универсальный «Менеджер потоков» 2.1

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    99332    239    97    

296

[ЕХТ] Фреймворк для Расширений 1С

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Платные (руб)

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    18095    6    8    

39

1С HTML Шаблоны / HTML Templates

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    28081    3    10    

14

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

Инструментарий разработчика Обмен между базами 1C Платформа 1С v8.3 Платные (руб)

В процессе работы в 1С часто возникает потребность получить данные из другой базы.  Обычно это делается через COM-соединение, и время выполнения запроса при этом оставляет желать лучшего. В данной публикации представлено универсальное решение, позволяющее практически моментально выполнить произвольный код или запрос с параметрами в другой информационной базе через Web-сервис.

2400 руб.

24.09.2019    23591    15    15    

32
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. wunderland 201 14.02.13 19:25 Сейчас в теме
В ЗиУП для Украины...
ОбщегоНазначения.ПоказатьВременнуюТаблицу(ИсходныйЗапрос, ИмяВременнойТаблицы = "", Показать = Ложь)
все придумано до нас...
rpgshnik; aet; +2 Ответить
2. aet 54 15.02.13 07:04 Сейчас в теме
(1) спасибо, нашел аналог в УПП.
Не с самыми удобными параметрами и именем модуля конечно...

Модуль РасширеннаяАналитикаУчета
// Процедура формирует запрос по временной таблице.
//
// Параметры:
// СтруктураШапкиДокумента – Структура - Реквизиты документа "Расчет себестоимости выпуска"
// МенеджерВременныхТаблиц - МенеджерВременныхТаблиц
// ИмяВременнойТаблицы - Строка - Имя временной таблицы
//
Процедура ПоказатьВременнуюТаблицу(
СтруктураШапкиДокумента,
МенеджерВременныхТаблиц,
ИмяВременнойТаблицы
) Экспорт
3. Поручик 4670 15.02.13 09:49 Сейчас в теме
(0) Всё уже украдено до нас. (С)
УТ 11.

// Функция показывает все поля указанной временной таблицы из менеджера временных таблиц.
// Используется для просмотра временных таблиц в отладчике.
// Пример вызова функции:
//	ЗапасыСервер.ПоказатьВременнуюТаблицу(МенеджерВременныхТаблиц, "ТаблицаТоваров")
//
Функция ПоказатьВременнуюТаблицу(МенеджерВременныхТаблиц, ИмяВременнойТаблицы) Экспорт
Death_eye; stupidgamer; alwiz3; Istur; nsirotkin@mail.ru; u_n_k_n_o_w_n; +6 Ответить
26. ipoloskov 162 24.10.17 14:23 Сейчас в теме
Много инструментов, но в неподготовленной УПП на 8.2 ни один не работает.
Вечером вставлю ПоказатьВременнуюТаблицу(МенеджерВременныхТаблиц, ИмяВременнойТаблицы) из УТ11 в какой-нибудь общий модуль, но что делать прямо сейчас - непонятно.
И кто мешал разработчикам воткнуть эту функцию в стандартную поставку?
4. kibertechnology 117 15.02.13 14:53 Сейчас в теме
Зато есть дополнительная сортировка чего в типовом варианте нет. ;-)
5. petrov_al 10 15.02.13 17:09 Сейчас в теме
(4) kibertechnology, у меня есть переделанная инфостаровская обработка с сортировкой и встроенным отбором
6. WKBAPKA 214 17.02.13 11:08 Сейчас в теме
а я не знал... в типовых же функции не документированы ... спасибо за идею, пусть уже и за совсем не свежую
7. WKBAPKA 214 17.02.13 11:15 Сейчас в теме
В УТП для Украины я такой не нашел
8. SeiOkami 3423 17.02.13 11:56 Сейчас в теме
В любом случае, я о таком не знал. У знал из статьи. Так что плюс =)
Evg-Lylyk; hasp_x; +2 Ответить
9. dryms 249 17.02.13 22:56 Сейчас в теме
Это старо, как минимум года 2
10. aet 54 18.02.13 04:10 Сейчас в теме
(9) dryms, однако актуально, так как (2) использовать при отладке невозможно.
11. Synoecium 778 18.02.13 08:22 Сейчас в теме
Сам пользовался подобной функцией, но на практике не всегда запрос с временными таблицами имеет МенеджерВременныхТаблиц, например, ВТ создается и используется в пределах одного вызова запроса. Поэтому сейчас пользуюсь таким доработанным под себя вариантом, может кому пригодится:

Функция ЛукВТ(Запрос, ИмяВнутреннейТаблицы) Экспорт
Перем ЗапросТМП, Р;
//Получаем таблицу из менеджера временных таблиц запроса
ЗапросТМП=Новый Запрос("ВЫБРАТЬ * ИЗ "+ИмяВнутреннейТаблицы);
Если Запрос.МенеджерВременныхТаблиц=Неопределено Тогда
МенеджерВТ = Новый МенеджерВременныхТаблиц;
Запрос.МенеджерВременныхТаблиц = МенеджерВТ;
Запрос.Выполнить();
ЗапросТМП.МенеджерВременныхТаблиц=МенеджерВТ;
Р=ЗапросТМП.Выполнить().Выгрузить();
Запрос.МенеджерВременныхТаблиц = Неопределено;
Иначе
ЗапросТМП.МенеджерВременныхТаблиц=Запрос.МенеджерВременныхТаблиц;
Р=ЗапросТМП.Выполнить().Выгрузить();
КонецЕсли;

Возврат Р;
КонецФункции
Lukich66; zavis11; purgin; ВладимирVolodya; Serg_KSV; Nuuq; ASDF2; VitaliyCeban; gigapevt; Craig; smit1c; AlexiyI; ASV085; Redhatych; Tavalik; mailrum2004; RodinMax; Tolpinski; ixijixi; kibertechnology; CratosX; +21 Ответить
12. yuraos 991 18.02.13 10:39 Сейчас в теме
В составе подсистемы "Обмен данными COM"
имеется консолька запросов, которая помимо многого прочего, позволяет:
1) используя код обработчиков событий,
перед и после выполнения запроса програмно запускать на выполнение другие запросы.
2) использовать при выполнении цепочки таких запросов единого менеджера ВТ.
Что позволяет реализовать обсуждаемую задачу прямо в консоли.
Перед выполнением запроса запускаем на выполнение другой запрос, который создает ВТ,
а самом запросе пишим: ВЫБРАТЬ * ИЗ ИмяВТ
kibertechnology; +1 Ответить
13. okref 18.02.13 13:56 Сейчас в теме
Чтоб совсем красиво было, исправь в тексте "написал для проСОМТРА".
14. eeeio 123 19.02.13 09:38 Сейчас в теме
тут велосипед с несколькими скоростями http://infostart.ru/public/76529/
RustIG; kibertechnology; +2 Ответить
15. tormozit 7136 03.03.13 03:16 Сейчас в теме
В ИР 2.71 добавлена аналогичная функция ПолВТ.
16. Alfer 16.01.14 19:28 Сейчас в теме
меня устраивает во всем - а некоторые моменты возьму на вооружение для дальнейшего использования
17. pakill 43 20.02.15 19:26 Сейчас в теме
<p style="text-align: left; font-family: courier new,courier; color: blue">
<font color=green>// Функция для просмотра временных таблиц запроса в отладчике

//

// Параметры

//      Запрос         - Запрос

//      ИмяВремТаблицы - Имя временной таблицы.

//                       Если параметр задан, то функция вернет таблицу значений,

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

//

</font><font color=red>Функция </font>ПоказВТ<font color=red>(</font>Запрос<font color=red>, </font>ИмяВремТаблицы <font color=red>= </font><font color=black>""</font><font color=red>) Экспорт



    Если </font>Запрос<font color=red>.</font>МенеджерВременныхТаблиц <font color=red>= Неопределено Тогда

        </font>Запрос<font color=red>.</font>МенеджерВременныхТаблиц <font color=red>= Новый </font>МенеджерВременныхТаблиц<font color=red>;

        </font>Запрос<font color=red>.</font>Выполнить<font color=red>();

    КонецЕсли;



    </font>ЗапросВТ <font color=red>= Новый </font>Запрос<font color=red>(</font><font color=black>"ВЫБРАТЬ * ИЗ " </font><font color=red>+ </font>ИмяВремТаблицы<font color=red>);

    </font>ЗапросВТ<font color=red>.</font>МенеджерВременныхТаблиц <font color=red>= </font>Запрос<font color=red>.</font>МенеджерВременныхТаблиц<font color=red>;



    Если </font>ЗначениеЗаполнено<font color=red>(</font>ИмяВремТаблицы<font color=red>) Тогда

        Возврат </font>ЗапросВТ<font color=red>.</font>Выполнить<font color=red>().</font>Выгрузить<font color=red>();

    КонецЕсли;



    </font>Результат <font color=red>= Новый </font>Структура<font color=red>;

    </font>Текст    <font color=red>= </font>СтрЗаменить<font color=red>(</font>Запрос<font color=red>.</font>Текст<font color=red>, </font>Символы<font color=red>.</font>ПС<font color=red>, </font><font color=black>" "</font><font color=red>);

    </font>ТекстНР  <font color=red>= </font>НРег<font color=red>(</font>Текст<font color=red>);

    </font>Фрагмент <font color=red>= </font><font color=black>" поместить "</font><font color=red>;



    </font>Позиция <font color=red>= </font>Найти<font color=red>(</font>ТекстНР<font color=red>, </font>Фрагмент<font color=red>);



    Пока </font>Позиция <font color=red>> </font><font color=black>0  </font><font color=red>Цикл



        </font>ТекстНР <font color=red>= </font>СокрЛ<font color=red>(</font>Сред<font color=red>(</font>ТекстНР<font color=red>, </font>Позиция <font color=red>+ </font>СтрДлина<font color=red>(</font>Фрагмент<font color=red>)));

        </font>Текст   <font color=red>= </font>СокрЛ<font color=red>(</font>Сред<font color=red>(</font>Текст<font color=red>,   </font>Позиция <font color=red>+ </font>СтрДлина<font color=red>(</font>Фрагмент<font color=red>)));

        </font>Позиция <font color=red>= </font>Найти<font color=red>(</font>ТекстНР<font color=red>, </font><font color=black>" "</font><font color=red>);



        Если </font>Позиция <font color=red>= </font><font color=black>0 </font><font color=red>Тогда

            Прервать;

        КонецЕсли;



        </font>ИмяВТ           <font color=red>= </font>Лев<font color=red>(</font>Текст<font color=red>, </font>Позиция<font color=red>-</font><font color=black>1</font><font color=red>);

        </font>ЗапросВТ<font color=red>.</font>Текст  <font color=red>= </font><font color=black>"ВЫБРАТЬ * ИЗ " </font><font color=red>+ </font>ИмяВТ<font color=red>;



        </font>Результат<font color=red>.</font>Вставить<font color=red>(</font>ИмяВТ<font color=red>, </font>ЗапросВТ<font color=red>.</font>Выполнить<font color=red>().</font>Выгрузить<font color=red>());



        </font>ТекстНР <font color=red>= </font>Сред<font color=red>(</font>ТекстНР<font color=red>, </font>Позиция <font color=red>+ </font><font color=black>1</font><font color=red>);

        </font>Текст   <font color=red>= </font>Сред<font color=red>(</font>Текст<font color=red>,   </font>Позиция <font color=red>+ </font><font color=black>1</font><font color=red>);



        </font>Позиция <font color=red>= </font>Найти<font color=red>(</font>ТекстНР<font color=red>, </font>Фрагмент<font color=red>);



    КонецЦикла;





    Возврат </font>Результат<font color=red>;



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

</font></p>
18. pakill 43 20.02.15 19:30 Сейчас в теме
Прошу прощения за предыдущий пост. Как-то неправильно отформатировал текст.

Вот еще одна процедура



// Функция для просмотра временных таблиц запроса в отладчике
//
// Параметры
// Запрос - Запрос
// ИмяВремТаблицы - Имя временной таблицы.
// Если параметр задан, то функция вернет таблицу значений,
// иначе вернет структуру, содержащую все временные таблицы запроса
//
Функция ПоказВТ(Запрос, ИмяВремТаблицы = "") Экспорт

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

ЗапросВТ = Новый Запрос("ВЫБРАТЬ * ИЗ " + ИмяВремТаблицы);
ЗапросВТ.МенеджерВременныхТаблиц = Запрос.МенеджерВременныхТаблиц;

Если ЗначениеЗаполнено(ИмяВремТаблицы) Тогда
Возврат ЗапросВТ.Выполнить().Выгрузить();
КонецЕсли;

Результат = Новый Структура;
Текст = СтрЗаменить(Запрос.Текст, Символы.ПС, " ");
ТекстНР = НРег(Текст);
Фрагмент = " поместить ";

Позиция = Найти(ТекстНР, Фрагмент);

Пока Позиция > 0 Цикл

ТекстНР = СокрЛ(Сред(ТекстНР, Позиция + СтрДлина(Фрагмент)));
Текст = СокрЛ(Сред(Текст, Позиция + СтрДлина(Фрагмент)));
Позиция = Найти(ТекстНР, " ");

Если Позиция = 0 Тогда
Прервать;
КонецЕсли;

ИмяВТ = Лев(Текст, Позиция-1);
ЗапросВТ.Текст = "ВЫБРАТЬ * ИЗ " + ИмяВТ;

Результат.Вставить(ИмяВТ, ЗапросВТ.Выполнить().Выгрузить());

ТекстНР = Сред(ТекстНР, Позиция + 1);
Текст = Сред(Текст, Позиция + 1);

Позиция = Найти(ТекстНР, Фрагмент);

КонецЦикла;


Возврат Результат;

КонецФункции
Alien_job; +1 Ответить
19. fixin 4252 24.02.16 13:13 Сейчас в теме
А назвать "ПоказатьВременнуюТаблицу", как в типовых слабо? Неудобное название.
20. tenaxxx 09.06.16 04:12 Сейчас в теме
начиная с платформы 8.3.8:
Реализован метод Запрос.ВыполнитьПакетСПромежуточнымиДанными().
Реализовано свойство МенеджерВременныхТаблиц.Таблицы

Как итог для просмотра временных таблиц:
Если временная таблица создается сразу в запросе:
Запрос.ВыполнитьПакетСПромежуточнымиДанными()[i].Выгрузить() - ТаблицаЗначений
Если используется менеджер временных таблиц:
МенеджерВременныхТаблиц.Таблицы[i].ПолучитьДанные().Выгрузить() - ТаблицаЗначений
tricolor; begemot; jif; kraynev-navi; khomkolov; bt_18; igortar; Swetlana; ErshKUS; RockClimber; COMPER; Xel'naga; serge.kuh; onetone; smit1c; Serg_KSV; chinkovs; MariusUrsus; Brook; Tangram; AVKonya; rendalina; zoikins; anco27; romku; Atticus2; Wefast; progbuh; suggestive; vvr908; A_kryl; TeMochkiN; Gvenor; molodoi1sneg; sh_max; georgebgk; 3LinOK; u_n_k_n_o_w_n; Dr.ZIG; alwiz3; fml_nhk; myoker; ditya_bez_glazu; +43 Ответить
21. alexhummer 29.08.16 14:21 Сейчас в теме
Спасибо за подсказку !
:)
22. artem_kray 2 17.04.17 19:55 Сейчас в теме
Спасибо, очень помогла функция, а то я уже почти отчаялся понять регламентированный отчет "Расчет страховых взносов", там куча временных таблиц.
23. tormozit 7136 17.04.17 19:58 Сейчас в теме
(22) Ну для полного счастья еще посмотри на это
25. пользователь 20.10.17 10:15
Сообщение было скрыто модератором.
...
24. Ксакеп 63 06.07.17 09:58 Сейчас в теме
В случае использования Менеджера ВТ достаточно в табло отладчика указать
Запрос.МенеджерВременныхТаблиц.Таблицы["ИмяВременнойТаблицы"].ПолучитьДанные().Выгрузить().

На выходе получите таблицу значений с данными временной таблицы.


// протупил. выше был подобный ответ.
Val300; begemot; 2tone; Swetlana; Berckk; A7758735; Serj1C; MariusUrsus; +8 Ответить
Оставьте свое сообщение