Передача значений параметров стандартной формы фильтрации в отчет

Нужно передать значение параметра фильтра в отчет, т.е. получить его в FastReport.
Читал ветку форума https://community.terrasoft.ru/forum/topic/4405 пост 15, но так и не понял где там FastReport. В этом посте говориться что к форме фильтрации можно обратиться в событии onPreview отчета, но у сервиса FastReport нет такого события.

Нравится

15 комментариев

Предложение для разработчиков, эта функция часто требуется для составления отчетов, очень удобно было бы задать название переменной при создании фильтра, которую нужно принять в FastReport. Т.е. при выборе поля в стандартной форме фильтрации, сделать для полей значения которых необходимо передать в FastReport возможность назвать переменную которую потом можно будет получить в отчете.

Еще один вопрос про фильтр, но если я уже использую свой форму для.
Нужно в своем окне фильтра реализовать возмножность необязательного параметра, т.е. если параметр задан то делать фильтрацию по этому параметру, если нет, то выводить все значения по этому полю.

Здравствуйте Александр.
Ознакомтесь пожалуйста с http://www.community.terrasoft.ru/blogs/7286

Спасибо по первому вопросу помогло http://www.community.terrasoft.ua/forum/topic/4750

"Гунгер Александр" написал:

Предложение для разработчиков, эта функция часто требуется для составления отчетов, очень удобно было бы задать название переменной при создании фильтра, которую нужно принять в FastReport. Т.е. при выборе поля в стандартной форме фильтрации, сделать для полей значения которых необходимо передать в FastReport возможность назвать переменную которую потом можно будет получить в отчете.

Предложения для разработчиков можно публиковать в разделе Идеи. Если идея наберет достаточное количество голосов пользователей, разработчики включат ее в следующую версию.

"Гунгер Александр" написал:

Нужно в своем окне фильтра реализовать возмножность необязательного параметра, т.е. если параметр задан то делать фильтрацию по этому параметру, если нет, то выводить все значения по этому полю.

Таким образом работают все фильтры. Если они заданы, фильтрация по ним происходит, если не заданы - их наличие игнорируется.

Спасибо Алексей, с необязательным параметром разобрался, но по своему окну фильтрации все же осталась одна проблема, нужно для LoockupControl сделать множественный выбор. Читал http://www.community.terrasoft.ru/developer/faq/4155 сделал все как там написано, но также как и в данном посте есть проблема, нажимаю на кнопку "ок" в окне wnd_MultiSelectData ни чего не происходит. В этом посте предлагали заменить сервис wnd_MultiSelectData на измененный, но ссылка к сожалению уже не доступна. Хотя там была версия 3.1.1 а у меня 3.3.2.127

Александр,

уточните, пожалуйста, как планируется использовать результат множественного выбора в окне?

Дело в том, что просто добавить множественный выбор недостаточно, необходимо еще дополнительно обрабатывать его результаты.

В частности, в предложенном для реализации примере результат множественного выбора хранится не как уникальный идентификатор, а как массив, соответственно, при фильтрации его необходимо разбивать на элементы и формировать результат для каждого.

В случае, если Вам необходимо передать его в запрос отчета, нужно в запрос создать новый IncludeFilter и передавать множество значений ему, а не одиночному фильтру.

Да, мне нужно передавать его в запрос отчета. Насчет IncludeFilter понятно, но у меня не отрабатывает нажатие на кнопку ОК в окне множественного выбора.

Александр,

Наиболее вероятная причина проблемы - поле, в которое Вы пытаетесь записать результат множественного выбора, может вместить только UID.

Есть ли у Вас возможность приложить отредактированные сервисы для анализа?

Вот мои сервисы 111.zip

Здравствуйте, Александр!

Проблема возникла потому, что для окна выбора не указан датасет по умолчанию dlData, и окно wnd_MultiSelectData не знает, куда ему возвращать выбранный результат.

Оптимальный вариант в данном случае - успользовать в окне выбора датасет отчета, т.к. в данном случае нет острой необходимости подключать несколько разных датасетов.

Для тестирования и отладки окна необходимы также сервисы связанных таблиц: tbl_Categories, tbl_Task, tbl_Contact (а также их запрос и датасет)

Сервисы которые Вы просили 222.zip
А насчет датасета по умолчанию я не понял, в окне выбора два датасета для LookupControl каждый.
Когда мы добавляем отчет в систему мы же указываем "Фильтруемый источник данных" он и должен быть тот датасет на который накладывается данный фильтр.

В окне фильтрации следует фильтровать датасет отчета, добавлять туда два отдельных датасета Контакты и Контрагенты неэффективно.

Кроме того, датасет также требует доработки: поле TeacherName туда следует добавить как поле справочника. Аналогичным образом и поле AccountID

FilterEngine.Report.Attributes('StartDate') = edtStartDate.Value;
	FilterEngine.Report.Attributes('EndDate') = edtEndDate.Value;
ApplyDatasetFilter(FilterEngine.ReportPreviewer.DatasetByUSI('ds_TeachersLoad')
	,'StartDate', edtStartDate.Value, true);			  				
ApplyDatasetFilter(FilterEngine.ReportPreviewer.DatasetByUSI('ds_TeachersLoad')
	,'EndDate', GetEndDayDate(edtEndDate.Value), true);
ApplyDatasetFilter(FilterEngine.ReportPreviewer.DatasetByUSI('ds_TeachersLoad')
	,'TeacherID', edtTeacher.Value, true);
if (!IsEmptyValue(edtAccount.Value)) {
	ApplyDatasetFilter(FilterEngine.ReportPreviewer.DatasetByUSI('ds_TeachersLoad')
		,'AccountID', edtAccount.Value, true);}

Я же и так фильтрирую по одному датасету!! А которые добавленны в форму, они же используются для подтягивания справочников в LookupControl_ы.

Для примера возьмем сервис wnd_FilterAccountOfferingBalance, в нем добавлено 3 датасета для LookupControl и фильтр выполняется по совсем другим датасетам. Объясните что я не так понимаю?

Всем спасибо, разобрался!!

Показать все комментарии