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

18.02.13

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Помощник Отладки
.epf 4,25Kb
123
123 Скачать (1 SM) Купить за 1 850 руб.

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

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

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

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

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

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

Возврат ТЗ; 

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

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

Пример:

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

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

Например

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

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

См. также

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

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

12000 руб.

02.09.2020    169260    937    403    

905

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

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя. Решение в Реестре отечественного ПО

8400 руб.

20.08.2024    12584    99    42    

101

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

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

9360 руб.

17.05.2024    26523    90    48    

134

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

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

22200 руб.

06.10.2023    16820    41    15    

75

SALE! %

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

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

4800 3840 руб.

14.01.2013    190541    1150    0    

918

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

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

15000 руб.

10.11.2023    11390    40    27    

66

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

Разработка Конструктор автоматизированных рабочих мест "Конструктор АРМ" реализована в виде расширения и является универсальным инструментом для создания АРМ любой сложности в пользовательском режиме.

3600 руб.

27.12.2024    768    2    0    

4

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

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

5000 руб.

07.02.2018    103924    244    100    

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

Модуль РасширеннаяАналитикаУчета
// Процедура формирует запрос по временной таблице.
//
// Параметры:
// СтруктураШапкиДокумента – Структура - Реквизиты документа "Расчет себестоимости выпуска"
// МенеджерВременныхТаблиц - МенеджерВременныхТаблиц
// ИмяВременнойТаблицы - Строка - Имя временной таблицы
//
Процедура ПоказатьВременнуюТаблицу(
СтруктураШапкиДокумента,
МенеджерВременныхТаблиц,
ИмяВременнойТаблицы
) Экспорт
3. Поручик 4661 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 164 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 215 17.02.13 11:08 Сейчас в теме
а я не знал... в типовых же функции не документированы ... спасибо за идею, пусть уже и за совсем не свежую
7. WKBAPKA 215 17.02.13 11:15 Сейчас в теме
В УТП для Украины я такой не нашел
8. SeiOkami 3530 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 786 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 1005 18.02.13 10:39 Сейчас в теме
В составе подсистемы "Обмен данными COM"
имеется консолька запросов, которая помимо многого прочего, позволяет:
1) используя код обработчиков событий,
перед и после выполнения запроса програмно запускать на выполнение другие запросы.
2) использовать при выполнении цепочки таких запросов единого менеджера ВТ.
Что позволяет реализовать обсуждаемую задачу прямо в консоли.
Перед выполнением запроса запускаем на выполнение другой запрос, который создает ВТ,
а самом запросе пишим: ВЫБРАТЬ * ИЗ ИмяВТ
kibertechnology; +1 Ответить
13. okref 18.02.13 13:56 Сейчас в теме
Чтоб совсем красиво было, исправь в тексте "написал для проСОМТРА".
14. eeeio 126 19.02.13 09:38 Сейчас в теме
тут велосипед с несколькими скоростями http://infostart.ru/public/76529/
RustIG; kibertechnology; +2 Ответить
15. tormozit 7245 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 4277 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 7245 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 Ответить
Оставьте свое сообщение