Приветствую Вас ГостьВоскресенье, 19.05.2024, 03:03

Каталог статей


Изменить динамически запрос в СКД

Текст запроса можно получить в процедуре ПриКомпоновкеРезультата() и исправить его перед выполнением.

Например есть параметр типа список строк, и в зависимости от его содержимого надо переделать отбор в запросе.

Текст процедуры:

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    Настройки = КомпоновщикНастроек.ПолучитьНастройки(); 

   // в запросе есть строка "ГДЕ &ПараметрыПоиска". Формируем нужный текст условий и подставляем его вместо &ПараметрыПоиска

    ПараметрыПоиска = Настройки.ПараметрыДанных.Элементы.Найти("СтрокиОтбораНазванияФайла");
    Если ПараметрыПоиска.Использование Тогда 
        СтрокаОтбора= "";
        Для каждого СтрокаСписка из ПараметрыПоиска.Значение Цикл
            СтрокаОтбора = СтрокаОтбора + ?(СтрокаОтбора= "",""," ИЛИ ") + "ХранилищеФайловСрезПоследних.Наименование ПОДОБНО """ + СтрокаСписка.Значение + """";
        КонецЦикла;
    Иначе
        СтрокаОтбора = "Истина";
    КонецЕсли;
        
    ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; 
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; 

    Запрос = СхемаКомпоновкиДанных.НаборыДанных.НаборДанных1.Запрос;
    Запрос = СтрЗаменить(Запрос,"&ПараметрыПоиска",СтрокаОтбора);
    СхемаКомпоновкиДанных.НаборыДанных.НаборДанных1.Запрос = Запрос; 
        
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
    
    // Скомпонуем результат
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки);
            
    ДокументРезультат.Очистить();
    
    // Выводим результат в табличный документ
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);    
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);      
КонецПроцедуры
 

Категория: СКД | Добавил: leshic (28.07.2021)
Просмотров: 1186 | Рейтинг: 0.0/0
Всего комментариев: 0
Вход на сайт
Поиск
Категории раздела
СКД [48]
Регистры [7]
Формы [41]
Администрирование [35]
Запросы [10]
Объекты конфигурации и типы данных [20]
Взаимодействие с другими базами, приложениями и источниками данных [16]
Программирование [29]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0