Отладка запроса с содержимым временных таблиц (управляемые формы)






Получение данных запроса из отладки.
Загрузка текста запроса, параметров, данных временных таблиц

Конфигурации 1С становятся все сложнее  часто используются временные таблицы. Данные можно получать непосредственно из отладки.

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

Ниже описан метод которой решает ту же проблему для управляемых форм:

В управляемых формах нельзя открыть форму в контексте сервера, но можно получить данные и сохранить я называю это отложенной отладкой.

Этот способ удобно реализован в Управляемой консоли отчетов она позволяет сохранять данные в файле или настройках (ХранилищеСистемныхНастроек).

Сохранение в настройках более удобно т.к. не нужно иметь папку которая доступна клиенту и серверу.

Вызов отладки правильнее получать из Консоль — Инструменты — Конструктор строки отладки

Используется экспортная функция: УКО_Запрос.СохранитьВНастройки(Запрос, ИмяНастройки = "Запрос (из отладки)"Возвращает "Сохранено успешно" —  все хорошо, если произойдет ошибка вернет строку с текстом ошибки.

Есть аналогичная функция для сохранения в файл: УКО_Запрос.СохранитьВФайлНаСервере (Запрос, Путь, ИмяБезРасширения = "Запрос (из отладки)"

Пример

0. Используем конструктор строки отладки при необходимости

1. В конфигураторе ставим точку останова перед выполнением интересующего нас запроса

В табло вставляем УКО_Запрос.СохранитьВНастройки(Запрос)

2. Открываем консоль в последних открытых данных должна появится строка Запрос (из отладки).

3. Открываем данные и работаем

49 Comments

  1. dandykry

    Интересно было бы, если бы это отработало с менеджером временных таблиц.

    Reply
  2. Evg-Lylyk

    (2) Работает. Таблицы МВТ считываются и добавляются МВТ консоли

    Reply
  3. seperblunt2

    огонь вообще!

    Reply
  4. hotey

    А чем отличается от упомянутой консоли или от «Запросник 2.0»?

    Reply
  5. Evg-Lylyk

    (4) Много чем моё субъективное сравнение

    Подробнее [8.3] Управляемая консоль отчетов (расширение, ВНЕШНЯЯ ОБРАБОТКА)

    Reply
  6. dock

    Чувствую подвох, но никак не пойму где…

    1) «управляемая консоль отчетов 2.5.2» входит в состав демонстрационной конфигурации «управляемое приложение» ? если нет, то вот в упор не вижу кнопки «скачать»…

    2)

    Подобное решение используется в Консоль запросов для УФ универсальная

    была мысль, что это продолжение статьи про консоль запросов по ссылке… но ведь в этой статье используется подобное решение…

    опять таки, если это подобное решение, где ссылочка на текущее решение?

    Reply
  7. Evg-Lylyk

    (6) Здесь описана методика отладки запроса на УФ.

    Управляемая консоль отчетов это продукт поставляется в основном в виде расширения, но есть и внешняя обработка. Реализация описана из УКО. Уберу «Подобное рещени…» чтобы не путать.

    Reply
  8. Evg-Lylyk

    (8) Ссылка в статье

    https://infostart.ru/public/835718/

    Reply
  9. serg_r

    Плюсую

    Reply
  10. Vida

    Подскажите, как я поняла, значения параметров не передаются?

    Но в них вся соль, к тому же бывает что они — таблицы!

    Может подскажите какой-нибудь вариант?

    Reply
  11. Evg-Lylyk

    (11) Все хорошо. Из объекта запрос считываются параметры и временные таблицы

    Reply
  12. Evg-Lylyk

    (11) Посмотрите 4,5 скриншоты

    Reply
  13. Vida

    (13) На этих скриншотах вижу что значения параметров не заполнены.

    Не так?

    Reply
  14. Evg-Lylyk

    (14) Да, неудачный скриншот. Спасибо, учту

    Reply
  15. Vida

    Добрый день!

    Помогите разобраться с консолью:

    когда вставляю в табло

    УКО_Сервер.СохранитьЗапросВНастройки(Запрос)

    пишет значение —

    Переменная не определена (УКО_Сервер)

    и в меню файл Запрос (из отладки) не появляется

    хотя вроде как расширение встало нормально и раздел новый появился «Упр. консоль отчетов»

    Может я вызываю его из слишком специфичного места? Вызываю из обработки Модуль_ДиадокУФ, которая вставлена в конфигурацию, которая в свою очередь запускает модуль, который лежит в в виде внешней обработки на диске в указанной папке.

    //Там сложные запросы в которых черт ногу сломит никак не могу разобраться.

    Reply
  16. Evg-Lylyk

    (16) Из предоставленной информации: Возможно вы запускаете не на сервере.

    Необходимо поставить точку останова на Запрос.Выполнить() ну или когда уже все заполнено далее в табло вычисляемого выражении Shift+F9 вставить текст.

    Текст можно получить через консоль — Инструменты — Конструктор строки отладки…

    УКО_Сервер — серверный модуль… нужно вызывать в контексте сервера

    Reply
  17. Vida

    (17)

    да, по точке останова останавливаюсь на Запрос.Выполнить()

    значит нахожусь на сервере.

    через инструменты тоже не получается, видимо по той же причине: раз в табло написало мне «Переменная не определена (УКО_Сервер) »

    значит вызов не прошел

    Reply
  18. Evg-Lylyk

    А понял вместо УКО_Сервер используйте УКО_Запрос

    Правильнее текст можно получить через консоль — Инструменты — Конструктор строки отладки

    Статью поправлю

    Reply
  19. Vida

    (19)Спасибо, что помогаете!

    Оно продолжает ругаться, но теперь по новому:

    Хотя бы «УКО_Запрос» видит

    Reply
  20. Evg-Lylyk

    (20) Рад помочь, там просто многое переработал, а статью не поправил. Мои извинения за неудобства

    Используйте УКО_Запрос.СохранитьВНастройки

    Проверьте конструктором отладки (инструмент в консоли)

    Reply
  21. Vida

    (19)

    Правильнее текст можно получить через консоль — Инструменты — Конструктор строки отладки

    Точно! Там написано совсем иначе:

    УКО_Запрос.СохранитьВНастройки(Запрос)

    Теперь еще по 3-му ругается:

    Reply
  22. Evg-Lylyk

    Видимо ошибка

    Попробуйте

    В указанной строке 470 (УКО_Запрос)

    » Если ЗначениеЗаполнено(Объект.МенеджерВременныхТаблиц) Тогда»

    заменить на

    » Если Объект.МенеджерВременныхТаблиц <> Неопределено Тогда»

    Reply
  23. Vida

    (23)Поменяла.

    О_О

    OMG Все получилось!

    И параметры видно заполненные и результат запроса в консоле!

    Сейчас умру от счастья!

    Reply
  24. Vida

    Извиняюсь что отвлекаю, может подскажите куда копать?

    При попытке загрузки в консоль второго запроса, через Данные — Запрос (из отладки) получаю ошибку:

    Reply
  25. Evg-Lylyk

    (25) Судя по сообщению… ошибка при передаче таблицы значений. Возможно ошибка, на выходных проверю запрос с ВТ.

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

    Нажмите подробно и пришлите может удастся быстро решить

    Reply
  26. Irwin

    А как дела с производительностью? Например, 10 временных таблиц, в каждой по 10 колонок и 10 тыс. строк. Сколько по времени будут сохраняться данные, и сколько будет запрос открываться в консоли?

    Reply
  27. Evg-Lylyk

    (27) Есть лимит (моя проверка) ячеек 500000 на одну ТЗ.

    При больших объемах конечно будут проблемы. Не решал и не анализировал данный вопрос.

    Reply
  28. belousows

    Расширение добавил в ЗУП3, безопасный режим убрал галку. В конфигураторе видно расширение. В программе консоли нет ((, подскажите , что может быть не так

    Reply
  29. Evg-Lylyk

    (29) Посмотреть инструкцию по установке. Возможно не запускали обработку УКО_УстановкаРасширения.

    Reply
  30. belousows

    (30) Спасибо. Появилась консоль. В зупе3 при тестировании расшифровкки РСВ1 (база 5500 сотрудников) говорит, что превышен размер ВТ

    Reply
  31. belousows

    (31) Все другое отрабатывает отлично, будем активно использовать)))

    Reply
  32. ardarik

    (11) А мы сделали так, что в отладке в конфигураторе параметры запроса преобразовываем в строку, а в консоли запросов 2.0 читаем из строки и вуаля, все параметры в том же виде загружены ))

    Reply
  33. manuel

    Вот пример когда работает без расширений и без лишних телодвижений — https://infostart.ru/public/617990/.

    Нажали кнопку «Сформировать скрипт выгрузки», вставили текст скрипта в отладчик, нажали «Загрузить данные запроса»

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

    Ну и бонусом, граф запроса отрисовался.

    Reply
  34. Evg-Lylyk

    (34) В консоли есть вариант в виде внешней обработки и работает также как вы привели.

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

    Приложил файл сравнения функциональности

    Reply
  35. manuel

    (35)Не, ну каждый может под себя такую табличку подогнать. Всегда можно расставить баллы так, что ты красавчик, а остальные так себе). Если б это было какое то исследование независимой организацией, можно было бы такие таблички всерьез рассматривать.

    По поводу — «много неудобных моментов», ну это очень субъективно. В комментариях особо жалоб я не вижу.

    А по поводу того, что проект не развивается, неправда. Последнее обновление было полгода назад. Готовится новое очень серьезное обновление. То что это не быстро, так извините и проект не из самых простых.

    Reply
  36. Evg-Lylyk

    (36) оценка субъективная. Можете мне написать что вы считаете неправильным. Можем продолжить общение в личке.

    Reply
  37. manuel

    (37)Да дело не в том что я считаю неправильным, просто для одного один функционал важнее, для другого другой. Было бы интересно, если бы например инфостарт делал бы что то типа сравнительных обзоров по основным однотипным продуктам. А так это все очень предвзятая оценка.

    Reply
  38. bugtester

    Добрый день!

    Идея из статьи получения запроса со всеми параметрами из отладчика очень порадовала. Помимо прочих плюшек, в виде параметров из кода на встроенном языке и пр.

    Решил применить к отладке и просмотру запросов из ЗУП 3.1, которые используют представления, соответственно их текст просто так в консоль ручками не копируется.

    Взял обычный отчет ЗУП 3, например, ОтчетыПоСотрудникам. Там запрос с представлениями — в СКД, как в общем-то в основном в остальных отчетах ЗУП 3.1. Заполнение представлений происходит в функции ЗаполнитьОбщиеИсточникиДанныхОтчета() общего модуля ЗарплатаКадрыОбщиеНаборыДанных.

    Поставил точку останова в конце этой процедуры и попытался при отладке выполнить:

    УКО_Запрос.СохранитьВНастройки(Объект.СхемаКомпоновкиДанных.НаборыДанных.Данные) — тип НаборДанныхЗапросСхемыКомпоновкиДанных

    и

    УКО_Запрос.СохранитьВНастройки(Объект.СхемаКомпоновкиДанных.НаборыДанных.Данные.Запрос) — Тип Строка (текст запроса)

    получил ошибку:

    «Неверный тип параметра, ожидаются типы Запрос, МакетКомпоновкиДанных, ДинамическийСписок, ПостроительЗапроса, ПостроительОтчета, »

    Подскажите, как можно применить вашу функцию для сохранения Запроса из отладчика в случае, если этот запрос из СКД?

    Reply
  39. Evg-Lylyk

    (40) тип НаборДанныхЗапросСхемы…не обрабатывается необходимо прописывать его обработку (там есть проблемы нет параметров)

    Посмотрите как там организовано получение данных из отладки там не сложно

    Reply
  40. bugtester

    (40) Добавите в новой версии консоли?

    Можно еще кстати добавить и обработку параметра строка (текст запроса), просто для удобства переноса одного текста без параметров сразу в консоль. Можно конечно и в отладчике открыть текст, скопировать и перенести

    Reply
  41. Evg-Lylyk

    (41) НаборДанныхЗапросСхемы извините пока другие планы

    Текст легко переносится через буфер обмена

    Reply
  42. bugtester

    (42) НаборДанныхЗапросСхемы — жаль, а было бы очень полезно для использования в ЗУП 3.1

    Идеально, если бы такая консоль существовала там в качестве штатной.

    Reply
  43. Evg-Lylyk

    (43) Можете доработать самостоятельно

    Reply
  44. Legolas

    при получении данных из отладки выходит ошибка

    Поле объекта не обнаружено (Type)

    как побороть? вроде делал по описанию, в отладке был текст Успешно сохранено

    Reply
  45. Evg-Lylyk

    (45) Скачайте последнию версию 3.7.6

    Reply
  46. Legolas

    (46) спасибо за быстрый ответ! эта ошибка ушла, буду смотреть дальше.

    Reply
  47. Legolas

    еще ошибка вышла, при выполнении части запроса, конструктор Новый (тип) — выходит исключение если Тип — НеизвестныйОбъект

    может что-то поменять в коде, чтобы обработался этот случай?

    Reply
  48. Evg-Lylyk

    (48) Попробуй исключить обработку этого типа написать что то типа

    Если Тип = <НеизвестныйТип>

    Продолжить

    Reply
  49. Evg-Lylyk

    (48) Ну или в попытку записать

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *