gifts2017

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

Опубликовал Иванов Дмитрий (mdmdvd) в раздел Программирование - Инструментарий

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

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

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

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

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

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

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

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

        Возврат;

    КонецЕсли;

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

    

    Попытка

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

    Исключение

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

        Возврат;

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

    

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

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

        Возврат;

    КонецЕсли;

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

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

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

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

       

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

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

        Иначе

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

        КонецЕсли;

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

    

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

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

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

        Возврат;

    КонецЕсли; 

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

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

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

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

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

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

    КонецЦикла;


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

    

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

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

    КонецЦикла;


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

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

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

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

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

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

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

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

См. также

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

Комментарии

1. Алекс Ю (AlexO) 31.07.14 23:28
Это что - просто создаем текст под функцию, и все? А чем не устраивает обычные "создать текст модуля"?
2. Иванов Дмитрий (mdmdvd) 01.08.14 12:55
Я и написал ,что если есть то не судите строго)
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа