gifts2017

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

Опубликовал Андрей Акулов (DrAku1a) в раздел Программирование - Инструментарий

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

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

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

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

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

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

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


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. Нажимаем "Выполнить", затем смотрим результат выполнения и при необходимости - временные таблицы.

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

Наименование Файл Версия Размер
ВыполнениеЗапроса_82.erf 251
.erf 48,26Kb
25.08.14
251
.erf 48,26Kb Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Сергей Ожерельев (Поручик) 24.10.11 15:32
(0) Не вижу достоинств и преимуществ перед другими подобными консолями запросов.
2. Андрей Акулов (DrAku1a) 25.10.11 02:25
(1) Простота использования и минимум излишеств.
Делалось для себя - изначально для простой и быстрой отладки запросов, когда разрабатывал отчеты (при внедрении), но оказалось весьма полезным - при анализе запросов от 1С.
В будущем, возможно углубление в сторону парсинга запроса - разбивать сложные запросы (с соединениями) на несколько простых и собирать обратно.
3. Доржи Балбаров (Angeros) 25.10.11 12:23
По моему усложненная консоль не так уж сложна. Работает как часы.
4. Андрей Акулов (DrAku1a) 25.10.11 12:32
Обновлен интерфейс, более удобное заполнение параметров запроса (выбор типа) + возможность указывать в параметрах массив, список или таблицу значений. Добавлена возможность сохранять/считывать параметры запроса.
5. Сергей Ожерельев (Поручик) 25.10.11 13:41
(2) (4) Ваше право, но изобретаете новую модель велосипеда с треугольными колёсами со штырём вместо сиденья. Удобных консолей запросов с возможностью отладки, просмотра ВТ, обработки результатов, etc тут чуть больше, чем до ... много.
6. Андрей Акулов (DrAku1a) 25.10.11 14:28
(5) Тогда посоветуйте парочку... Может действительно - есть получше.
7. Сергей Ожерельев (Поручик) 25.10.11 14:42
(6) Ссылок не помню, пишу названия публикаций
Запросник от tezin
Дополненная типовая обработка консоль запросов от lavelin
Консоль запросов от lavelin с модификацией от proal (Консоль запросов с просмотром временных таблиц)
Консоль запросов от Чистова
Консоль запросов для отладки запросов на лету + работа с временными таблицами
Консоль запросов (замеры, ВТ, IntelliSense)
8. Андрей Акулов (DrAku1a) 25.10.11 16:31
(7) Воспользовавшись поиском по ИС (по Вашему списку) нашел целый ряд публикаций.
Приведу список :
  • 1. Запросник http://infostart.ru/public/72969/
  • 2. Консоль запросов с просмотром временных таблиц для 8.1 http://infostart.ru/public/92327/
  • 3. Универсальная консоль отчетов http://infostart.ru/public/16782/
  • 4. Шаблон для отчета СКД http://infostart.ru/public/20333/
  • 5. Консоль запросов (еще 1) http://infostart.ru/public/73694/
  • 6. Очередная консоль запросов (замеры, ВТ, IntelliSense) http://infostart.ru/public/73006/
  • 7. Консоль запросов (ИР) http://infostart.ru/public/57854/
  • 8. Удобная консоль запросов http://infostart.ru/public/21993/
  • 9. Еще одна консоль запросов + возможность подключения внешних модулей из файла http://infostart.ru/public/15421/
  • 10. СКД против запроса с итогами http://infostart.ru/public/79992/
  • 11. СКД против "ручного" кодинга http://infostart.ru/public/75878/
  • 12. [8.2] Управляемая консоль отчетов (только управляемые формы) http://infostart.ru/public/77865/
  • 13. Обработка Помощник для написания запроса в тонком клиенте http://infostart.ru/public/83529/
  • 14. Нестандартный синтаксис оператора "ВЫБОР" в запросе http://infostart.ru/public/67585/
  • 15. Недокументированный синтаксис оператора "В" http://infostart.ru/public/67413/

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

    Постараюсь объяснить почему я пользуюсь своей обработкой (и почему я ее здесь положил).
    Вот несколько моих жизненных ситуаций:
    1. нужно как можно быстрее разработать отчет на запросе, не требующий детальной настройки - как универсальный отчет, при этом желательно "на лету" протестировать какой результат будет давать запрос.
    • Открыл обработку - в конструкторе собрал запрос
    • Жму "Выполнить" - заполняю параметры
    • Еще раз "Выполнить" - смотрю что вышло в результате
    • Жму "Код запроса" - копирую текст запроса.
    • Создаю внешний отчет - пихаю туда текст запроса и небольшой код по созданию построителя отчета и оформлению результата.
    На все про все пол-часа, максимум час.

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

    • Открываю свой отладчик запросов, выделяю в модуле текст запроса, вставляю в обработку.
    • Нажимаю "Выполнить" - обработка определит что текст запроса поменялся (при этом сама удалит символы из текста запроса "|"), заполнит список параметров и переместит на страницу "Параметры"...
    • Заполняю значения параметров. Если их немного - вручную. Если много и они сложны - то выгружаю из отладчика.
    • Жму еще раз "Выполнить" - и получаю результат.
    Все это делается очень быстро, без лишних телодвижений... Далее - в зависимости от ситуации:
    • "играю" с параметрами - меняю и смотрю что на что влияет...
    • модифицирую (обычно, упрощаю) текст запроса, смотрю в конструкторе из каких источников собираются данные
    • изменяю текст запроса так, чтобы вывел список документов-регистраторов для записей - и ищу "виновника"...

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

    В общем, обработка сделана так - чтобы не тратить время на просмотр списка ранее сохраненных запросов, а сосредоточиться на отладке одного конкретного. При этом все, что нужно собрано в одном окне в четырех вкладках. Потому и назывется "Выполнение и отладка запросов" (а точнее назвать будет "Выполнение и отладка запроса").
  • 9. Александр Евланников (Evlannikov) 30.10.11 20:05
    10. Анатолий Бритько (headMade) 09.11.11 20:32
    1. Может стоит на основную формы повесить кнопку для копирования в буфер текста, который потом нуна будет вставлять в конфигураторе. (пускай эта кнопка будет н большая, но это на много удобней чем лазить в справку)
    2. Если сразу после копирования в буфер текста попытаться вставить его в Shift+F9, то чет подвисает 1С и через некоторое время буфер очищается а если предварительно вставить его в txt или на форму отчета, тогда все ок сработает. У вас такого не было?
    11. Андрей Акулов (DrAku1a) 09.11.11 20:56
    (10) 1. Можно... сделаю это на странице, куда выводится код запроса.
    2. Такая проблема не возникала. Если используете терминальный сеанс, например Citrix - то проблема может быть в самом терминальном клиенте (отключить настройку синхронизации буферов обмена - должно помочь).
    12. Анатолий Бритько (headMade) 10.11.11 00:35
    DrAku1a пишет:
    Такая проблема не возникала.

    вобщем ХЗ тогда. Попробую может на другом компьютере, но я пробвал на локальной базе.........
    13. Станислав Викторович (mailwood) 13.01.12 17:00
    Ошибка при выполнении запроса:

    {Форма.ФормаОтчета.Форма(12)}: Поле объекта не обнаружено (ТипЗначения)
    14. Алексей (1C_tradeomsk) 30.01.12 18:11
    Давно искал консоль с работающей возможностью задавать тип параметров запроса .... Аллилуйа!!!
    15. Алексей (1C_tradeomsk) 30.01.12 18:11
    Давно искал консоль с работающей возможностью задавать тип параметров запроса .... Аллилуйа!!!
    17. rasswet (rasswet) 28.05.12 18:12
    по-моему запросник пункт 1. выполняет все ваши задачи..если нет-напишите чего там не хватает по вашему..
    18. Программулькин (Программулькин) 01.06.12 10:16
    Ошибка при выполнении запроса:

    {Форма.ФормаОтчета.Форма(12)}: Поле объекта не обнаружено (ТипЗначения)
    /************************************************************************************************************
    ВЫБРАТЬ
    ОсновныеНачисленияРаботниковОрганизаций.Сотрудник,
    ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета,
    ОсновныеНачисленияРаботниковОрганизаций.Результат
    ИЗ
    РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисленияРаботниковОрганизаций
    ГДЕ
    ОсновныеНачисленияРаботниковОрганизаций.Сотрудник В
    (ВЫБРАТЬ
    РаботникиОрганизацийСрезПоследних.Сотрудник КАК Сотрудник
    ИЗ
    РегистрСведений.РаботникиОрганизаций.СрезПоследних(&КонДата, ) КАК РаботникиОрганизацийСрезПоследних
    ГДЕ
    РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение))
    /************************************************************************************************************
    Параметр:
    Имя Тип Значение

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

    ОБЫЧНАЯ КОНСОЛЬ ОТРАБАТЫВАЕТ БЕЗ ОШИБОК
    19. Андрей Акулов (DrAku1a) 05.06.12 03:09
    (18) скоро будет обновление - там все уже исправлено.
    + "визуальная структура запроса"
    + наработки по отладке запроса
    + панель "обработка результата" (программный код), например, для перепроведения документов...
    + генератор модуля универсального отчета
    + если хватит времени - руководство.

    кое-что уже сделано, кое-что в разработке... ориентировочно обновление будет через неделю, но может быть и раньше.
    Для написания сообщения необходимо авторизоваться
    Прикрепить файл
    Дополнительные параметры ответа