gifts2017

ADO Консоль запросов с конструктором для управляемого приложения (8.3.6+)

Опубликовал Денис Суходулов (DC) в раздел Администрирование - Сервисные утилиты

Обработка "Консоль запросов" для управляемого приложения с возможностью строить запросы к внешним источникам данных по интерфейсу ADO.
Имеет встроенный конструктор запросов с типовым интерфейсом для управляемого приложения.
В одном пакете можно обращаться к нескольким внешним источникам. В результате ADO запроса можно получить как обычную выборку данных, так и ВременнуюТаблицу, которую можно использовать в других запросах 1С или в контексте ADO...
Управляемые формы, платформа не ниже 8.3.6.

ADO запросы описываются в синтаксисе 1С, есть ограничения на использование некоторых функций  (см. макет "ОписанияSQL"), в остальном работа с таблицами внешних источников аналогична работе с ВременнымиТаблицами 1С...

Поддерживается создание временных таблиц в контексте ADO

Поддерживается передача параметров в запросы ADO.

Интерфейс конструктора запросов полностью типовой.

Формат файла запросов совместим с типовым.

При использовании библиотеки GameWithFire  Дмитрия Ощепкова, скорость вывода результата значительно увеличивается, но только при работе в ТолстомКлиенте и Файловом варианте ИБ (ограничения библиотеки).

Если количество таблиц подключаемых источников слишко велико, может возникнуть ошибка нехватки памяти. В этом случае можно сократить количество используемых таблиц при помощи редактора внешних источников в основной форме Консоли.

Доработано в версии от 11.12.2015 :

-Создание временных таблиц в контексте ADO

-Подсветка индексированных полей в формах конструктора запросов

-Расширение интерфейса панели выражений конструктора запросов :

  1. выбор предопределенных элементов функции ЗНАЧЕНИЕ в контексте 1С
  2. выбор параметров запроса 

Исправлено в версии от 19.11.2015 :

-Ошибка при открытии конструктора запросов с пустым списком внешних источников;

-Ошибка при попытке редактирования текста запроса в форме конструктора запросов. 

Доработано в версии от 17.11.2015 :

Требование к источнику - отсутствие в описании полей некорректных символов (пробелов и т.п.), и несовпадение имен полей с зарезервированными словами языка запросов 1С (Иерархия, Имеющие и т.п.)...    

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

Наименование Файл Версия Размер Кол. Скачив.
DC_КонсольЗапросов
.epf 942,31Kb
14.12.15
164
.epf 2.1 942,31Kb 164 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Сергей Старых (tormozit) 13.11.15 10:23
В описании ошибка. Минимальная версия платформы - 8.3.6
2. Вася Пупкин (Ks_83) 13.11.15 10:36
3. Юрий Ульянов (spy-83) 13.11.15 10:53
4. Piotr (Tolpinski) 13.11.15 12:40
(2) Ks_83, (3) spy-83, боты палятся :)
Выглядит и правда круто.
5. Вася Пупкин (Ks_83) 13.11.15 13:20
6. Алексей Роза (DoctorRoza) 13.11.15 13:22
7. Денис Суходулов (DC) 13.11.15 14:14
(1) tormozit, Ага, спасибо, исправил... В 8.3.5 не работает!
8. Денис Суходулов (DC) 13.11.15 14:35
(4) Tolpinski, Глазам не верим, а просто качаем файл, не стесняемся!=))
9. Юрий Ульянов (spy-83) 14.11.15 08:32
10. Дмитрий Т (Dmitri_1C) 14.11.15 22:16
Хороша штука, респект автору.
Жаль, нельзя плюсовать несколько раз.
11. Кирилл (kiros) 18.11.15 10:18
Осталось перейти на 8.3.6 :..(
12. Роман Фомин (Fominro) 18.11.15 12:16
При нажатии на "Конструктор запроса" выдает ошибку: {ВнешняяОбработка.DC_КонсольЗапросов.МодульОбъекта(3123)}: Метод объекта не обнаружен (Получить)
Источник=ВнешниеИсточникиADO.Получить(NewElement["Источник"]);
Платформа 8.3.6.2390
13. Денис Суходулов (DC) 18.11.15 14:31
(11) kiros, ну, а что мешает? Надо идти в ногу со временем)
14. Денис Суходулов (DC) 18.11.15 14:33
(12) Fominro, спасибо, исправил! Ошибка возникала, если не выбрано ни одного источника....
15. Андрей Осин (anosin) 20.11.15 11:06
платформа 1С:Предприятие 8.3 (8.3.6.2332)
ошибка
ВнешняяОбработка.DC_КонсольЗапросов.МодульОбъекта(4252,8): Процедура или функция с указанным именем не определена (СтрНайти)

поменял СтрНайти на Найти ошибки больше нет :)
16. Денис Суходулов (DC) 20.11.15 13:05
(15) anosin, скорее всего запускаете на платформе версии ниже 8.3.6!...
17. Павел Алексеенко (qwinter) 26.11.15 00:12
Он только под T-SQL? Или учитывает особенности и других баз данных, и если да то хотелось бы список поддерживаемых.
18. Денис Суходулов (DC) 26.11.15 01:46
(17) qwinter, Список поддерживаемых БД:
  • Transbase
  • MySql
  • IBM DB2
  • SQLite
  • PostgreSQL
  • MS SQL
  • Oracle
Протестировано на всем, кроме Oracle - лень было разворачивать, информацию по синтаксису брал из документации. По умолчанию используется T-SQL.
Аналоги некоторых функций 1С (НачалоПериода и т.п.) определены не для всех БД - описания есть в макете...
Если будут дополнения по функциям - выкладывайте, включу их в макет=)
19. Вячеслав Кадацкий (marsohod) 06.12.15 20:03
Добавьте в начало модулей
&НаКлиентеНаСервереБезКонтекста
Функция СтрНайти(ИсхСтрока, ПодстрокаПоиска)
	Возврат Найти(ИсхСтрока, ПодстрокаПоиска);
КонецФункции // СтрНайти()
...Показать Скрыть

а то вылетает не в тему :)
20. Денис Суходулов (DC) 07.12.15 17:44
(19) marsohod, вылетает, если тема ниже 8.3.6 =) Чуть позже выложу адаптированную версию под 8.3.5
21. Денис Суходулов (DC) 11.12.15 12:58
(15) anosin, (19) marsohod, Под 8.3.5 консоль работать не будет! Дело не строковых функциях, а в объекте СхемаЗапроса, у которого в версии 8.3.5 отсутствуют некоторые свойства, без которых не обойтись, к сожалению...
22. Василий Пересмешник (zaitseos) 11.12.15 13:00
23. Вячеслав Кадацкий (marsohod) 12.12.15 15:25
(20) DC, Отнюдь. Вылетает и на 8.3.7 :) Дело не в платформе, а в конфе. На ERP УПП не вылетает, а на УНФ вылетает. Просто функция СтрНайти() не везде есть и объявлена глобальной.
24. Денис Суходулов (DC) 12.12.15 15:45
(23) marsohod, Эта функция является встроенной, разве возможно ее переопределить? 1С не допускает, на сколько я знаю, перегрузку своих функций... У Вас УНФ, скорее всего, работает не на 8.3.7, а в режиме совместимости 8.3.5 или ниже...
25. Вячеслав Кадацкий (marsohod) 12.12.15 16:48
(24) DC, Да, Вы оказались правы :) УНФ действительно запускается в режиме совместимости 8.3.4, а СтрНайти() является встроенной функцией. Надо поменьше на котиков отвлекаться :)
26. Денис Суходулов (DC) 12.12.15 20:18
27. Алексей Бакханд (BackHand001) 21.12.15 13:52
28. Сергей Старых (tormozit) 06.02.16 15:43
Достойная работа!
Для тех, кто не перешел на 8.3.6+, предлагаю консоль запросов из подсистемы Инструменты разработчика на обычных формах 8.2.13+. Нужно выбрать тип запроса ADO, для которого будет доступен конструктор запросов (непохожий на штатный), дерево запроса, контекстная подсказка и 1с-ная подсветка синтаксиса.
29. Сергей Старых (tormozit) 06.02.16 18:50
Так как для сборки / разборки текста используется СхемаЗапроса, то инструмент имеет ограниченную применимость к другим (не 1С) диалектам SQL. Например конструктор запроса не понимает запросы MSJet
SELECT * FR OM [Лист1$] WHERE `Номенклатура`<>""

Еще довольно неудобно строку соединения вручную строить.
В ИР (28) таких проблем нет.
30. Денис Суходулов (DC) 10.02.16 11:44
(29) tormozit, как только разгребу дела, выложу обновление... с конструктором строки соединений и прочими...

По поводу синтаксиса - см. первое предложение в описании. Да, консоль никогда не поймет ваше предложение, ничего не поделаешь - запрос всегда будет ограничен контекстом 1С, со всеми вытекающими разочарованиями. Консоль не задумывалась как мощный инструмент (типа ИР), а как вьюер таблиц баз данных через интерфейс ADO, c возможностью быстро сравнить полученные результаты с данными в 1С...

Кстати, идея родилась после попытки поюзать ваше творение в связке c TecDoc (transbase) =))
Ничего у меня не получилось - openschema там не поддерживается, и сходу поменять код у меня то же вышло, а долго ковыряться не хотелось. ИР очень хорошая штука, но лично я ей не пользуюсь по двум причинам - старые формы и интерфейс, для меня , не очень "интуитивно" понятен если честно... На УФ перевод не планируется?
31. Сергей Старых (tormozit) 10.02.16 18:08
(30) Про "долго ковыряться не хотелось" читать странно с учетом количества кода в твоем творении =) Перевод ИР на УФ не планируется.
32. Денис Суходулов (DC) 10.02.16 22:49
(31) tormozit, кода да, много... Но 1С в основном...=)
33. Юрий Матасов (YuraMatasov) 14.09.16 16:29
Неплохо бы было реализовать поддержку FireBird
34. Юрий Матасов (YuraMatasov) 14.09.16 16:32
К FireBird коннектится. Только не выполняется запрос

SELECT
*
FROM
[STAFF] LocalhostD_PercoSCD17K_FDB_STAFF

Ругается на квадратные скобки

can't format message 13:896 -- message file C:\Windows\firebird.msg not found.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 4, column 5.
[.
35. Денис Суходулов (DC) 16.09.16 15:36
(34) YuraMatasov, привет! С Firebird к сожалению не знаком, скобки потому что по умолчанию используется T-SQL... Поддержку сделаю, когда из отпуска вернусь😊Можешь попробовать сам сделать по аналогии с остальными шаблонами, это не сложно😊
36. Станислав Елизаров (BR@T@N) 25.10.16 16:07
(35) DC, (34) YuraMatasov, Там интересный синтаксис в FB, вот пример: ТекстЗапроса = "
|Select
|TT.""fDate"" As fDate,
|TT.""fName"" As fNum,
|TT.""fSum"" As fSum
|From
|""tDoc"" TT Inner Join
|""tGoods"" On TT.""fObject"" = ""tGoods"".""fDoc"" Inner Join
|""tFirm"" On ""tFirm"".""fObject"" = TT.""fPartner"" Inner Join
|""tCountry"" On ""tCountry"".""fObject"" = ""tGoods"".""fCountry"" Inner Join
|""tModel"" On ""tModel"".""fObject"" = ""tGoods"".""fModel"" And ""tCountry"".""fObject"" =
|""tModel"".""fCountry""
|";

Двойные кавычки в запросе :-)
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа