Консоль запросов. Очередная гайка.


Небольшое дополнение к консоли запросов. Позволяет создавать функцию вместе с текстом запроса.
Здравствуйте уважаемые инфостартовцы. Прежде чем приступить к изложению небольшое отступление.
Возможно эта опция есть в других консолях. Если есть прошу строго не судить.
Итак начнем
Рецепт приготовления гайки)
1. Берем 1 стандартную консоль Чистова. Открываем ее в Конфигураторе.
2. Открываем основную форму и находим там элемент «КоманднаяПанельТекстаЗапроса».
3. Добавляем кнопку и даем ей какое нибудь незатейливое название. Например «Fx».
4. Создаем обработчик по нажатию кнопки.
5. В текст обработчика добавляем следующий код:

пНазваниеФункции="";

    ФункцияИнициал = "Функция ";

    Кодзапроса="";

    КодЗапроса = КодЗапроса+ФункцияИнициал;

    ТекстЗапроса = СтрЗаменить(вПолучитьТекстЗапроса(Истина), "|", "");

    Если ПустаяСтрока(ТекстЗапроса) Тогда

        Предупреждение("Отсутствует текст запроса.");

        Возврат;

    КонецЕсли;

    Запрос = Новый Запрос(ТекстЗапроса);

    

    Попытка

        ПараметрыЗапроса = Запрос.НайтиПараметры();

    Исключение

        Предупреждение(ОписаниеОшибки());

        Возврат;

    КонецПопытки;

    

    //название функции

    Если НЕ ВвестиСтроку(пНазваниеФункции, "Введите Имя функции") Тогда

        Возврат;

    КонецЕсли;

    КодЗапроса = КодЗапроса+ пНазваниеФункции+"(";

    КоличествоПараметров = ПараметрыЗапроса.Количество();

    НачальныйПараметр=1;

    Для каждого ПараметрЗапроса Из ПараметрыЗапроса Цикл

       

        Если НачальныйПараметр = КоличествоПараметров Тогда

            КодЗапроса = КодЗапроса+ПараметрЗапроса.Имя;

        Иначе

            КодЗапроса = КодЗапроса+ПараметрЗапроса.Имя + ",";

        КонецЕсли;

 
НачальныйПараметр = НачальныйПараметр+1;
    КонецЦикла;

    

    КодЗапроса = КодЗапроса+ ")"+Символы.ПС;

    пНазваниеЗапроса = "Запрос";

    Если НЕ ВвестиСтроку(пНазваниеЗапроса, "Введите Имя запроса") Тогда

        Возврат;

    КонецЕсли; 

    КодЗапроса = КодЗапроса + пНазваниеЗапроса + " = Новый Запрос;" + Символы.ПС;

    НовыйТекст = "";

    Для Ном = 1 По ЭлементыФормы.ТекстЗапроса.КоличествоСтрок() Цикл

        Текст = СтрЗаменить(ЭлементыФормы.ТекстЗапроса.ПолучитьСтроку(Ном),"|","");

        Текст = СтрЗаменить(Текст, Символ(34), Символ(34) + Символ(34));

        НовыйТекст = НовыйТекст + "|" + Текст + Символы.ПС;

    КонецЦикла;
    КодЗапроса = КодЗапроса + пНазваниеЗапроса + ".Текст = """ + Символы.ПС + СокрЛП(НовыйТекст) + """;" + Символы.ПС;

    

    Для каждого ПараметрЗапроса Из ПараметрыЗапроса Цикл

        КодЗапроса = КодЗапроса + пНазваниеЗапроса+".УстановитьПараметр("""+ПараметрЗапроса.Имя+""","+Символы.Таб+ПараметрЗапроса.Имя+");"+Символы.Таб+" //" + ПараметрЗапроса.ТипЗначения + Символы.ПС;

    КонецЦикла;
    КодЗапроса = КодЗапроса + "РезультатЗапроса = " + пНазваниеЗапроса + ".Выполнить();"+Символы.ПС;

    КодЗапроса = КодЗапроса + "Возврат РезультатЗапроса;"+Символы.ПС;

    КодЗапроса = КодЗапроса + "КонецФункции"+Символы.ПС;

    ФормаКода = ПолучитьФорму("ФормаКодаЗапроса");

    ФормаКода.ЭлементыФормы.КодЗапроса.УстановитьТекст(КодЗапроса);

    ФормаКода.Открыть();

6. Почти готово.
7. Заходим в режим Предприятие. И пробуем.
8. Результат приведен на скриншоте.
9.Спасибо за внимание.

Файл консоли прикладывать не буду его найти не проблема.

2 Comments

  1. AlexO

    Это что — просто создаем текст под функцию, и все? А чем не устраивает обычные «создать текст модуля»?

    Reply
  2. mdmdvd

    Я и написал ,что если есть то не судите строго)

    Reply

Leave a Comment

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