КонЗап — консоль запросов с улучшенным интерфейсом и дополнительными функциями




Консоль запросов (Платформа 8.х режим — обычное приложение) с улучшенным интерфейсом и дополнительными функциями (загрузка параметров запроса из файла, работа с временными таблицами, замер времени выполнения, групповая обработка результатов запроса). Часть функций позаимствованы из других обработок, часть разработаны "с нуля".
Отличия от стандартной консоли запросов (расшифровка к скриншоту №2):

1. Таблица ввода параметров находится в главном окне.
2. Функция, позволяющая загрузить параметры запроса из файла. Файл с параметрами формируется из сеанса отладки в конфигураторе, сразу после заполнения параметров запроса в модуле по команде «Вычислить выражение…(Shift+F9)». Строка-подсказка для вставки в поле  «Вычислить выражение» выводится по нажатию на кнопку (?). По умолчанию, файл с параметрами имеет расширение *.par и создается в том же каталоге, в котором находится обработка.
3. Функция, позволяющая выполнить отдельно взятую временную таблицу запроса либо выделенный фрагмент запроса (вариант выбирается из списка).
4. Производится замер времени выполнения запроса с точностью до .000 сек., а также отображается количество строк в выборке.
5. В подвале табличной части результатов запроса подсчитываются итоги по колонкам с типом данных «Число».
6. Функции групповой обработки результатов запроса, которые позволяют производить действия, аналогичные действиям стандартной групповой обработки справочников и документов. Функция произвольной обработки результатов запроса (скриншот №3) позволяет написать  код алгоритма обработки реквизитов и выполнить его прямо в консоли запросов.
7. Возможность сформировать текст запроса с необходимой «обвязкой» и форматированием для вставки в модуль.
 8. Замер среднего времени выполнения запроса при его многократном выполнении. Запрос выполняется в цикле указанное количество раз и с указанным интервалом. Каждый результат отображается на графике и рассчитывается среднее время (скриншот №4).

17 Comments

  1. TrinitronOTV

    конструктор запроса в данной обработке может быть вызван?

    Reply ↓
  2. serjpsv

    (1) TrinitronOTV, Да, как обычно, правой кнопкой на тексте запроса — конструктор запроса

    Reply ↓
  3. fancy

    А временные таблицы показывает?

    Я пользуюсь консолью «Запросник 1С» от Владимира Тезина — очень помогает в работе

    Reply ↓
  4. serjpsv

    (3) fancy, Да, на втором скриншоте поле выбора временных таблиц обведено под номером 3

    Reply ↓
  5. aspirator23

    (4) Действительно, почти все есть, что нужно, в одном месте. Есть еще одна замечательная функциональность — многократное выполнение запроса. Нужна для объективной оценки времени выполнения запроса. В одной из консолей можно было управлять количеством раз выполнения запроса. Стандартно 5, но можно до 99. Ее бы еще добавить…?

    Reply ↓
  6. serjpsv

    (5) aspirator23, добавить такую функцию — не проблема, но вот по поводу объективности оценки при многократном исполнении запроса я сомневаюсь…Насколько я понимаю, на стороне SQL сервера данные частично кэшируются (данные ВТ, план выполнения запроса и пр.).. Это приводит к тому, что второй и следующие разы запрос будет выполняться быстрее, а иногда намного быстрее, чем первый… Ну и как бы чистота эксперимента нарушается…

    Reply ↓
  7. aspirator23

    (6) serjpsv, насчет кэша все верно. Но многократное измерение помогает при проверке в рабочее время, когда много пользователей работают в базе данных. Выполняются другие запросы и записи в базу данных. В этом случае время выполнения нашего одиночного запроса будет искажено. Приходится несколько раз запускать запрос, чтобы узнать время выполнения, которому можно верить. Многократный запрос все же усредняет и показывает более-менее правдивую информацию. Кстати в той консоли о которой я писал, при многократном запросе, отбрасывались крайние значения. Если необходимо могу прислать ее.

    Reply ↓
  8. aspirator23

    (8) serjpsv, Даже если бы они выполнялись без задержки было бы уже хорошо.

    Reply ↓
  9. serjpsv

    (7) aspirator23, в таком случае есть смысл выполнять запрос несколько раз с возможностью настройки задержки между итерациями выполнения…я поэкспериментирую и добавлю в следующую версию.

    Reply ↓
  10. serjpsv

    (9) aspirator23, Добавил. Запрос можно выполнить в цикле указанное количество раз с указанным интервалом. Результаты отображаются на графике и вычисляется среднее время

    Reply ↓
  11. aspirator23

    (10) serjpsv, спасибо, попробую.

    Reply ↓
  12. aspirator23

    (10) serjpsv, Проверил, все работает хорошо.

    Reply ↓
  13. aspirator23

    (10) serjpsv, как установить параметр запроса в виде списка?

    Reply ↓
  14. serjpsv

    (13) aspirator23, стандартным образом — в пустом поле значения параметра нажимаем «Т», выбираем тип значения «Список значений». Затем набираем сам список…Если в поле уже было что-то введено, нужно сбросить тип значения нажав на «Х», а потом, сделать как описано выше.

    Reply ↓
  15. vladir

    (0) serjpsv, Использую Вашу консоль, очень подходит кнопка «Действия над выборкой». Неудобство в том, что для пометки на удаление проведенных документов надо выполнить два действия: «Отмена проведения» и «Пометка на удаление». Решается просто. Замена 2-х строчек кода на одну

    Процедура ДействиеНадЭлементомВыборки(ЭлементСсылка, Действие)
    
    Если Действие = «пометка на удаление» Тогда
    Объект = ЭлементСсылка.ПолучитьОбъект();
    //Объект.ПометкаУдаления = Истина;
    //Объект.Записать();
    //*** Вместо Объект.ПометкаУдаления = Истина; => Объект.УстановитьПометкуУдаления()
    //*** Из СП: «Если документ проведен, применение метода приводит к отмене проведения.»
    Объект.УстановитьПометкуУдаления(Истина);
    Сообщить(«помечен на удаление » + Строка(ЭлементСсылка));

    Показать

    Reply ↓
  16. serjpsv

    (15) vladir, да, действительно… Упустил этот момент 🙂 Спасибо за замечание, исправлю и выложу.

    Reply ↓
  17. Ольга_tmp

    Спасибо, весьма кстати!

    Reply ↓

Leave a Comment

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