Отчет 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
[javascript]
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'))
...
[/javascript]
Строчка формирует название
[javascript]
var PreviewCaption = frpMain.Report.Caption + " (Просмотр)";
[/javascript]
присваиваем значение,
[javascript]
Self.WindowCaption = PreviewCaption;
[/javascript]
можете в этом моменте проверять с каким отчетом вы работаете
[javascript]
if (ExtractUSICodeEx(frpMain.Report.USI)=='fr_ReportContactTasks')
{
...
}
[/javascript]
и формировать нужное вам значение заголовка окна
Еще один вопрос, если можно:
По поводу разграничения прав доступа к отчету.
1) Я так понимаю, через какие-то настройки прав определенной группе пользователей дать на отчет нельзя, и придется все реализовывать программно?
2) Если запрос отчета выбирает данные из таблиц/полей недоступных пользователю, они будут пустыми в отчете?
Спасибо!
1) Права доступа к отчету вы можете настроить в детали [Доступ]

где указать необходимые вам группы пользователей
2) Поля на которые нет доступа у пользователя отображается не будут
Здравствуйте,
Нажатие кнопки (выделено красным) в Terrasoft Administrator, вызовет окно на которое показывает стрелка на рисунке
