Выполнение и отладка запроса







Инструмент для программиста. Упрощенный вариант консоли запросов, умеющий записывать/считывать параметры, просматривать временные таблицы и еще…

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

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

  Обработка оформлена в виде пошагового мастера: 

Первый шаг (вкладка «Запрос») — указание самого текста запроса. На этой странице имеется кнопка «Конструктор», вызывает стандартный конструктор запросов. Также можно сохранить/загрузить/отредактировать текст запроса. Можно скопировать текст из конфигуратора, не надо при этом удалять символы | — обработка сама их удалит. Также есть кнопка «Код запроса» — которая оформит текст запроса в виде кода, который можно вставить в конфигуратор.

Второй шаг (вкладка «Параметры») — настройка параметров отчета. Здесь также имеется кнопка «Загрузить…» с помощью которой можно загрузить параметры из файла, но для этого параметры надо предварительно выгрузить. Как это делается — чуть позже…

Третий шаг (вкладка «Результат») — просмотр результата запроса. Результат выводится в табличное поле как таблица или дерево значений. Можно вывести в печатную форму. Также есть кнопка — просмотр временных таблиц (в случае если выполнялся пакет запросов со выгрузкой в промежуточные таблицы).

25.10.2011 — обновлен интерфейс, более удобное заполнение параметров запроса (выбор типа) + возможность указывать в параметрах массив, список или таблицу значений. Добавлена возможность сохранять/считывать параметры запроса.

Воспользовавшись поиском по ИС (по подсказке пользователя Поручик) нашел целый ряд публикаций по теме:
Приведу неполный список :

  1.  Запросник (автор: tezin) 
  2.  Консоль запросов с просмотром временных таблиц для 8.1 (автор: proal) 
  3.  Универсальная консоль отчетов (автор: Evg-Lylyk) 
  4.  Шаблон для отчета СКД (автор: coder1cv8)
  5.  Консоль запросов (еще 1)  (автор: skiller3000)    
  6.  Очередная консоль запросов (замеры, ВТ, IntelliSense)  (автор: vhd)    
  7.  Консоль запросов (ИР) (автор: acsent)   
  8.  Удобная консоль запросов  (автор: pipi) 
  9.  Еще одна консоль запросов + возможность подключения внешних модулей из файла  (автор: Legavaz)  
  10.  СКД против запроса с итогами  (автор: Ish_2) 
  11.  СКД против «ручного» кодинга (автор: Ish_2)   
  12.  [8.2] Управляемая консоль отчетов (только управляемые формы)  (автор: Evg-Lylyk) 
  13.  Обработка Помощник для написания запроса в тонком клиенте   (автор: boln) 
  14.  Нестандартный синтаксис оператора «ВЫБОР» в запросе   (автор: ll13) 
  15.  Недокументированный синтаксис оператора «В»   (автор: German)

Повторюсь: список неполный. То есть есть еще… и много… И после моей публикации еще будут — я уверен.

Да, здесь есть действительно «мощные» разработки! Особенно впечатлили 1, 6, 5. Есть на что посмотреть — и однозначно я буду черпать оттуда идеи для дальнейшего развития. 

Постараюсь объяснить почему я пользуюсь своей обработкой (и почему я ее здесь положил):

Вот несколько моих жизненных ситуаций: 

  1. нужно как можно быстрее разработать отчет на запросе, не требующий детальной настройки — как универсальный отчет, при этом желательно «на лету» протестировать какой результат будет давать запрос.
    • Открыл обработку — в конструкторе собрал запрос
    • Жму «Выполнить» — заполняю параметры
    • Еще раз «Выполнить» — смотрю что вышло в результате 
    • Жму «Код запроса» — копирую текст запроса.
    • Создаю внешний отчет — пихаю туда текст запроса и небольшой код по созданию построителя отчета и оформлению результата.

    На все про все пол-часа, максимум час. 

  2. Отчет построенный на запросе дает неверные данные.
  3. Документ заполняется неправильно, при отладке дошли до процедуры, в которой находится пакетный мегазапрос на три с лишним страницы кода. Кто переносил ЗУП с ЗиК — наверняка сталкивались.

  4. Выделяю в модуле текст запроса и копирую

    • Открываю свой отладчик запросов, вставляю текст.
    • Нажимаю «Выполнить».
    • Заполняю значения параметров. Если их немного — вручную. Если много и они сложны — то выгружаю из отладчика.
    • Жму еще раз «Выполнить» — и получаю результат.
    • Все это делается очень быстро, без лишних телодвижений…

Далее — в зависимости от ситуации:

  1. «играю» с параметрами — меняю и смотрю что на что влияет…
  2. модифицирую (обычно, упрощаю) текст запроса, смотрю в конструкторе из каких источников собираются данные
  3. изменяю текст запроса так, чтобы вывел список документов-регистраторов для записей — и ищу «виновника»…

процесс обычно занимает до нескольких часов (когда примерно знаю где искать — то быстрее).


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

 

Как загрузить параметры из файла (и зачем это надо):

Используется при отладке запросов, особенно в типовых конфигурациях — например ЗУП, когда нужно разобраться откуда в пакете запросов получился тот или иной результат. Технология довольно сложная, но решения проще я пока не нашел (часто это гораздо быстрее, чем указывать параметры «вручную»):

  1. Открыть  обработку, нажать на 2-й странице «Загрузить…«, при этом обработка в области уведомлений выдаст строку, наподобие:
    ВнешниеОтчеты.ПолучитьФорму(«I:ОтладчикЗапросовВыполнениеЗапроса_82.erf», «ВыгрузкаПараметровЗапроса»).ВыгрузитьПараметры(Запрос)
    и вопрос «Прочитать параметры из файла?» — поскольку файла пока еще нет, нажимаем «Нет«.
  2. Запускается отладка и ставится точка останова на строке «Запрос.Выполнить(………«, затем выполняются в программе действия, пока не дойдет до точки останова. Тогда надо вызвать в отладчике «Вычислить выражение» (Shift + F9) и ввести код для вычисления, который выдала нам обработка на шаге 1. В результате выполнения должно выдать имя файла, куда выгрузились параметры. Это имя нам не особо нужно, т.к. обработка сама найдет откуда надо считывать…
  3. Продолжить выполнение (или завершить отладку — решать вам).
  4. Перейти в обработку «ВыполнениеЗапроса», скопировать-вставить текст запроса из изучаемой процедуры, перейти на вкладку «Параметры», там нажать кнопку «Загрузить…» и на вопрос  «Прочитать параметры из файла?» — теперь нажимаем «Да».Обработка загрузит все параметры, даже массивы и таблицы/списки значений (такие параметры нельзя указать из табличной части).
  5. Нажимаем «Выполнить«, затем смотрим результат выполнения и при необходимости — временные таблицы.

19 Comments

  1. Поручик

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

    Reply
  2. DrAku1a

    (1) Простота использования и минимум излишеств.

    Делалось для себя — изначально для простой и быстрой отладки запросов, когда разрабатывал отчеты (при внедрении), но оказалось весьма полезным — при анализе запросов от 1С.

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

    Reply
  3. Angeros

    По моему усложненная консоль не так уж сложна. Работает как часы.

    Reply
  4. DrAku1a

    Обновлен интерфейс, более удобное заполнение параметров запроса (выбор типа) + возможность указывать в параметрах массив, список или таблицу значений. Добавлена возможность сохранять/считывать параметры запроса.

    Reply
  5. Поручик

    (2) (4) Ваше право, но изобретаете новую модель велосипеда с треугольными колёсами со штырём вместо сиденья. Удобных консолей запросов с возможностью отладки, просмотра ВТ, обработки результатов, etc тут чуть больше, чем до … много.

    Reply
  6. DrAku1a

    (5) Тогда посоветуйте парочку… Может действительно — есть получше.

    Reply
  7. Поручик

    (6) Ссылок не помню, пишу названия публикаций

    Запросник от tezin

    Дополненная типовая обработка консоль запросов от lavelin

    Консоль запросов от lavelin с модификацией от proal (Консоль запросов с просмотром временных таблиц)

    Консоль запросов от Чистова

    Консоль запросов для отладки запросов на лету + работа с временными таблицами

    Консоль запросов (замеры, ВТ, IntelliSense)

    Reply
  8. DrAku1a
    Reply
  9. Evlannikov

    Может пригодится: http://chistov.spb.ru/publ/2-1-0-9

    Reply
  10. headMade

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

    2. Если сразу после копирования в буфер текста попытаться вставить его в Shift+F9, то чет подвисает 1С и через некоторое время буфер очищается а если предварительно вставить его в txt или на форму отчета, тогда все ок сработает. У вас такого не было?

    Reply
  11. DrAku1a

    (10) 1. Можно… сделаю это на странице, куда выводится код запроса.

    2. Такая проблема не возникала. Если используете терминальный сеанс, например Citrix — то проблема может быть в самом терминальном клиенте (отключить настройку синхронизации буферов обмена — должно помочь).

    Reply
  12. headMade
    DrAku1a пишет:

    Такая проблема не возникала.

    вобщем ХЗ тогда. Попробую может на другом компьютере, но я пробвал на локальной базе………

    Reply
  13. mailwood

    Ошибка при выполнении запроса:

    {Форма.ФормаОтчета.Форма(12)}: Поле объекта не обнаружено (ТипЗначения)

    Reply
  14. 1C_tradeomsk

    Давно искал консоль с работающей возможностью задавать тип параметров запроса …. Аллилуйа!!!

    Reply
  15. 1C_tradeomsk

    Давно искал консоль с работающей возможностью задавать тип параметров запроса …. Аллилуйа!!!

    Reply
  16. Rino

    Спасибо

    Reply
  17. rasswet

    по-моему запросник пункт 1. выполняет все ваши задачи..если нет-напишите чего там не хватает по вашему..

    Reply
  18. Программулькин

    Ошибка при выполнении запроса:

    {Форма.ФормаОтчета.Форма(12)}: Поле объекта не обнаружено (ТипЗначения)

    /************************************************************************************************************

    ВЫБРАТЬ

    ОсновныеНачисленияРаботниковОрганизаций.Сотрудник,

    ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета,

    ОсновныеНачисленияРаботниковОрганизаций.Результат

    ИЗ

    РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисленияРаботниковОрганизаций

    ГДЕ

    ОсновныеНачисленияРаботниковОрганизаций.Сотрудник В

    (ВЫБРАТЬ

    РаботникиОрганизацийСрезПоследних.Сотрудник КАК Сотрудник

    ИЗ

    РегистрСведений.РаботникиОрганизаций.СрезПоследних(&КонДата, ) КАК РаботникиОрганизацийСрезПоследних

    ГДЕ

    РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение))

    /************************************************************************************************************

    Параметр:

    Имя Тип Значение

    КонДата Дата 31.05.2012 0:00:00

    /*************************************************************************************************************

    ОБЫЧНАЯ КОНСОЛЬ ОТРАБАТЫВАЕТ БЕЗ ОШИБОК

    Reply
  19. DrAku1a

    (18) скоро будет обновление — там все уже исправлено.

    + «визуальная структура запроса»

    + наработки по отладке запроса

    + панель «обработка результата» (программный код), например, для перепроведения документов…

    + генератор модуля универсального отчета

    + если хватит времени — руководство.

    кое-что уже сделано, кое-что в разработке… ориентировочно обновление будет через неделю, но может быть и раньше.

    Reply

Leave a Comment

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