lavelinevgeny / consquery

Обработка 1C "Консоль запросов consquery.ru"
http://consquery.ru
Other
34 stars 10 forks source link

Граница в параметрах запроса. #4

Closed aairt closed 4 years ago

aairt commented 4 years ago

изображение

Нужно дописать код в 3-х процедурах: ВыполнитьЗапросИзФормыПродолжение, ПолучитьПараметрыЗапросовДляJSON и гТипыЗначенийПараметров. Изменения в коде помечены конструкцией "//++ доработка".

Процедура ВыполнитьЗапросИзФормыПродолжение(Параметры)

    ..

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

        Если СписокПараметров.Найти(СтрокаПараметров.Имя) = Неопределено Тогда 
            Продолжить;
        КонецЕсли;

        Если СтрокаПараметров.Тип = гТипыЗначенийПараметров().ТаблицаЗначений Тогда 
            лИдентификаторПараметра = гПреобразоватьВПравильноеНазвание(СтрокаПараметров.ИдентификаторСтроки);
            Если гДанныеВременныхТаблиц.Свойство(лИдентификаторПараметра) Тогда 
                лЗапрос.УстановитьПараметр(СтрокаПараметров.Имя, гДанныеВременныхТаблиц[лИдентификаторПараметра]);
            Иначе
                Сообщить("Параметр " + СтрокаПараметров.Имя + " не простого типа. 
                |Значение данного параметра берется из структуры гДанныеВременныхТаблиц с ключем """ + лИдентификаторПараметра + """.
                |Код для вставки значения параметра через форму выполнения произвольного кода:                              
                |   гДанныеВременныхТаблиц.Вставить(""" + лИдентификаторПараметра + """, %ПеременнаяСоЗначениемПараметра%)", СтатусСообщения.Важное);
            КонецЕсли;
//++ доработка      
                ИначеЕсли СтрокаПараметров.Тип = гТипыЗначенийПараметров().Граница Тогда 
            лЗапрос.УстановитьПараметр(СтрокаПараметров.Имя, Новый Граница(СтрокаПараметров.Значение));
//-- доработка      
        Иначе
            лЗапрос.УстановитьПараметр(СтрокаПараметров.Имя, СтрокаПараметров.Значение);
        КонецЕсли;
    КонецЦикла;
..
Функция ПолучитьПараметрыЗапросовДляJSON(ПараметрыЗапросов, МассивИдентификаторовЗапросов, ЗаменяемыеИД) Экспорт

    лМассивПараметров = Новый Массив;

    Если МассивИдентификаторовЗапросов.Найти("") = Неопределено Тогда 
        // Добавляем пустой идентификатор - признак глобального параметра
        МассивИдентификаторовЗапросов.Добавить("");
    КонецЕсли;

    // добавляем локальные параметры
    Для Каждого ИдентификаторЗапроса Из МассивИдентификаторовЗапросов Цикл
        лПараметрыТекущегоЗапроса = ПараметрыЗапросов.НайтиСтроки(Новый Структура("ИдентификаторЗапроса", ИдентификаторЗапроса));
        Для каждого ПараметрТекущегоЗапроса Из лПараметрыТекущегоЗапроса Цикл
            Если ЗаменяемыеИД <> Неопределено Тогда 
                лИдентификаторЗапроса = ЗаменяемыеИД.Получить(ИдентификаторЗапроса);
                Если лИдентификаторЗапроса = Неопределено Тогда 
                    лИдентификаторЗапроса = ИдентификаторЗапроса;
                КонецЕсли;
            Иначе
                лИдентификаторЗапроса = ИдентификаторЗапроса;
            КонецЕсли;

            СтруктураТекущихПараметров = Новый Структура();
            СтруктураТекущихПараметров.Вставить("ИдентификаторЗапроса", лИдентификаторЗапроса);
            СтруктураТекущихПараметров.Вставить("ИдентификаторСтроки" , ПараметрТекущегоЗапроса.ИдентификаторСтроки);
            СтруктураТекущихПараметров.Вставить("Имя"                 , ПараметрТекущегоЗапроса.Имя);
            СтруктураТекущихПараметров.Вставить("Значение"            , ПараметрТекущегоЗапроса.Значение);
//++ доработка          
                       СтруктураТекущихПараметров.Вставить("Тип"            ,       ПараметрТекущегоЗапроса.Тип); 
//-- доработка
            лМассивПараметров.Добавить(СтруктураТекущихПараметров);
        КонецЦикла; 
    КонецЦикла; 

    Возврат лМассивПараметров

КонецФункции // получитьПараметрыЗапросовДляJSON()
Функция гТипыЗначенийПараметров() Экспорт
    Возврат Новый Структура("Значение, Список, ТаблицаЗначений, Граница",1,2,3,4)  
КонецФункции // ТипыЗначенийПараметров()
lavelinevgeny commented 4 years ago

ок ,спасибо... проанализирую... а зачем в процедуре ПолучитьПараметрыЗапросовДляJSON добавлять в СтруктураТекущихПараметров ключ "Тип" ?

lavelinevgeny commented 4 years ago

Функционал добавлен в 3.1.413