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

18.02.13

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

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

Файлы

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

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

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

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

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

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

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

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

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

Возврат ТЗ; 

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

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

Пример:

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

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

Например

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

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

Вступайте в нашу телеграмм-группу Инфостарт

См. также

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

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

15500 руб.

02.09.2020    213244    1165    413    

1050

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

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

8400 руб.

20.08.2024    40657    222    115    

212

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

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

16000 руб.

10.11.2023    18831    76    39    

92

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

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм.

22200 руб.

06.10.2023    26633    67    30    

96

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

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

9500 руб.

17.05.2024    37697    134    55    

176

Инструментарий разработчика Нейросети Платные (руб)

Первые попытки разработки на 1С с использованием больших языковых моделей (LLM) могут разочаровать. LLMки сильно галлюцинируют, потому что не знают устройства конфигураций 1С, не знают нюансов синтаксиса. Но если дать им подсказки с помощью MCP, то результат получается кардинально лучше.<br/> Далее в публикации:<br/> MCP для поиска по метаданым 1С, справке синтакс-помошника и проверки синтаксиса.

9900 руб.

25.08.2025    4148    8    10    

15

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

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

3600 руб.

27.12.2024    3698    7    0    

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

Модуль РасширеннаяАналитикаУчета
// Процедура формирует запрос по временной таблице.
//
// Параметры:
// СтруктураШапкиДокумента – Структура - Реквизиты документа "Расчет себестоимости выпуска"
// МенеджерВременныхТаблиц - МенеджерВременныхТаблиц
// ИмяВременнойТаблицы - Строка - Имя временной таблицы
//
Процедура ПоказатьВременнуюТаблицу(
СтруктураШапкиДокумента,
МенеджерВременныхТаблиц,
ИмяВременнойТаблицы
) Экспорт
3. Поручик 4595 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 216 17.02.13 11:08 Сейчас в теме
а я не знал... в типовых же функции не документированы ... спасибо за идею, пусть уже и за совсем не свежую
7. WKBAPKA 216 17.02.13 11:15 Сейчас в теме
В УТП для Украины я такой не нашел
8. SeiOkami 3594 17.02.13 11:56 Сейчас в теме
В любом случае, я о таком не знал. У знал из статьи. Так что плюс =)
Evg-Lylyk; hasp_x; +2 Ответить
9. dryms 249 17.02.13 22:56 Сейчас в теме
Это старо, как минимум года 2
10. aet 55 18.02.13 04:10 Сейчас в теме
(9) dryms, однако актуально, так как (2) использовать при отладке невозможно.
11. Synoecium 791 18.02.13 08:22 Сейчас в теме
Сам пользовался подобной функцией, но на практике не всегда запрос с временными таблицами имеет МенеджерВременныхТаблиц, например, ВТ создается и используется в пределах одного вызова запроса. Поэтому сейчас пользуюсь таким доработанным под себя вариантом, может кому пригодится:

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

Возврат Р;
КонецФункции
Lukich66; zavis11; purgin; ВладимирVolodya; Serg_KSV; Nuuq; ASDF2; VitaliyCeban; gigapevt; Craig; smit1c; AlexiyI; ASV085; Redhatych; Tavalik; solontsov; RodinMax; Tolpinski; ixijixi; kibertechnology; CratosX; +21 Ответить
12. yuraos 1008 18.02.13 10:39 Сейчас в теме
В составе подсистемы "Обмен данными COM"
имеется консолька запросов, которая помимо многого прочего, позволяет:
1) используя код обработчиков событий,
перед и после выполнения запроса програмно запускать на выполнение другие запросы.
2) использовать при выполнении цепочки таких запросов единого менеджера ВТ.
Что позволяет реализовать обсуждаемую задачу прямо в консоли.
Перед выполнением запроса запускаем на выполнение другой запрос, который создает ВТ,
а самом запросе пишим: ВЫБРАТЬ * ИЗ ИмяВТ
kibertechnology; +1 Ответить
13. okref 18.02.13 13:56 Сейчас в теме
Чтоб совсем красиво было, исправь в тексте "написал для проСОМТРА".
14. eeeio 127 19.02.13 09:38 Сейчас в теме
тут велосипед с несколькими скоростями http://infostart.ru/public/76529/
RustIG; kibertechnology; +2 Ответить
15. tormozit 7305 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 4292 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 7305 17.04.17 19:58 Сейчас в теме
(22) Ну для полного счастья еще посмотри на это
25. пользователь 20.10.17 10:15
Сообщение было скрыто модератором.
...
24. Ксакеп 64 06.07.17 09:58 Сейчас в теме
В случае использования Менеджера ВТ достаточно в табло отладчика указать
Запрос.МенеджерВременныхТаблиц.Таблицы["ИмяВременнойТаблицы"].ПолучитьДанные().Выгрузить().

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


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