Каталог решений - Конструктор запроса

Конструктор запроса

Конструктор запроса

В наличии

Данный конструктор запроса является доработанной версией типового конструктора, встроенного в платформу, с расширением функционала для удобства пользования.

Категория:

Описание

В сети много различных консолей запроса, но ни одного доработанного Конструктора. Конструктор запроса «вшит» в платформу, и извлечь его можно с помощью кода:

КопироватьФайл("v8res://mngbase/QueryWizard.epf", "C:\КонструкторЗапроса.epf");

 

Для начала захотелось доработать поиск в таблице «База данных» на странице «Таблицы и поля» (да, есть поиск Ctrl+F и отмена Ctrl+Q, неудобно).

Потом не устроило, что в условиях у таблицы строка не «многострочная».

В условиях в таблицу «Поля» со временем добавил поиск и сортировку по имени.

На форме «Произвольное выражение» (при открытии поля или условия) добавил частые символы из английской раскладки. Потом добавил выбор значения перечисления и выбор пустой ссылки. Добавил сортировку по наименованию. Докинул по мелочи команд в контекстное меню.

На вкладке «Дополнительно» урезал названия временных таблиц и добавил кнопку «Добавить запрос».

Так же при создании временной таблицы галка «Автоупорядочивание» теперь снимается автоматически.

Справа на форме добавил названия запросов и возможность переключатся по запросам. Так же при объединении добавил возможность переключатся между подзапросами.

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

Есть ещё немного мелких доработок во вкладке «Связи» и «Условия».

 

Конструктор можно добавить в свою любимую Консоль запроса в макет как двоичные данные и извлекать с помощью кода:

&НаКлиенте
Процедура ПриОткрытии(Отказ)

    ИмяФайла = ПолучитьИмяВременногоФайла("erf");
    ИмяОбр = ПолучитьИмяКонструкторЗапроса(ИмяФайла);
    …

КонецПроцедуры

&НаСервере
Функция ПолучитьИмяКонструкторЗапроса(ИмяФайла)

    ОписаниеЗащиты = Новый ОписаниеЗащитыОтОпасныхДействий;
    ОписаниеЗащиты.ПредупреждатьОбОпасныхДействиях = Ложь;
    Об = РеквизитФормыВЗначение("ОбработкаКонсольЗапросов");
    ДвоичныеДанные = об.ПолучитьМакет("КонструкторЗапроса");
    АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанные);
    ИмяОбр = ВнешниеОбработки.Подключить(АдресВоВременномХранилище,,,ОписаниеЗащиты);

    Возврат ИмяОбр;

КонецФункции

Вернуть консоль можно кодом:

&НаКлиенте
Процедура ВозвратКонструктора(Команда)

    ВозвратКонструктораНаСервере();

КонецПроцедуры

&НаСервере
Процедура ВозвратКонструктораНаСервере ()

    ИмяФайла = ПолучитьИмяВременногоФайла("erf");
    КопироватьФайл("v8res://mngbase/QueryWizard.epf",ИмяФайла);
    ОписаниеЗащиты = Новый ОписаниеЗащитыОтОпасныхДействий;
    ОписаниеЗащиты.ПредупреждатьОбОпасныхДействиях = Ложь;
    АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ИмяФайла));
    ИмяОбр = ВнешниеОбработки.Подключить(АдресВоВременномХранилище,,,ОписаниеЗащиты);

КонецПроцедуры

Если у кого появятся идеи, как еще можно доработать, либо сами доработки – прошу делиться.

has been added to your cart:
Оформление заказа