Консоль запросов с графом (Анализатор сложных запросов)
Программирование - Инструментарий
sql запрос граф консоль запросов граф запроса
Эта консоль предназначена для того чтобы облегчить анализ сложных запросов. Когда запрос состоит из большого количества временных таблиц, достаточно сложно передвигаться по его тексту и отслеживать все взаимосвязи таблиц. Данная консоль делает запрос наглядным, она отображает его в виде графа с временными таблицами в виде узлов и связями между таблицами в виде ребер графа. Если временная таблица имеет вложенные запросы, то она показывается на графе со всеми вложениями. Таким образом весь запрос предстает как на ладони. Узлы графа кликабельны, если нажать мышкой на узел графа, справа отобразится соответствующий текст запроса. Выделенный узел подсвечивается зеленым цветом, также зеленым цветом выделяются все таблицы от которых данная таблица зависит. Можно выделить не только целый узел но и отдельно выделить каждую из его составных частей. Нажав кнопку "Выполнить запрос" можно посмотреть результат работы данного запроса, в том числе можно отдельно выполнить и каждый из вложенных запросов. При наведении указателя на ребро графа оно выделяется цветом, также выделяются узлы, которые оно соединяет.
Работает на платформе 8.3.9. Также необходим IE11. На предыдущих версиях не проверял.
Версия 0.2
Добавлена загрузка параметров запроса из файла в консоль. Ели вы выгрузили параметры запроса в отладчике методом "ЗначениеВФайл", вы можете загрузить их в консоль запросов по кнопке: "Заполнить параметры из файла".
Версия 0.3
Добавлена поддержка обычных форм.
Убрана обфускация с кода java script.
Версия 0.4
Для параметров типа "Список значения" типовая форма редактирования списка заменена на нетиповую. Типовая форма не давала возможности добавлять в список значений элементы с типом "Перечисление". Теперь этот недостаток исправлен.
Версия 0.5
1. Добавлена поддержка временных таблиц из менеджера.
2. Загрузка всех данных запроса из отладчика в консоль запросов.
Теперь все данные запроса можно загружать автоматически из отладчика: и текст запроса, и параметры, и временные таблицы из менеджера, если они есть.
Для этого сначала необходимо нажать кнопку "Сформировать скрипт выгрузки"
После этого в открывшейся форме скопировать текст скрипта (если переменная запроса называется не "Запрос" то ввести ее имя)
Открыть отладчик, установить точку остановки в месте, где все данные запроса уже сформированы, и запустить программу.
Когда отладчик остановится в нужном месте, поместить в табло отладчика скрипт выгрузки, убедиться что функция приняла значение "Истина", после чего продолжить выполнение программы.
Вернуться в консоль запросов и нажать кнопку "Загрузить данные запроса", после чего все данные загрузятся автоматически.
Если запрос имел таблицы в менеджере временных таблиц, их данные отобразятся на появившейся закладке "Менеджер временных таблиц"
Для работы с данным механизмом необходимо у себя в настройках пользователя в конфигураторе снять галочку "Защита от опасных действий"!!!
Версия 0.6
1. Схема запроса с учетом объединений запроса (расширенная схема)
Схему запроса в консоли теперь можно просматривать в двух вариантах - кратком и подробном, для этого сделано две отдельные закладки.
Подробная схема отличается от краткой тем, что в ней показаны объединения запросов.
На представленных картинках показаны отличия между простым и подробным отображением схемы.
Если запрос содержит объединения, то они будут показаны на схеме как блоки Часть_1, Часть_2 и т.д.
Текст запроса, содержащего объединения, можно просматривать как целиком так и по частям, тыкая на схеме в узел, соответствующий нужной части.
Связи между таблицами показываются также с учетом объединений, то есть стрелка, отображающая связь, попадает не просто в запрос, а именно в ту часть запроса, в которой используется соответствующая таблица.
2. Отображение текста запроса в формате HTML с возможностью сворачивать, разворачивать тексты подзапросов.
В случае больших громоздких запросов, содержащих вложенные запросы, появилась возможность отображать текст запроса в компактном виде, а при желании разворачивать подробно его отдельные части.
Для этого в консоли добавлена вторая закладка - "HTML", на которой текст можно просмотреть в структурированном виде. Если в запросе содержится подзапрос, то он отображается в виде названия этого подзапроса, а при нажатии на название его текст полностью разворачивается. Можно также свернуть его обратно.
Если мы имеем "матрешку" из подзапросов, то можно последовательно развернуть ее до самого конца.
На представленных картинках показан текст в свернутом и развернутом виде.
В случае подробной схемы можно просматривать части объединения запроса в свернутом виде.
Версия 0.7
1. Добавлена возможность менять текст основного запроса через окно текста подзапроса.
В окне текста подзапроса появилась кнопка "Применить текст к исходному запросу". При нажатии проверяется корректность всего запроса и в случае успешной проверки текст исходного запроса изменяется и схема полностью перерисовывается. Если вы отредактировали текст подзапроса и потом перешли к другому узлу на графе, то отредактированный текст сохраняется; когда вы вернетесь к прежнему узлу, то можно будет перейти к отредактированному тексту по кнопке "Заменить текст на отредактированный". Можно будет также вернуться обратно к исходному тексту подзапроса по кнопке "Заменить текст на исходный".
2. Исправлены ошибки при загрузке данных запроса из отладчика.
3. Изменено цветовое оформление графа.
Версия 0.8
1. Добавлена возможность сохранять данные запроса в файл формата "q1c" и загружать данные из него обратно в консоль запросов.
Текст запроса и параметры теперь можно сохранять в xml-файл стандарта 1C - "q1c". Также можно загружать их обратно. Данная консоль запросов работает с одним текстом запроса, поэтому если файл запроса содержит несколько разных текстов, то в консоль загрузится только один.
2. Добавлена возможность автоматически вставлять в текст запроса уничтожение временных таблиц.
По кнопке "Добавить уничтожение временных таблиц" можно вставить в текст запроса команды "УНИЧТОЖИТЬ". Консоль сама определяет место в запросе, когда временная таблица дальше не используется и ее можно уничтожить
Скачать файлы
Наименование | Файл | Версия | Размер | |||
---|---|---|---|---|---|---|
Анализатор сложных запросов - (управляемые и обычные формы):
.epf 120,09Kb
27.04.18
292
|
.epf | 0.8 | 120,09Kb | 292 | Скачать |
См. также
Специальные предложения
Обработка интересная, цена обработки дело автора обработки. Трудно его упрекать в чем то. Но я вот тоже не скачала. Нет необходимости пока.
Я писал это 4 месяца в свободное от основной работы время, вы попробуйте сделать что нибудь подобное и все поймете.
Задача отрисовать произвольный граф достаточно нетривиальная. Это же надо придумать систему как программа должна расположить узлы. Это надо просчитать заранее все размеры, чтобы текст помещался в узел, чтобы вложенные узлы поместились, а уровней вложения может быть много. Это надо сделать чтоб линии не слипались, не накладывались на узлы а красиво их обтекали. Да вы даже близко не представляете всей сложности, пока не попробуете за это взяться.
Почему я должен выкладывать это за 1см? За 1см здесь полно простеньких обработок которые делаются за день - два. У меня у самого тут выложена другая обработка которая стоит 1см. Но времени на нее я потратил неизмеримо меньше чем на эту. Вот поэтому и не 1см а 10!!! Если вам это не понятно, я не собираюсь никому ничего доказывать. Ответ простой - не хотите не качайте! Или создайте что нибудь подобное и выкладывайте сами за 1см.
Пытаюсь скачать эту "почти бесплатную" обработку и получаю сообщение
Вы хотите приобрести абонемент (1 мес.) за 1500 рублей, чтобы скачать этот файл?
Это так и должно быть? Мне для скачивания нужно приобрести абонемент за 1500р? Я просто засомневался, потому что автор выше говорил что 10см = 190р.
Посчитайте сами, сколько составляет стоимость часа работы программиста 1С, и сколько часов поможет сэкономить эта обработка. Да она окупится на первом же мало мальски серьезном запросе. А с запросами приходится работать всем регулярно.
Так что ну прекращайте вы жаловаться и прибедняться.
(79)
Вот это особо порадовало. Ну и сделайте ее 1см если вы программист и достаточно зарабатываете, что бы не мелочиться. Какая вам разница кто сколько зарабатывает и куда он тратит. Вам не нравится когда считают ваши $м а сами лезете считать чужие деньги.
А ваши рассуждения на счет цены продукта в корне ошибочны. Почему хлеб не продают за 1 руб, ведь тогда продаж было бы еще больше, можно было бы заработать на обороте? )) Просто попытка развести автора на бесплатную раздачу.
Автор предлагает уникальное решение. Аналогов нет. Есть похожее, но хуже по функциональности. В данном случае цена определяется только тем, какую выгоду получит "покупатель" и количеством, готовых заплатить за эту выгоду.
Фишка в том, что 1-2,3,5 sm - это некий порог, который большое количество людей имеют на счету за публикации. Это не деньги, и дело не в деньгах - это старт-мани не купленные, а заработанные публикациями. Т.е. по сути ценность sm "смешная" для тех у кого абонемент, и гораздо более существенная для тех, кто выкладывает что-то свое. Ведь обработка-то ориентированна на тех, кто сам пишет эти запросы, т.е. как раз на вторую категорию. И многие оценили вашу разработку и готовы их потратить, но... 10 просто есть не у всех! Я не в коем разе не призываю снизить цену! :) 87 скачиваний на текущий момент говорит само за себя, но...
Пока я не решился завести корпоративный аккаунт, у меня было 3 sm (и есть на текущий момент), я планирую еще кое-что выложить, но моя общая динамика не позволит (не позволила бы) ознакомится с вашим инструментом еще очень долго!
И думаю, многие скачают за 1 см, если Вы сделаете такой вариант.
Даже с использованием такого мощного инструмента js как регулярные выражения задача далеко не тривиальная. А выдрать из когда функционал по парсингу запроса довольно просто. Есть совершенно отдельные функции, которые формируют массив узлов и массив ребер графа.
В отладчике же можно просто скопировать текст запроса, а потом просто вставляете его в обработку.
Если используется менеджер таблиц, просто добавляете текст из вспомогательных запросов перед текстом основного запроса (через ";").
(62)
Игра Стартмания, в которой любой может БЕСПЛАТНО получить 10, 20 и даже 50 стартмани для загрузки файлов.
бггг :)
Попутно заметил (см. "схема"), что отрисованы не все связи. Или не распарсена связь Подзапрос_8, Подзапрос_9 с ВТ_Данные.
1)
Спасибо что сообщили об ошибке. Действительно был баг. Забыл в одном месте учесть, что слово в другом регистре может быть. А у вас как раз тот случай в запросе. Одна буковка в названии таблицы в другом регистре оказалась.
Файл перезалит. Кто из скачавших не сможет второй раз бесплатно скачать, пишите в личку, решим вопрос.
Файл с картинкой прилагаю.
2)
По поводу выбора параметра в виде списка значений прилагаю скрины как это делается.
Не стал писать этого в описании, так как этот механизм взят из типовой консоли.
Или как вариант, "хорошая идея, она появится в новом релизе Инструментов Разработчика", и ей воспользуется тот, кто осилит навигацию по фунционалу...
А вообще - мне достался в наследство достаточно хреново написанный запрос на 2 с лишним тысячи строк, который надо было поддерживать и оперативно изменять под нужды бизнеса, причем почти с первого дня моей работы - без дерева запросов это было бы крайне проблематично.
Отображение только реализовано по-иному, но зато есть интерактивность (при нажатии на наименование таблицы - переходится к соответствующему участку текста запроса). Ещё - использую функции парсингатекста запроса для дополнительных возможностей (например, пошаговое выполнение пакетного запроса, выполнение пакетного запроса без удаления временных таблиц).
И это... если кого душит жабо - то у меня ценник 1 стартмань (ранее было бесплатно, сейчас убрали).
Во первых, читайте внимательно описание. Ведь черным по белому написано:
Поэтому не надо писать как будто моя схема не интерактивна. И пошаговое исполнение у меня тоже есть, как целой таблицы так и каждого ее вложения.
Во вторых, я не поленился и скачал вашу обработку.
Давайте теперь сравним вашу обработку за 1 и мою за 10 на примере.
Прилагаю скрины. Текст запроса тоже.
На моей картинке красивая компактная читабельная схема. И осталась еще куча места чтобы отобразить текст, соответствующий выделенной таблице.
Ваша схема не влезла в экран, поэтому привожу ее на двух картинках.
На моей схеме изображен полноценный граф.
На вашей просто таблицы в столбик и в линеечку к каждой таблице подтягиваются ее завсимости.
Кстати проверьте корректность отображения. Например таблицы "Цены продаж" и "Цены плановые" отображены так как будто не имеют зависимостей, а на самом деле имеют.
Так что говорить что в вашей обработке то же самое но за 1см, это все равно что сравнивать мерседес и ладу и удивляться почему мерседес в десять раз дороже, ведь он так же ездит.
Вы попробуйте сначала нарисовать в HTML граф произвольной структуры, а потом посмотрим захотите ли вы это выложить за 1см.
Я и не удивляюсь. Просто предлагаю свою "Ладу" для тех, у кого есть 1см, или кому жалко 10см.
Кстати, я раздумываю написать "Отладчик запросов" для 8.3, но времени не хватает (не в ближайшем будущем).
И если и сделаю - выложу его по 10см. Всё-таки, это больший труд, чем "печатная форма"
Зачёт)))))
Да, хотел было такое же замутить, но визуализацию лень делать стало. Автор, респект!
Ошибка инициализации модуля: ВнешняяОбработка.ParserSQL.Форма.Форма.Форма
по причине:
{ВнешняяОбработка.ParserSQL.Форма.Форма.Форма(143,78)}: Переменная не определена (ЭтотОбъект)
Оповещение = Новый ОписаниеОповещения("ПослеЗакрытияКонструктораЗапроса", <<?>>ЭтотОбъект, Основной);
использовать в нашей рабочей бд не смог. Платформа 8.3.8, но БД в режиме совместимости с Версия 8.2.16
Элементы.СхемаSQL.Документ.parentWindow.drawGraph(ТекстЗапроса);
по причине:
Неизвестная ошибка
Ошибку с отрисовкой графа исправил. Прилагаю картинку, как отрисовался ваш запрос. Заменил везде ЭтотОбъект на Эта Форма, так что в режиме совместимости теперь все открывается.
Ситуацию с режимом интерфейса смоделировать не смог. Ставил и "Такси" и "Формы в закладках", все было нормально, никакие кнопки не сбивались.
ctrl+F ЭтотОбъект
Ну и режим интерфейса в закладках Сервис\параметры\Внешний вид
Ну я как бы то же раньше обходился без этого, и поболее чем 7 лет. Когда в запросе пять таблиц не проблема, но на моей практике попадались запросы и по 30-50 таблиц, в этом случае разобраться в запросе с помощью этой обработки в разы быстрее. Одно дело прокручивать руками огромный текст, совсем другое передвигаться по нему просто тыкая мышкой в названия таблиц на графе, на котором сразу видна общая картина. Плюс можно зайти в любую таблицу или ее вложения, выполнить их и посмотреть какие данные получаются на данном этапе. Поэтому мое дело предложить удобный инструмент ускоряющий работу, а каждый сам пусть решает надо это ему или нет. Можно копать землю руками, но обычно люди почему то берут в руки лопату.
Решил актуализировать по совету (ранее скачал)
Жму на старую ссылку -
Еще доступна кнопка скачать за 10 СМ.
Никаких других повторных не вижу
Возможно ли такое нововведение
Повторное бесплатное скачивание отменить(только на время жизни ссылки), но новое скачивание (обновление) сделать всегда 1 СМ (но без учета срока давности)?
Т.е. человек как бы платит за обновление, как во многих цифровых продуктах
Предыдущая загрузка 04.07.2017.
Сегодня пр попытке скачать получаю:
С вашего счета будет списано 10 StartMoney. Текущий остаток на счету ххх StartMoney.
Поправьте счетчик дней, пожалуйста.
Уже давно пора ввести настройку, чтобы сам автор управлял - можно ли скачивать повторно (причём всегда) или нет.

Просмотры 75076
Загрузки 289
Комментарии 194
Создание 03.05.17 08:34
Обновление 30.10.18 16:54
№ Публикации 617990
Рубрики Инструментарий
Кому Программист
Тип файла Внешняя обработка (ert,epf)
Платформа
Управляемые формы ,
Запросы
Конфигурация Конфигурации 1cv8
Операционная система Windows
Страна Не имеет значения
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Раздел учета Не имеет значения
Доступ к файлу Абонемент ($m)
Код открыт Да
