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

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

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

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

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

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

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

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

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

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

 

 

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

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

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

 

 

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

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

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

 

 

О реализации

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

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

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

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

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

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

 

См. также:

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

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

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

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

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

См. также

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

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

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

03.04.2014    26236    yuraos    2    

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

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

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

08.03.2021    2192    cprit    13    

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

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

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

15.02.2021    4170    randomus    47    

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

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

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

05.01.2021    5208    tormozit    8    

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

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

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

10.03.2013    33474    yuraos    3    

Работа с СКД в продукте "Управляемые инструменты разработчика"

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

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

24.12.2020    2154    Evg-Lylyk    2    

Отладка в Infostart Toolkit

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

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

05.11.2020    3171    Evg-Lylyk    16    

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

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

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

07.09.2020    4111    Evg-Lylyk    17    

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

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

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

31.03.2013    22724    yuraos    7    

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

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

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

21.08.2020    6327    salexdv    48    

Редактор HTML

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

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

03.08.2020    2248    cprit    3    

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

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

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

27.07.2020    5740    Evg-Lylyk    47    

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

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

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

01.06.2020    1764    kuza2000    7    

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

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

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

02.05.2020    4897    pparshin    21    

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

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

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

06.04.2020    9157    Evg-Lylyk    0    

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

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

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

19.11.2018    20393    Evg-Lylyk    12    

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

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

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

11.07.2016    15051    vadim1011985    7    

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

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

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

23.07.2014    8322    mdmdvd    3