Отчет Fast Report с фильтром по диапазону дат + возможность запуска по расписанию с рассылкой
Добрый день!
Подскажите пожалуйста, как решить проблему:
Нужен отчет в Fast Report в котором записи фильтруются по диапазону дат, введенных пользователем во время запуска отчета. + Возможность запуска генерации отчета по расписанию и рассылки с автоматическим проставлением дат.
Что меня смущает и поправьте пожалуйста, если я не прав:
1) Я не могу использовать для построения отчета датасет, который базируется на запросе с параметрами. Т.к. как передать из FR параметры в запрос я не нашел. Какой выход - писать кастомный запрос в самом FR?
2) Допустим, я создам датасет, который будет выбирать все данные независимо от дат. Но когда я жму кнопку "Установить фильтры" то я не могу задать там фильтр >= и =. Вопрос - эти фильтры работают только для текстовых полей?
3) Насколько я понимаю, функционал запуска по расписанию придется решать как то так:
создавать форму, на которой ничего не будет, в обработчике OnPrepare например писать скрипт который сформирует отчет и потом разошлет пользователям а затем закроет форму. Потом в Scheduled Tasks создавать задачу, которая будет по расписанию запускать террасофт с параметром - кодом окна.
Буду благодарен за любые комментарии/решения/предложения и тем более примеры :)
Спасибо.
Нравится
Реализовать отчет FastReport, в котором записи фильтруются по диапазону дат Вы можете двумя способами: создать собственное окно фильтрации, в котором пользователь будет выбирать период фильтрации; использовать встроенное окно фильтрации FastReport.
В качестве примера для создания отчета с собственным окном фильтрации можно использовать отчеты "Анализ конкурентов" (fr_OpportunitiesCompetitors), "Отчет по продажам" (fr_ReportOpportunitiesSalesCycleAnalisys) с окном фильтрации wnd_ServiceDeskDateFilter. Также во вложении прилагаю для ознакомления файл, в котором описан принцип создания окна фильтрации для отчета.
"komgbu" написал:2) Допустим, я создам датасет, который будет выбирать все данные независимо от дат. Но когда я жму кнопку "Установить фильтры" то я не могу задать там фильтр >= и <=. Вопрос - эти фильтры работают только для текстовых полей?
Встроенное окно фильтрации FastReport позволяет устанавливать фильтры >= и <= для полей с типом "Дата/время", "Целое число", "Дробное число":
Здравствуйте,
По поводу 1) и 2) вопроса, предлагаю вам почитать в теме http://www.community.terrasoft.ru/blogs/7286
если, что либо не понятно, опишу более подробно
3) Как вариант можно создать и так,
На сколько я понял, под Scheduled Tasks вы имеете ввиду Task Scheduler Windows'а
Здравствуйте,
Скрипт scr_BaseFastReportPreviewScript
function PrepareReport(AWindow) { CheckAttribute(AWindow, 'Report'); frpMain.Report = GetAttribute(AWindow, 'Report'); var FiltersCaption = frpMain.Report.Caption + " (Фильтры)"; var PreviewCaption = frpMain.Report.Caption + " (Просмотр)"; frpMain.PrepareReport(); Self.WindowCaption = PreviewCaption; if (IsAttributeExists(AWindow, 'ShowFilterForm')) ...
Строчка формирует название
var PreviewCaption = frpMain.Report.Caption + " (Просмотр)";
присваиваем значение,
Self.WindowCaption = PreviewCaption;
можете в этом моменте проверять с каким отчетом вы работаете
if (ExtractUSICodeEx(frpMain.Report.USI)=='fr_ReportContactTasks') { ... }
и формировать нужное вам значение заголовка окна
Еще один вопрос, если можно:
По поводу разграничения прав доступа к отчету.
1) Я так понимаю, через какие-то настройки прав определенной группе пользователей дать на отчет нельзя, и придется все реализовывать программно?
2) Если запрос отчета выбирает данные из таблиц/полей недоступных пользователю, они будут пустыми в отчете?
Спасибо!
1) Права доступа к отчету вы можете настроить в детали [Доступ]
где указать необходимые вам группы пользователей
2) Поля на которые нет доступа у пользователя отображается не будут
Здравствуйте,
Нажатие кнопки (выделено красным) в Terrasoft Administrator, вызовет окно на которое показывает стрелка на рисунке