0. YPermitin 7725 07.01.20 21:18 Сейчас в теме

Транслятор запросов 1С в SQL

Инструмент для трансляции запросов платформы 1С в SQL, а также их диагностики.

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. pm74 165 07.01.20 21:34 Сейчас в теме
СУБД Microsoft SQL Server 2012 и выше.

с 2008 "не взлетит" ?
YPermitin; +1 Ответить
2. YPermitin 7725 07.01.20 21:36 Сейчас в теме
(1) нет, к сожалению. Это только в будущих версиях. В конце публикации писал об этом:

В версии 2.0 будут следующие изменения:
- Поддержка SQL Server 2008
- Поддержка PostgreSQL
- Поддержка файловых баз
- Добавление комментариев к частям SQL-запроса для сопоставления с метаданными 1С и удобного чтения текста запросов.
- Оптимизации для SQL Server 2016 и выше.
- И много другое.
Выход 2 версии будет не раньше, чем во второй половине 2020 года :).

2008 версия особая и сильно устаревшая уже. Поэтому под нее допиливать отдельно не стал пока что.
tormozit; Il; 3vs; pm74; +4 Ответить
3. pm74 165 07.01.20 21:46 Сейчас в теме
(2) жаль , у меня 2 рабочих базы крутятся на 2008
все равно утащил в избранное
а транслятор в t-sql зависит от номера версии ?
4. YPermitin 7725 07.01.20 21:51 Сейчас в теме
(3)
а транслятор в t-sql зависит от номера версии ?


Имеете ввиду номер редакции SQL Server?

Если да, то там дело в работе механизмов Extended Events, на которых все простроено.
Много функционала не доступна в редакции 2008, т.к. он еще находился тогда в начальной стадии развития.
Обходные пути есть, но там надо многое с 0 проверять, пилить.


(3)
все равно утащил в избранное


Спасибо :)
5. logarifm 1071 08.01.20 10:57 Сейчас в теме
Труд - согласен, просто мне для себя чтобы понимать, а за что во-первых 10 стартманей? Когда есть вот https://infostart.ru/public/295356/ и за один стартманей и там аналогичный функционал.
YPermitin; +1 Ответить
6. YPermitin 7725 08.01.20 12:20 Сейчас в теме
(5) вопрос хороший. Не рекламы ради, но Вы дали ссылку на консоль запросов, а этот инструмент ни в коем случае не консоль.

Консоль https://infostart.ru/public/295356/ надо скорее сравнивать с управляемой консолью https://infostart.ru/public/835718/.
Я раньше пользовался запросником, а теперь практически полностью перешел на управляемую консоль. Рекомендую.

Что касается этого инструмента - он необходим для трансляции запросов на языке 1С и выражений встроенного языка (кода) в SQL-запросы, которые генерирует платформа. Отличие от запросника в том, что:
1. Запросник использует технологический журнал, я использую встроенные средства диагностики SQL Server - Extended Events.
2. Запросник "повесит" нагруженную базу если Вы начнете использовать эти функции на продакшене. Да даже не нагруженную подвесит, ибо получение планов запросов через ТЖ довольно трудоемкая операция.
3. Данный инструмент получит ВСЕ запросы, которые генерирует платформа. В том числе и служебные (установка уровня изоляций, создание временных таблиц, очистка, запросы к информации по метаданным.
4. Запросник только получает информацию для запросов, а этот инструмент еще и сгенерированные запросы кодом 1С отлавливает.
5. Т.к. платформа 1С использует пул соединений с СУБД, то запросник может в при многопользовательской работе ошибиться и отловить лишние запросы. Этот инструмент максимально от этого защищен. Но полных гарантий нет, но на моей практике еще не было сбоев.
6. Ну и как результат - запросник только для локальной базы разработчика. Этот инструмент можно использовать и на продакшене.
7. Плюс запросник не всегда получает запросы как есть с СУБД или всю серию сгенерированных запросов платформой.

В общем, это совершенно два разных инструмента и для разных целей.
Запросник - отличный инструмент. Жаль он не обновляется уже с 2017 года :(

Что касается цены. 10 SM - это ~750 руб. 750 руб. - это 2 пиццы во таких (https://tiumen.leverans.ru/dostavka/pitstsa/pizza-express/pitstsa-32-sm/pepperoni-ostraia/) :) Цена символическая за инструмент, аналогов которого я еще не видел. Плюс я буду развивать его дальше для PostgreSQL и файловых баз. 10 SM для меня как стимул. К тому же инструмент очень специфический и вряд ли будет какой-то массовый спрос, а так 2-3 скачивания и мотивация не пропадет. За 1 SM отдавать как-то уж совсем свой труд не ценить.

Надеюсь я был объективным :)
Харьковец; user811769; Lansi; RocKeR_13; mike1970; aspirin4eg; gradi; 3vs; ids79; Evg-Lylyk; DarkAn; tunesoft; Il; triviumfan; +14 Ответить
16. triviumfan 14 08.01.20 23:34 Сейчас в теме
(6)
2. Запросник "повесит" нагруженную базу если Вы начнете использовать эти функции на продакшене. Да даже не нагруженную подвесит, ибо получение планов запросов через ТЖ довольно трудоемкая операция.

PS: "транслятор запросов 1с" через xevents... в целом - интересно :) Вот заработаю на две пиццы - куплю.
Прикрепленные файлы:
YPermitin; +1 Ответить
23. DarkAn 926 09.01.20 10:02 Сейчас в теме
(5) Как мне кажется, Вы задаете не корректный вопрос. Автор в праве поставить ту цену какую считает адекватной за свою работу.
Скажите спасибо, что за $m, а не за рубли. т.к. вещь действительно полезная.

Утащил в избранное(жду 2.0, т.к. стоит SQL 2008 :()
Fox-trot; YPermitin; +2 Ответить
24. DarkAn 926 09.01.20 10:06 Сейчас в теме
(23)
Автору бы посоветовал выставить обработку и за $m и за рубли, например 3000, не с целью наживы, а с целью расширить аудиторию, т.к. Infostart начисляет кэшбэк 25% за купленные продукты 1С. На счет покупателям падают рубли которые они не могут вывести, но могут потратить на такие вот разработки, а 3000 руб, это меньше, чем покупка сгораемых 10$m у Infostart.

P.S. Если будет я взял бы за рубли :)
YPermitin; +1 Ответить
26. YPermitin 7725 09.01.20 10:09 Сейчас в теме
(24) а про рублевую схему не знал. Надо подумать и правила почитать. Взять консультации :)

За идею спасибо)
27. DarkAn 926 09.01.20 10:12 Сейчас в теме
(26) Кроме того, покупая за рубли покупатель может скачивать обновления в течении года без дополнительной оплаты, а за $m только если обновление выйдет в течении месяца с момента приобретения.

Я уже консультировался, поэтому и сообщаю :)
YPermitin; +1 Ответить
28. YPermitin 7725 09.01.20 10:18 Сейчас в теме
25. YPermitin 7725 09.01.20 10:08 Сейчас в теме
(23) про цену спрашивать - это нормально. Но по мне цена адекватная. :) Лояльная сообществу, я бы так сказал.
Fox-trot; DarkAn; +2 Ответить
7. logarifm 1071 08.01.20 12:53 Сейчас в теме
Тогда надо ждать финального релиза от Вас. А то как оно получается, выйдет обнова и опять 10 СМ :)
YPermitin; +1 Ответить
8. YPermitin 7725 08.01.20 13:02 Сейчас в теме
(7) это дело каждого :)

Если Вы готовы ждать до ноября/ декабря 2020, то конечно. А потом ведь будет следующая версия запланирована:D

Как с процессорами. Ждем выхода i7. Вышел i7, тогда ждем i9 и т.д. :)))
9. logarifm 1071 08.01.20 13:15 Сейчас в теме
Инструмент интересен но мне пока что он без крайней необходимости не понадобится.
В основном при оптимизации исползую (не для рекламы не в коем случае) ЦУП. Трасировщик стандартный. Оптимизация это вообще бесконечная тема. И каждый случай уникальный по своему. Где-то достаточно только обновить платформу. А вот в основном приходится кропотливо и изрядно попотеть и помагает этому не одно решение, а целые кейсы.
Но Ваша работа заинтриговала и конечно же как только надо будет вот что-то раследовать я его скачаю.
10. YPermitin 7725 08.01.20 13:23 Сейчас в теме
(9) ЦУП почти уже не использую.

Воспользуюсь случаем узнать. А он обновляется или там все также по старому?
Слышал версию 2.0 вроде планировали выпускать, но не понятно когда.
11. logarifm 1071 08.01.20 13:28 Сейчас в теме
(10) на УФ есть но механика аналогичная.
Поиск тяжолых запросов (впрниципе он хорошо справляется со своей задачей). А дальше надо всеравно все перепроверять. Не ну конечно можно напилить свое что-то как это сделал Гилев. Но не вижу в этом особого смысла.

Хороший инструментарий у Андрея Бурмистрова имеется. По этому и говорю для решения проблем с оптимизацией необходимы целые кейсы. Никогда не поможет какое-то одно решение. И не всегда достаточно найти тяжолый запрос (это мог быть отчет коотрый запустили раз в месяц).
12. YPermitin 7725 08.01.20 13:29 Сейчас в теме
(11) посмотрите в сторону PerfExpert еще, лучше инструмента не видел. Но он больше под SQL Server ориентирован.
https://www.perfexpert.ru/

Походит на рекламу, но я просто поделился)
15. logarifm 1071 08.01.20 13:30 Сейчас в теме
(12) Да, согласен - эти ребята знают толк в своем деле!
19. tunesoft 222 09.01.20 08:30 Сейчас в теме
(10) да, ЦУП обновляется и развивается. Не рекламы ради расскажу. Пару месяцев назад сдал экзамен 1С:Эксперт, плотно изучал тему. В последней версии есть оффлайн импорт замеров. ЦУПом удобно анализировать и исправлять дедлоки и ожидания на блокировках. Можно и регулярными выражениями ТЖ парсить, кому как удобнее.
YPermitin; +1 Ответить
20. YPermitin 7725 09.01.20 08:36 Сейчас в теме
(19) а сейчас он также поддерживает только SQL Server?
21. tunesoft 222 09.01.20 09:18 Сейчас в теме
22. YPermitin 7725 09.01.20 09:21 Сейчас в теме
(21) Вы вернули мне интерес к ЦУП)
Нало по возможности будет посмотреть изменения)
29. DarkAn 926 09.01.20 10:18 Сейчас в теме
(9) Как рассказывает Виктор Богачев, на своем курсе, по оптимизации, он уже давно не пользуется ЦУПом, только регулярки, т.к. быстрее и функциональнее.
YPermitin; +1 Ответить
13. logarifm 1071 08.01.20 13:29 Сейчас в теме
А Ваша рабоа тоже займет достойное место среди инструментов. Впрочем как и все остальные Ваши труды, стараюсь всегда прочитать.
YPermitin; +1 Ответить
14. YPermitin 7725 08.01.20 13:30 Сейчас в теме
17. dmitrydemenew 438 09.01.20 07:41 Сейчас в теме
Очень полезный и удобный инструмент. Всем советую, а автору - большое спасибо!
YPermitin; +1 Ответить
18. YPermitin 7725 09.01.20 07:43 Сейчас в теме
(17) Вам спасибо огромное за отзыв!
36. 3vs 09.01.20 21:01 Сейчас в теме
(18)Юрий, Вам надо как-то скорефаниться с dmitrydemenew и разрабатывать какой-то свой инструментарий! :-)
Два крутых профессионала могли бы создать что-то действительно полезное сообществу!

Если
10 SM - это ~750 руб.
, то это не так много за такие разработки.
YPermitin; +1 Ответить
30. Evg-Lylyk 2798 09.01.20 11:03 Сейчас в теме
(0) Классная работа. Большое движение вперед идейно и функционально,
Пытался реализовать аналогичное, но не смог отфильтровать запросы из кучи.
Получение плана из кода хорошая идея

Жду если это не трудоемко:
В версии 2.0 будут следующие изменения:
Поддержка SQL Server 2008
YPermitin; +1 Ответить
31. YPermitin 7725 09.01.20 11:33 Сейчас в теме
(30) спасибо!

Идей еще много. Вот бы найти время все реализовать.

По поводу 2008 редакции. Не думал что она на столько популярна. Может и правда выпустить версию. Надо подумать, спланировать.
32. logarifm 1071 09.01.20 12:21 Сейчас в теме
(31) Я бы на вашем месте не стал бы этого делать. Этак можно дойти и СКЛ 2005 который еще на 1С 7.7 держиться. Если только действительно за рубли будете продавать обработку. А иначе теряется смысл. Сам майкрософт отказывается от своих продуктов какой смысл поддерживать то, что уже давно не поддерживаемо. Поотому что ленивцам лень обновиться до новых релизов СКЛ. Ведь там не только понт в номере, СКЛ в новых релизах стал намного функциональней и это как минимум так что пускай задумуются те кто еще работает на воде и переходят на авиатопливо.
Evg-Lylyk; Fox-trot; YPermitin; +3 Ответить
33. YPermitin 7725 09.01.20 12:29 Сейчас в теме
(32) так оно.

Есть коллеги, которые с уверенностью говорят, что разницы между 2008 / 2012 / 2014 / 2016 / и т.д. нет, а Microsoft просто гребет деньги лопатой.
Не часто удается донести информацию, что это не так.

Да за деньги вроде и не планирую, только если как альтернативу поддержки проекта. То есть и за SM будет, и за рубли. То что Иван Филимонов посоветовал в (27)
Evg-Lylyk; acanta; +2 Ответить
34. Fox-trot 112 09.01.20 12:46 Сейчас в теме
(32) замечу лишь только, что проблема можетбыть не только в елни
к примеру невозможность сменить платформу на более новую, которую надо тестировать на совместимость и баги
и не факт, что все взлетит как есть
опять таки нужны деньги и ресурсы на переход, и возможно это бизнесу и не нужно
YPermitin; +1 Ответить
35. YPermitin 7725 09.01.20 12:48 Сейчас в теме
(34) так и есть.

А если еще к этому добавить стоимость лицензий на СУБД, если это по ядрам особенно, то вопрос может вообще быть убран из повестки :)
37. 3vs 09.01.20 21:05 Сейчас в теме
(35)
А если еще к этому добавить стоимость лицензий на СУБД, если это по ядрам особенно

Да уж, ребята из Postgres Professional от скромности не умрут... :-)
YPermitin; +1 Ответить
38. YPermitin 7725 09.01.20 21:06 Сейчас в теме
39. 3vs 10.01.20 07:19 Сейчас в теме
(38)Умеете Вы, Юрий, заинтриговать народ!:-)
Набор слова в Яндекс:
Прикрепленные файлы:
YPermitin; +1 Ответить
40. YPermitin 7725 10.01.20 07:24 Сейчас в теме
41. novandrey_84 16.01.20 10:22 Сейчас в теме
С помощью вашего транслятора можно ли получить текст sql-запроса СУБД без выполнения самого запроса на 1С?
YPermitin; +1 Ответить
42. YPermitin 7725 16.01.20 10:34 Сейчас в теме
(41) нет, но если нужно получить без нагрузки на базу, то я использую такой подход:
1. Беру исходный запрос
2. В тексте запроса ставлю условия-заглушки везде где возможно (Ложь например).
3. Запрос получается дешковесным и можно получить текст.
4. Из полученного текста исключаю заглушки.

Как-тот так.
43. novandrey_84 16.01.20 12:42 Сейчас в теме
(42)
Спасибо, я так и думал)
YPermitin; +1 Ответить
44. YPermitin 7725 16.01.20 12:49 Сейчас в теме
(43) я бы хотел написать транслятор без выполнения. Но легкого пути не вижу)))
45. novandrey_84 16.01.20 13:37 Сейчас в теме
(44)
Ваше решение пока единственное, которое выдает полный пул запросов. И это касается больших 1С-запросов, включающих временные таблицы и прочий синтаксис. Для моей задачи по BI осталось решить вопрос с получением значений перечислений (хочу организовать прямую передачу данных из одной БД в другую без участия 1С). Объемы данных по одной выгрузке - более 4 млн. записей, на 1С я реализовал выгрузку в посредством параллелизма за 15-20 минут (часто отваливаются rphost'ы) в БД на sql-сервер. Код оптимизирован, но бизнесу такое время не устраивает. Поэтому буду переходить на прямые выгрузки между базами.
Спасибо еще раз!
Evg-Lylyk; YPermitin; +2 Ответить
46. YPermitin 7725 16.01.20 13:43 Сейчас в теме
(45) вам спасибо за отзыв!

Делал что-то подобное. Но для слодных запросов выгрузки создавал View'шку или функцию если там все сложно было.

Но суперсложных запросов там не было.
47. YPermitin 7725 24.01.20 14:29 Сейчас в теме
(45)
Для моей задачи по BI осталось решить вопрос с получением значений перечислений (хочу организовать прямую передачу данных из одной БД в другую без участия 1С)


Если вопрос в получении GUID'ов значений перечислений, то можно вот здесь посмотреть.
https://infostart.ru/public/1183874/
48. Infector 148 24.01.20 15:46 Сейчас в теме
Принцип работы в перехвате запроса на SQL-сервере?
Вообще есть мечта идиота - получить SQL -версию запроса, но не в таком виде, как они выполняются в СУБД, а с "человеческими" (т.е. аналогичными отображаемым платформой или в транслит-интерпритации) псевдонимами таблиц и полей.
acanta; YPermitin; +2 Ответить
50. YPermitin 7725 24.01.20 15:50 Сейчас в теме
(48) Все так, перехват. Нет лучше транслятора, чем сама платформа.

По поводу аналогичного отображения текста запроса. У меня есть для этого наработки, но они сырые. В планах сделать есть, но это не скоро. Не хочу поделки непонятные показывать. Мне будет стыдно :)

А так мне вроде даже удалось в некоторых случаях даже поля временных таблиц распознать. В общем, нужно время.
49. Evg-Lylyk 2798 24.01.20 15:49 Сейчас в теме
(48) Реализовано уже давно в типовой консоли ИТС анализа планов
Вот более продвинутый вариант https://infostart.ru/public/940250/
51. Infector 148 24.01.20 16:45 Сейчас в теме
(49) Пощупал, все-таки не то:

Выполняю:

ВЫБРАТЬ
Номенклатура.Ссылка КАК Ссылка,
Номенклатура.Код КАК Код,
Номенклатура.Наименование КАК Наименование,
Номенклатура.Артикул КАК Артикул
ИЗ
Справочник.Номенклатура КАК Номенклатура

Получаю результат в двух вариантах:

1 (SQL не выполняет)

SELECT
T1.Ссылка,
T1.Код,
T1.Наименование,
T1.Артикул
FROM Справочник.Номенклатура T1

2 (SQL выполняет, но что это не ясно)

SELECT
T1._IDRRef,
T1._Code,
T1._Description,
T1._Fld644
FROM dbo._Reference32 T1

3. Хочется видеть приблизительно такое (SQL выполняет, читается глазами, выдается иностранцам из головной компании для интеграций):

SELECT

Номенклатура._IDRRef as Ссылка,
Номенклатура._Code as Код,
Номенклатура._Description as Наименование,
Номенклатура._Fld644 as Артикул

FROM dbo._Reference32 Номенклатура
52. Evg-Lylyk 2798 24.01.20 17:03 Сейчас в теме
(51) прямой доступ к базу sql, исключительный вариант
YPermitin; +1 Ответить
55. Infector 148 24.01.20 17:12 Сейчас в теме
(52) но это проще чем учить иноземцев (исключая большую часть постсоветского пространства) конфигурировать УПП или тащить на себя плюсом 100500 задач. А так готовим запрос в 1с, а иноземцы качают в свою иноземную базу справочники, движения и все что им интересно.
54. YPermitin 7725 24.01.20 17:11 Сейчас в теме
(51) да, как-то вы решили сурово решить задачу выгрузки данных.

На счет вашего предложения по трансформации текста запроса. Оно уже в работе. Но сроков нет :)
56. Infector 148 24.01.20 17:16 Сейчас в теме
(54)был у нас иноземный гость, он и решал. Еще и пару сисадминов в свою веру обратить успел до того как уволился и уехал. Вот плоды моих экспериментов. Есть еще сырые варианты с попытками конверсии, но это не для публики. Однако пару сортов виртуальных таблиц разложить удалось. Хотите, могу поделиться.https://infostart.ru/public/849139/
57. acanta 73 24.01.20 17:24 Сейчас в теме
В свое время нашему отделу ит была интересна мысль использования рабочей базы 1с как внешнего источника данных. Ради скорости предполагалось из файловой сделать postgres с прямым доступом к СУБД. Но.. не хватило образования.
53. YPermitin 7725 24.01.20 17:10 Сейчас в теме
(49) В версии, что в разработке, подобное есть. Но этот функционал еще не точно отрабатывает для большинства запросов, просто потому что служебные запросы платформы совсем не такие как на языке 1С. Те же запросы получения настроек регистров, метаданных, временные таблицы со слежебными именами и прочее.

Вот когда я это завершу до конца, тогда это появится в рабочей версии.

Но делать из транслятора консоль не планируется :)
Возможно транслятор превратится в инструмент диагностики, если я совмещу его с разрабатываемым профайлером кода встроенного языка. Но это уже другая история...
58. Дмитрий74Чел 184 17.02.20 17:13 Сейчас в теме
Не работает http://prntscr.com/r3kblp
"У пользователя нет разрешений на выполнение данного действия"
Какие права нужны для выполнения обработки?
YPermitin; +1 Ответить
59. YPermitin 7725 17.02.20 18:02 Сейчас в теме
(58) день добрый.

Для запуска или остановки сеанса расширенных событий требуется разрешение ALTER ANY EVENT SESSION. Транслятор как-раз работает на основе XEvent. Поэтому нужно, чтобы у пользователя были такие разрешения. Подробнее на MSDN: https://docs.microsoft.com/ru-ru/sql/relational-databases/extended-events/manage-event-sessions-in-the-object-explorer?view=sql-server-ver15

Либо подключитесь под пользователем с правами sysadm, если такое позволяется.
60. Free1CforAll 29.02.20 15:40 Сейчас в теме
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист, аналитик, эксперт 1С
Санкт-Петербург
По совместительству

Программист 1С
Новосибирск
зарплата от 30 000 руб.
Временный (на проект)

Программист 1С
Москва
зарплата от 100 000 руб. до 150 000 руб.
Полный день

Автор новостных обзоров на тему 1С и бухучета
Санкт-Петербург
По совместительству

Специалист внедрения и сопровождения 1С
Москва
зарплата от 80 000 руб.
Полный день