|
Пользовательский фильтр в отчете на СКД программно | ☑ | ||
---|---|---|---|---|
0
BenDiget
27.12.22
✎
15:14
|
Ребят, привет!
Делаю отчет на СКД с емким результатом запроса. Как бы сделать так, чтобы пользовательский отбор влиял на Запрос, а не на результат запроса. Чтобы отчет формировался быстрее? Вот мой код: Таблицу запроса получаю функцией: ПолучитьТаблицуСвязей() Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ТаблицаСвязей = ПолучитьТаблицуСвязей(); //Связь между таблицей значений и именами в СКД ВнешниеНаборыДанных = Новый Структура; ВнешниеНаборыДанных.Вставить("ТаблицаСвязей", ТаблицаСвязей); //Макет компоновки КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(ЭтотОбъект.СхемаКомпоновкиДанных, ЭтотОбъект.КомпоновщикНастроек.ПолучитьНастройки(), ДанныеРасшифровки); //Компоновка данных ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки); //Вывод результата ДокументРезультат.Очистить(); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновки); КонецПроцедуры |
|||
1
BenDiget
27.12.22
✎
15:16
|
Возможно будут другие рекомендации, как фильтр правильно настроить. Уточню: например пользователь захотел отобрать по Организации, добавил на форме отчета отбор. И у меня Запрос отработал уже с этим отбором. Если так нельзя, то как лучше?
|
|||
2
SleepyHead
гуру
27.12.22
✎
15:30
|
Как вариант - делай свой набор данных-объект, и заполняй его как тебе хочется.
|
|||
3
toypaul
гуру
27.12.22
✎
16:42
|
очистить отбор в ЭтотОбъект.КомпоновщикНастроек после того как получил таблицу связей
|
|||
4
Мультук
гуру
27.12.22
✎
17:55
|
(3)
Я думаю, он хочет вот так, чтобы получить в "ТаблицаСвязей" не 100 млн строк, а по отборам из компоновщика ТаблицаСвязей = ПолучитьТаблицуСвязей(ЭтотОбъект.КомпоновщикНастроек.ПолучитьНастройки()); |
|||
5
BenDiget
29.12.22
✎
11:51
|
В итоге просто добавил отбор, в параметры запроса:
Для Каждого ЭлементОтбора Из Настройки.Отбор.Элементы Цикл Если ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Организация") И ЭлементОтбора.Использование И ЭлементОтбора.ВидСравнения = ВидСравненияПользователя Тогда Запрос.УстановитьПараметр("Организация", ЭлементОтбора.ПравоеЗначение); КонецЕсли; КонецЦикла; Отбор только один, поэтому пока сойдет. Но я читал, что лучше через построитель такое делать. Тема закрыта |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |