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