Структура запроса (Infostart Toolkit)

Публикация № 1392009 02.03.21

Разработка - Инструментарий разработчика - Консоль запросов

Разбор структура запроса дерево схема консоль инструмент программист анализ сложный

Описание механизма разбора запроса на части (дерево), используемого в IS Toolkit и Управляемой консоли отчетов

Для облегчения понимания и отладки больших запросов удобно разбить их на части - запросы пакетов, вложенные, объединения. Используется это в консолях запросов для  построения дерева и выполнения отдельных запросов. Идея не новая, уже были аналогичные реализации в конце разместил ссылки на них.

Реализация в Infostart Toolkit учитывает:

  • Запросы пакета
  • Вложенные запросы
  • Запросы объединений

Аналогичный механизм используется в проекте для сообщества Управляемой консоли отчетов (в Toolkit более отлажен)

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

 

 

Для элементов структуры доступно:

  • Выполнение, выполнение с ВТ
  • Текст запроса (отображается без ВТ)
  • Используемые параметры (редактирование только в главном запросе)

Недоступно редактирование текста, в т.ч. конструктором

 

 

Производительность

Работает все быстро и хорошо на больших запросах. Например: Тестовый запрос - 750~ строк, 21 запрос в пакете, 18 вложенных запросов и содержащий 90 объединений, анализируется и отображается менее чем за 0.5 сек (на весьма слабеньком компьютере).

При необходимости в настройках можно отключить разбор структуры

 

 

О реализации

Для разбора запроса можно было использовать два варианта:

  1. Объект СхемаЗапроса (появился в платформе 8.3.5)
  2. Собственный парсер

Выбрал СхемуЗапроса со всеми ее недостатками, т.к. по пути 2 уже ходил и набил много шишек.

из проблем: не анализируются запросы в выражениях. Например: "В (<запрос>)"

ВЫБРАТЬ
	_ДемоНоменклатура.Ссылка КАК Ссылка
ИЗ
	Справочник._ДемоНоменклатура КАК _ДемоНоменклатура
ГДЕ
	_ДемоНоменклатура.ВидНоменклатуры В
			(ВЫБРАТЬ
				_ДемоВидыНоменклатуры.Ссылка КАК Ссылка
			ИЗ
				Справочник._ДемоВидыНоменклатуры КАК _ДемоВидыНоменклатуры
			ГДЕ
				НЕ _ДемоВидыНоменклатуры.ПометкаУдаления)

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

 

См. также:

Визуальная структура запроса (Андрей Акулов)

Консоль запросов с графом - анализатор сложных запросов (Тарас Пачуашвили)

Дерево запросов Подсистема "Инструменты разработчика" v5.72 (Сергей Старых)

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. пользователь 02.03.21 10:56
Сообщение было скрыто модератором.
...
2. kalyaka 729 02.03.21 11:51 Сейчас в теме
сложность - собрать все временные таблицы, используемые в части пакета
С использованием "Схемы запроса" это не должно быть проблемой:
Найти временные таблицы можно перебрав все источники пакета:
Для Каждого ОператорВыбрать Из ЗапросПакета.Операторы Цикл
  Для Каждого Источник Из ОператорВыбрать.Источники Цикл
    ИмяТаблицы = Источник.Источник.ИмяТаблицы;
    Если ЗапросПакета.ДоступныеТаблицы.Найти("Временные таблицы").Состав.Найти(ИмяТаблицы) Тогда
      //  Это временная таблица
ivanov660; Evg-Lylyk; +2 Ответить
3. Evg-Lylyk 3650 02.03.21 11:58 Сейчас в теме
(2) Спс, посмотрю. Может то что вы предлагаете лучше.
Проблема может быть использовании ВТ в выражении В которое Схемой не разбирается.
4. kalyaka 729 02.03.21 12:11 Сейчас в теме
(3)Это да, тут платформа может дать только текст выражения. Однако из него можно вычленить образцы "ИЗ Таблица КАК Псевдоним" и уже от туда вытянуть имена используемых таблиц. Даже достаточно просто поискать по ключевому слову ИЗ и извлечь имена используемых таблиц, следуемых после.
5. Evg-Lylyk 3650 02.03.21 12:16 Сейчас в теме
(4) Решаемо, мне нужно было найти использование ВТ, искал в тексте ИЗ <Имя таблицы без .>
6. dhurricane 02.03.21 14:57 Сейчас в теме
А почему отказался от поддержки редактирования части запроса и его параметров? Слишком трудоемко?
7. Evg-Lylyk 3650 02.03.21 15:39 Сейчас в теме
(6) Не занимался и сложность конечно, есть такие мысли
Редактирование параметров не представляю сценарий когда это полезно
Редактирование части как то не очевидно будет происходить.
Сейчас можно выделить часть запроса и вызвать Конструктор (выделенного)
Могут быть ручные изменения, это уже отдельно нужно разбирать без схемызапроса.
Вот есть выделенный какой то вложенный запрос где его начало и конец в главном запросе.
8. Yashazz 4091 04.03.21 10:38 Сейчас в теме
Покамест то, что я вижу, не сильно отличается от штатного конструктора запросов платформы. И открытым остаётся вопрос, на кой всё это нужно. Я в своей системе анализа кода начал было такое, но оказалось нафиг не надо никому из коллег, потому бросил.
Оставьте свое сообщение

См. также

Подсистема "COMExchange": консоль запросов в режиме «Консоль кода». Промо

Консоль запросов v8 1cv8.cf Россия Бесплатно (free)

Описана возможность использования обработки «Консоль запросов 1С+ADO» в качестве «консоли кода». При этом имеется возможность помещения результатов вычислений в «табло формул». Кроме результатов вычислений в это «табло» можно также вывести время выполнения и описание обработанных ошибок времени исполнения.

03.04.2014    26416    yuraos    2    

Тонкий конструктор СКД (Infostart Toolkit)

Прочие инструменты разработчика v8 1cv8.cf Бесплатно (free)

Реализация конструктора СКД с нуля для управляемых форм. Контекстная подсказка для языка выражений СКД и другое.

01.09.2021    2813    Evg-Lylyk    13    

Infostart Toolkit – инструмент, в котором сделано то, что давно просят от 1С

Прочие инструменты разработчика v8 Бесплатно (free)

Лауреат Infostart Awards-2019, ведущий разработчик инструментов Infostart Toolkit Евгений Люлюк рассказывает о том, как развивается, какие задачи закрывает и какие проблемы решает представляемый им набор инструментов разработчика.

09.06.2021    5965    Evg-Lylyk    5    

Редактор кода, запроса, ... Infostart Toolkit (интеграция с MS Monaco)

Консоль запросов Прочие инструменты разработчика v8 v8::УФ 1cv8.cf Бесплатно (free)

Контекстная подсказка, подцветка синтаксиса в тонком клиенте. В платформе 1С редактор кода на управляемых формах обладает нулевой функциональностью, интеграция с MS Monaco позволяет запустится просто в космос.

28.05.2021    5544    Evg-Lylyk    14    

Подсистема "COMExchange", "Консоль запросов 1C + ADO" - сервис обработки выборки запроса: грузим курс «бакса» ЦБРФ из файла *.dbf или *.xlsx. Промо

Консоль запросов v8 КА1 УТ10 УПП1 Россия Бесплатно (free)

На примере загрузки курса валюты продемонстрированы возможности консоли запросов в составе подсистемы "COMExchange" для обработки данных из внешних файлов и их синхронизации с данными информационной базы 1С.

10.03.2013    33679    yuraos    3    

re: Flowcon

О жизни Прочие инструменты разработчика v8 1cv8.cf Бесплатно (free)

Flowcon возвращается.

28.04.2021    2274    1c-intelligence    26    

10 полезных, но малоизвестных возможностей IS Toolkit

Консоль запросов Прочие инструменты разработчика v8 1cv8.cf Бесплатно (free)

Будет полезно пользователям Toolkit, а также тем, кому интересны возможности данного инструмента.

23.04.2021    2923    Evg-Lylyk    0    

Редактор схемы компоновки для тонкого клиента

Прочие инструменты разработчика v8 Бесплатно (free)

Аналог платформенного конструктора схемы компоновки данных для работы в тонком клиенте. Входит в состав набора "Универсальные инструменты 1С"

08.03.2021    3788    cprit    26    

Подсистема "COMExchange", консоль запросов, сервис обработки выборки запроса: корректируем регистры или «Берём банк, кассу, экспроприируем экспроприаторов». Промо

Консоль запросов v8 1cv8.cf Россия Бесплатно (free)

На примере шуточного примера продемонстрированы не шуточные возможности консоли запросов в составе подсистемы "COMExchange" для работы с регистрами, подчинёнными регистратору («обнуление» регистров, ввод начальных итогов (сведений), корректировка итогов).

31.03.2013    22897    yuraos    7    

Последний раз про срез последних (на каждую дату в запросе)

Инструментарий разработчика Практика программирования Консоль запросов Универсальные функции v8 v8::Запросы Бесплатно (free)

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

15.02.2021    10458    randomus    47    

Отладка логики запроса в консоли запросов ИР

Консоль запросов v8 1cv8.cf Бесплатно (free)

Облегчаем поиск причины неожиданного результата запроса в консоли запросов из подсистемы "Инструменты разработчика" (ИР)

05.01.2021    6380    tormozit    8    

Работа с СКД в продукте "Infostart Toolkit"

Прочие инструменты разработчика v8 v8::СКД Бесплатно (free)

Infostart Toolkit обладает большим количеством уникальных возможностей для работы с СКД – это анализ исполняемых текстов запросов, работа с внешними источниками в схеме СКД, получение данных в отладке и многое другое. Обо всех этих возможностях рассказал разработчик продукта Евгений Люлюк.

24.12.2020    3109    Evg-Lylyk    2    

Отладка в Infostart Toolkit

Консоль запросов Прочие инструменты разработчика v8 1cv8.cf Бесплатно (free)

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

05.11.2020    4280    Evg-Lylyk    16    

Улучшенный конструктор запроса тонкого клиента (Infostart Toolkit)

Инструментарий разработчика Консоль запросов v8 1cv8.cf Бесплатно (free)

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

07.09.2020    6084    Evg-Lylyk    19    

paste1c.ru - сервис для обмена кодом для 1С:Предприятия

Прочие инструменты разработчика v8 Бесплатно (free)

Paste1C.ru - сервис для обмена кодом для 1С:Предприятия c подсветкой синтаксиса и подсказками.

21.08.2020    6782    salexdv    50    

Редактор HTML

Инструментарий разработчика Прочие инструменты разработчика v8 1cv8.cf Россия Бесплатно (free)

Инструмент из состава набора "Универсальные инструменты 1С" для быстрой адаптации html страниц для корректного отображения в Поле HTML документа

03.08.2020    3207    cprit    3    

Консоль кода и зачем она нужна

Прочие инструменты разработчика v8 Бесплатно (free)

Когда использовать, обзор консолей кода: плюсы - минусы.

27.07.2020    7038    Evg-Lylyk    50    

Обработка кодом результата запроса в Консоли запросов 9000

Консоль запросов v8::Запросы Бесплатно (free)

Пять вариантов обработки кодом в консоли запросов 9000: простое выполнение, построчно без индикации, построчно с индикацией, простое в фоне, построчно в фоне с индикацией.

01.06.2020    2103    kuza2000    7    

Шпаргалка. Автоматическое тестирование внешних отчетов и обработок в нескольких информационных базах

Прочие инструменты разработчика v8 Бесплатно (free)

Используем Автоматизированное тестирование на практике. Простой код для обновления и запуска внешних отчетов и обработок в нескольких ИБ. Создаем рабочее решение с нуля.

02.05.2020    5465    pparshin    21    

Управляемая консоль отчетов – новый функциональный инструмент для работы с запросами и СКД в управляемых формах

Прочие инструменты разработчика Консоль запросов v8::УФ v8::Запросы v8::СКД Бесплатно (free)

Консоль запросов и СКД – один из наиболее часто используемых программистом инструментов. Как с его помощью можно упростить разработку, в своем докладе на конференции Infostart Event 2019 Inception рассказал Евгений Люлюк, ведущий программист компании GLT.

06.04.2020    11958    Evg-Lylyk    2    

[8.3] Анализ планов запросов (Управляемая консоль отчетов)

Консоль запросов v8 1cv8.cf Бесплатно (free)

Новый инструмент! Позволяет удобно работать с планами запросов, анализ планов в файловой базе.

19.11.2018    21325    Evg-Lylyk    12    

Консоль запросов для УФ с возможностью передачи готовой ТЗ в качестве параметра

Консоль запросов v8 v8::УФ Россия Бесплатно (free)

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

11.07.2016    15243    vadim1011985    7    

Консоль запросов. Очередная гайка.

Консоль запросов v8 1cv8.cf Бесплатно (free)

Небольшое дополнение к консоли запросов. Позволяет создавать функцию вместе с текстом запроса.

23.07.2014    8412    mdmdvd    3