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











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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

40 Comments

  1. tormozit

    В описании ошибка. Минимальная версия платформы — 8.3.6

    Reply
  2. Ks_83

    Мощно

    Reply
  3. spy-83

    Круто!

    Reply
  4. Ks_83

    (4) Tolpinski, Сам ты бот)

    Reply
  5. DoctorRoza

    Мощно и круто!

    Reply
  6. DC

    (1) tormozit, Ага, спасибо, исправил… В 8.3.5 не работает!

    Reply
  7. DC

    (4) Tolpinski, Глазам не верим, а просто качаем файл, не стесняемся!=))

    Reply
  8. spy-83

    (4) Tolpinski, ты троль?

    Reply
  9. Dmitri_1C

    Хороша штука, респект автору.

    Жаль, нельзя плюсовать несколько раз.

    Reply
  10. kiros

    Осталось перейти на 8.3.6 :..(

    Reply
  11. Fominro

    При нажатии на «Конструктор запроса» выдает ошибку: {ВнешняяОбработка.DC_КонсольЗапросов.МодульОбъекта(3123)}: Метод объекта не обнаружен (Получить)

    Источник=ВнешниеИсточникиADO.Получить(NewElement[«Источник»]);

    Платформа 8.3.6.2390

    Reply
  12. DC

    (11) kiros, ну, а что мешает? Надо идти в ногу со временем)

    Reply
  13. DC

    (12) Fominro, спасибо, исправил! Ошибка возникала, если не выбрано ни одного источника….

    Reply
  14. anosin

    платформа 1С:Предприятие 8.3 (8.3.6.2332)

    ошибка

    ВнешняяОбработка.DC_КонсольЗапросов.МодульОбъекта(4252,8): Процедура или функция с указанным именем не определена (СтрНайти)

    поменял СтрНайти на Найти ошибки больше нет 🙂

    Reply
  15. DC

    (15) anosin, скорее всего запускаете на платформе версии ниже 8.3.6!…

    Reply
  16. qwinter

    Он только под T-SQL? Или учитывает особенности и других баз данных, и если да то хотелось бы список поддерживаемых.

    Reply
  17. DC

    (17) qwinter, Список поддерживаемых БД:

    • Transbase
    • MySql
    • IBM DB2
    • SQLite
    • PostgreSQL
    • MS SQL
    • Oracle

    Протестировано на всем, кроме Oracle — лень было разворачивать, информацию по синтаксису брал из документации. По умолчанию используется T-SQL.

    Аналоги некоторых функций 1С (НачалоПериода и т.п.) определены не для всех БД — описания есть в макете…

    Если будут дополнения по функциям — выкладывайте, включу их в макет=)

    Reply
  18. marsohod

    Добавьте в начало модулей

    &НаКлиентеНаСервереБезКонтекста
    Функция СтрНайти(ИсхСтрока, ПодстрокаПоиска)
    Возврат Найти(ИсхСтрока, ПодстрокаПоиска);
    КонецФункции // СтрНайти()
    

    а то вылетает не в тему 🙂

    Reply
  19. DC

    (19) marsohod, вылетает, если тема ниже 8.3.6 =) Чуть позже выложу адаптированную версию под 8.3.5

    Reply
  20. DC

    (15) anosin, (19) marsohod, Под 8.3.5 консоль работать не будет! Дело не строковых функциях, а в объекте СхемаЗапроса, у которого в версии 8.3.5 отсутствуют некоторые свойства, без которых не обойтись, к сожалению…

    Reply
  21. zaitseos

    ура!

    Reply
  22. marsohod

    (20) Отнюдь. Вылетает и на 8.3.7 🙂 Дело не в платформе, а в конфе. На ERP УПП не вылетает, а на УНФ вылетает. Просто функция СтрНайти() не везде есть и объявлена глобальной.

    Reply
  23. DC

    (23) marsohod, Эта функция является встроенной, разве возможно ее переопределить? 1С не допускает, на сколько я знаю, перегрузку своих функций… У Вас УНФ, скорее всего, работает не на 8.3.7, а в режиме совместимости 8.3.5 или ниже…

    Reply
  24. marsohod

    (24) Да, Вы оказались правы 🙂 УНФ действительно запускается в режиме совместимости 8.3.4, а СтрНайти() является встроенной функцией. Надо поменьше на котиков отвлекаться 🙂

    Reply
  25. DC

    (25) marsohod, Котики рулят!=))

    Reply
  26. BackHand001

    Спасибо !!!!

    Reply
  27. tormozit

    Достойная работа!

    Для тех, кто не перешел на 8.3.6+, предлагаю консоль запросов из подсистемы Инструменты разработчика на обычных формах 8.2.13+. Нужно выбрать тип запроса ADO, для которого будет доступен конструктор запросов (непохожий на штатный), дерево запроса, контекстная подсказка и 1с-ная подсветка синтаксиса.

    Reply
  28. tormozit

    Так как для сборки / разборки текста используется СхемаЗапроса, то инструмент имеет ограниченную применимость к другим (не 1С) диалектам SQL. Например конструктор запроса не понимает запросы MSJet

    SELECT * FR OM [Лист1$] WHERE `Номенклатура`<>»»

    Еще довольно неудобно строку соединения вручную строить.

    В ИР (28) таких проблем нет.

    Reply
  29. DC

    (29) tormozit, как только разгребу дела, выложу обновление… с конструктором строки соединений и прочими…

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

    Кстати, идея родилась после попытки поюзать ваше творение в связке c TecDoc (transbase) =))

    Ничего у меня не получилось — openschema там не поддерживается, и сходу поменять код у меня то же вышло, а долго ковыряться не хотелось. ИР очень хорошая штука, но лично я ей не пользуюсь по двум причинам — старые формы и интерфейс, для меня , не очень «интуитивно» понятен если честно… На УФ перевод не планируется?

    Reply
  30. tormozit

    (30) Про «долго ковыряться не хотелось» читать странно с учетом количества кода в твоем творении =) Перевод ИР на УФ не планируется.

    Reply
  31. DC

    (31) tormozit, кода да, много… Но 1С в основном…=)

    Reply
  32. YuraMatasov

    Неплохо бы было реализовать поддержку FireBird

    Reply
  33. YuraMatasov

    К FireBird коннектится. Только не выполняется запрос

    SELECT

    *

    FROM

    [STAFF] LocalhostD_PercoSCD17K_FDB_STAFF

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

    can’t format message 13:896 — message file C:Windowsfirebird.msg not found.

    Dynamic SQL Error.

    SQL error code = -104.

    Token unknown — line 4, column 5.

    [.

    Reply
  34. DC

    (34) YuraMatasov, привет! С Firebird к сожалению не знаком, скобки потому что по умолчанию используется T-SQL… Поддержку сделаю, когда из отпуска вернусь😊Можешь попробовать сам сделать по аналогии с остальными шаблонами, это не сложно😊

    Reply
  35. BR@T@N

    (35) (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»»

    |»;

    Двойные кавычки в запросе 🙂

    Reply
  36. ignor

    Ошень хочется суметь конектиться консолькой к базе на 7.7

    Reply
  37. DC

    (37) Консоль может работать с форматами dBase и SQL…

    7.7, на сколько я помню, ограничена SQL 2000 — к такому северу подключаться не пробовал, но думаю что проблем не будет

    Reply
  38. ignor

    (38) Очень было бы интересно если бы в консоль можно было засунуть каким то образом информацию о структуре метаданных 7.7 (разбор файлов MD и (DD,DDS) ) для организации прямых запросов к БД 1С 7.7 по технологии прямых запросов как из 1C 7.7 при помощи компоненты компоненты 1С++. Так же привлекательно было бы если бы можно было описывать метаданные от произвольных источников данных… То есть скажем есть набор таблиц, а пользователь-программист в результате проведённого анализа описывает таблицы в терминах а-ля регистр, документ, табличная часть справочника в результате чего, получив описанную структуру в виде, скажем, XML файла, другой пользователь-программист при помощи данной консоли имеет возможность писать запросы консолью именно в терминах метаданных визуальным конструктором.

    Что до меня то я пока к сожалению недостаточно компетентен ни для того что бы написать такую консоль, ни даже для того что бы подключить существующий источник данных. Мне бы схемку аль чертёж или примерчик. В смысле последовательность шагов которую надо выполнить скажем для того что бы в 1С 8 подключить файл acces mdb. Как, что и где описывать в виде источника данных. Может подскажите?

    Reply
  39. DC

    (39) Дерево метаданных 7.7? Сорри, не готов к этому морально)) Да и времени нет….

    По поводу сборки строки соединения — вот это должно помочь : https://www.connectionstrings.com/

    Reply
  40. Светлый ум

    ADO не у всех полетит — у кого нет прав на установку dll под своей учеткой — проходите мимо.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *