Отчет Fast Report с фильтром по диапазону дат + возможность запуска по расписанию с рассылкой

Добрый день!

Подскажите пожалуйста, как решить проблему:

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

Что меня смущает и поправьте пожалуйста, если я не прав:
1) Я не могу использовать для построения отчета датасет, который базируется на запросе с параметрами. Т.к. как передать из FR параметры в запрос я не нашел. Какой выход - писать кастомный запрос в самом FR?
2) Допустим, я создам датасет, который будет выбирать все данные независимо от дат. Но когда я жму кнопку "Установить фильтры" то я не могу задать там фильтр >= и =. Вопрос - эти фильтры работают только для текстовых полей?
3) Насколько я понимаю, функционал запуска по расписанию придется решать как то так:
создавать форму, на которой ничего не будет, в обработчике OnPrepare например писать скрипт который сформирует отчет и потом разошлет пользователям а затем закроет форму. Потом в Scheduled Tasks создавать задачу, которая будет по расписанию запускать террасофт с параметром - кодом окна.

Буду благодарен за любые комментарии/решения/предложения и тем более примеры :)
Спасибо.

Нравится

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

Реализовать отчет FastReport, в котором записи фильтруются по диапазону дат Вы можете двумя способами: создать собственное окно фильтрации, в котором пользователь будет выбирать период фильтрации; использовать встроенное окно фильтрации FastReport.
В качестве примера для создания отчета с собственным окном фильтрации можно использовать отчеты "Анализ конкурентов" (fr_OpportunitiesCompetitors), "Отчет по продажам" (fr_ReportOpportunitiesSalesCycleAnalisys) с окном фильтрации wnd_ServiceDeskDateFilter. Также во вложении прилагаю для ознакомления файл, в котором описан принцип создания окна фильтрации для отчета.

"komgbu" написал:2) Допустим, я создам датасет, который будет выбирать все данные независимо от дат. Но когда я жму кнопку "Установить фильтры" то я не могу задать там фильтр >= и <=. Вопрос - эти фильтры работают только для текстовых полей?

Встроенное окно фильтрации FastReport позволяет устанавливать фильтры >= и <= для полей с типом "Дата/время", "Целое число", "Дробное число":
http://www.community.terrasoft.ru/system/files/1_12.png

Здравствуйте,
По поводу 1) и 2) вопроса, предлагаю вам почитать в теме http://www.community.terrasoft.ru/blogs/7286
если, что либо не понятно, опишу более подробно
3) Как вариант можно создать и так,
1
На сколько я понял, под Scheduled Tasks вы имеете ввиду Task Scheduler Windows'а

Наталия, Алексей, спасибо!

Да, под Scheduled Tasks я имел ввиду планировщик 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) Права доступа к отчету вы можете настроить в детали [Доступ]
1
где указать необходимые вам группы пользователей
2) Поля на которые нет доступа у пользователя отображается не будут

"komgbu" написал:когда я жму кнопку "Установить фильтры"

Подскажите, пожалуйста, где эта кнопка. Как подключить встроенное окно фильтрации FastReport?

Здравствуйте,
Нажатие кнопки (выделено красным) в Terrasoft Administrator, вызовет окно на которое показывает стрелка на рисунке
1

Спасибо! Выручили.

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