Конвертер для преобразования текстов запросов и планов SQL в представления языка 1С

20.01.23

Разработка - Инструментарий разработчика

Преобразует текст запроса на языке SQL или план запроса, подставляя представления метаданных конфигурации для удобства последующего анализа.

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

Наименование Файл Версия Размер
Конвертер для преобразования текстов запросов и планов SQL в представления языка 1С:
.epf 32,36Kb
181
.epf 2023.01.03 32,36Kb 181 Скачать

При анализе запроса на языке SQL или плана выполнения запроса основную сложность вызывают представления таблиц и полей в терминах базы данных. Учитывая что наименования таблиц БД не несут особой логической и смысловой нагрузки, то выполнение анализа представляет собой сложную задачу. Мы в процессе оптимизации конфигураций на платформе 1С под СУБД MS SQL и Pstgres написали простую, но многократно облегчающую данную работу обработку. Она значительно повышает скорость и удобство решения подобных задач. Также мы будем использовать этот инструмент в последующих статьях посвященных вопросам анализа и решения проблем быстродействия.

Обработка является частью Фреймворка "Мониторинг производительности" - https://github.com/Polyplastic/1c-parsing-tech-log.

Внимание! Запускать обработку для анализа обязательно в целевой базе и конфигурации!

Возможности:

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

Процесс работы простой. Вставляете текст запроса из логов технологического журнала, профайлера MS SQL или лога базы Postgres. Жмете кнопку "преобразовать".

 

 

- Преобразование текстов планов запросов MS SQL и Postgres. Выполняет преобразование подстановкой таблиц, реквизитов и наименований индексов в тексты планов запросов. Для планов запросов реализован интерфейс передачи и получения ссылки на веб-ресурс анализа планов запросов https://explain.tensor.ru/

Процесс работы заключается в следующем - вставляете текст плана Postgres или план MS SQL, указывайте флаг "это план запроса" и жмете кнопку преобразовать.

Если это план запроса Postgres, то после выполнения преобразования жмите на кнопку "Explain план запроса" и переходите по ссылке.

Если это план запроса MS SQL, то данные из файла плана помещаете в поле "текст запроса SQL", преобразуете, а затем результат преобразования файла сохраняете в новом файле формата "SQLPlan". Затем открываете в "SQL Sentry Plan Explorer".

 

 

Пример формы преобразования плана запроса.

 

 

На рисунках ниже приведены примеры планов запросов в формате. На первом приведен пример для MS SQL Server.

 

 

Представление плана запроса для Postgres

 

 

- Поиск и просмотр таблицы представлений в терминах БД и конфигурации 1С. Доступна таблица поиска и навигации по связи представлениям терминов БД и названий метаданных языка 1С.

 

 

Полезные ссылки:

 

Обработка протестирована на платформе 1С 8.3.16 и 8.3.19.

план запросов SQL Postgres MS

См. также

SALE! 20%

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 10400 руб.

02.09.2020    122224    673    389    

715

SALE! 25%

Infostart PrintWizard

Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

18000 15300 руб.

06.10.2023    7309    22    6    

39

SALE! 20%

Infostart УДиФ: Управление данными и формами

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

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

10000 8000 руб.

10.11.2023    3558    11    1    

34

SALE! 30%

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

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

3600 2520 руб.

14.01.2013    177765    1074    0    

849

Многопоточность. Универсальный «Менеджер потоков» 2.1

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    99358    239    97    

296

[ЕХТ] Фреймворк для Расширений 1С

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Платные (руб)

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    18122    6    8    

40

1С HTML Шаблоны / HTML Templates

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    28113    3    10    

15

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

Инструментарий разработчика Обмен между базами 1C Платформа 1С v8.3 Платные (руб)

В процессе работы в 1С часто возникает потребность получить данные из другой базы.  Обычно это делается через COM-соединение, и время выполнения запроса при этом оставляет желать лучшего. В данной публикации представлено универсальное решение, позволяющее практически моментально выполнить произвольный код или запрос с параметрами в другой информационной базе через Web-сервис.

2400 руб.

24.09.2019    23605    15    15    

32
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. logarifm 1118 07.02.22 15:41 Сейчас в теме
2. VKislitsin 960 08.02.22 08:11 Сейчас в теме
Хорошее дело! У меня есть feature request. Даже два :)
1) подстановка номеров параметров "p_0", "p_1", "p_2" и т.д. вместо "?" в текст запроса (очень уж неудобно высчитывать когда параметров много).
2) для параметров ссылочного типа (0x8C76E5A8C09BC9114E49E36A717AC118) заменять значение на представление (а еще лучше, дополнять навиг.ссылкой).
Артано; Shmell; w.r.; +3 Ответить
3. ivanov660 4332 08.02.22 09:20 Сейчас в теме
(2) #75зарегистрировал ваше предложение в трекере на сайте проекта
VKislitsin; +1 Ответить
4. Артано 760 11.02.22 09:04 Сейчас в теме
Спасибо! Где же были раньше?! (риторический вопрос)

P.S. Поддержу предложение из (2).
5. GKG 22 16.02.22 14:38 Сейчас в теме
Классная обработка !

маленькие идеи:

Не транслирует слово Having

и теоретически вместо Tn имен таблиц можно подставить имена основных таблиц где это возможно конечно
а так удобно анализировать тексты запросов.
6. Дмитрий74Чел 234 28.07.22 16:26 Сейчас в теме
Добрый день.
А почему решили создавать что-то свое, ведь уже есть подобные инструменты (как минимум преобразования текстов запросов) других авторов. Те же Инструменты разработчика.
Какова была цель? Только создать свое в своей экосистеме (фреймворке)? Или проводился какой-то анализ аналогов, может что-то улучшили?
Пишу не ради критики, хочу просто понять. Если что читал описание не очень внимательно, можно пинать.
tormozit; +1 Ответить
7. ivanov660 4332 28.07.22 18:00 Сейчас в теме
(6)
1. Сделали удобный инструмент для решения требуемых задач, более ничего не понравилось и не нашел. Поделились с коллегами.
2. Не сравнивал с инструментами разработчика по функционалу, если есть желание сравните. Но я сходу не помню чтобы у автора был подобный функционал. Из запроса 1С в MS SQL был у автора ИР и в других консолях тоже, а вот обратно не припомню.
3. Если Вас не затруднит накидайте список подобных приложений, буду признателен, будет интересно.
8. tormozit 7138 15.06.23 08:27 Сейчас в теме
(7) В ИР уже давно есть конвертор текста БД в термины метаданных в составе инструмента "Анализ техножурнала". Он в частности умеет форматировать текст запроса, выявлять использованные в нем таблицы БД, конвертировать параметры и вставлять их в сам запрос.
Пример исходного текста
INS ERT INTO #tt3 WITH(TABLOCK) (_Q_000_F_000RRef, _Q_000_F_001RRef, _Q_000_F_002RRef) SEL ECT
T1._IDRRef,
T3._Document209_IDRRef,
T2._Document209_IDRRef
FR OM dbo._Document209 T1
LEFT OUTER JOIN dbo._Document209_VT2775 T2
INNER JOIN dbo._Document209_VT2677 T3
ON (T3._Document209_IDRRef = T2._Document209_IDRRef)
ON (T2._Document209_IDRRef = T1._IDRRef)
WHERE (T2._Fld2779 = ?)
p_0: 0N
Показать

Сконвертированный текст
INS ERT IN TO #tt3 WITH(TABLOCK) (_Q_000_F_000RRef, _Q_000_F_001RRef, _Q_000_F_002RRef)
SELE CT
	АвансовыйОтчет_T1.Ссылка AS _Q_000_F_000RRef,
	Товары_T3.Ссылка AS _Q_000_F_001RRef,
	ВозвратнаяТара_T2.Ссылка AS _Q_000_F_002RRef
FR OM
	dbo.Документ.АвансовыйОтчет AS АвансовыйОтчет_T1
	LEFT JOIN dbo.Документ.АвансовыйОтчет.ВозвратнаяТара AS ВозвратнаяТара_T2
		INNER JOIN dbo.Документ.АвансовыйОтчет.Товары AS Товары_T3
		ON Товары_T3.Ссылка = ВозвратнаяТара_T2.Ссылка
	ON ВозвратнаяТара_T2.Ссылка = АвансовыйОтчет_T1.Ссылка
WH ERE
	ВозвратнаяТара_T2.Цена = ?p_0
Показать
Прикрепленные файлы:
NorraSaltolinen; Bassgood; Silver0030; +3 Ответить
Оставьте свое сообщение