Именно с FR — не знаю. В общем случае делается специальная карточка, которая при открытии отправляет по почте что надо кому надо и сразу закрывается. А в планировщик Windows добавляется задание вроде:
[code]
c:\terrasoft\tsclient.exe /wnd=wnd_MyReportSender -cfg=MyConfiguration -usr=Supervisor -pwd=qwerty
[/code]
Если задание запущено, то по таймеру открывается это окно и отрабатывает логика.
Вы напишете её сами. В обработчике OnPrepare окна будет примерно:
[javascript]
function wnd_MyReportSenderOnPrepare(Window) {
System.BeginProcessing();
SendReportByEmail();//ToDo
System.EndProcessing();
Self.Close();
}
[/javascript]
Наваял функцию для автоматического экспорта отчета
[javascript]
function btnFormAutoOnClick(Control) {
//по кнопке сформировать файл формата PDF
var ReportCode = 'fr_Reestr_Work';
var FilteredDatasetCode = 'ds_Reestr_Work';
var Report = Services.GetNewItemByUSI(ReportCode);
var ReportPreviewer = Services.GetNewItemByUSI('wnd_BaseFastReportPreview');
var ReportPreviewerComponent = ReportPreviewer.Attributes('ReportPreviewer');
var ReportDataset = Services.GetNewItemByUSI(FilteredDatasetCode);
SetAttribute(ReportPreviewer, 'Report', Report);
// формирование дат для примера
var CurrentData = new Date();
var FullYear = CurrentData.getFullYear();
var Month = CurrentData.getMonth();
Month = Month -1;
if (Month<0) {Month=11;FullYear=FullYear-1;}
var StartDate = new Date(FullYear, Month, 1);
var FinishDate = new Date(FullYear, Month , 2);
StartDate = StartDate.getVarDate();
FinishDate = FinishDate.getVarDate();
System.BeginProcessing(); //задержка для стабильного формирования PDF файла
System.Sleep(100);
System.EndProcessing();
// собственно сам экспорт
var TempFileName = System.CreateObject('TSObjectLibrary.Value');
var FileNames = System.CreateObject('TSObjectLibrary.StringsList');
TempFileName.Value = "C:\\!!\\Отчет по количественному выполнению рейсов.pdf";
try {
frpMain.Export( 2, TempFileName, false);
} catch (e){
}
}
[/javascript]
Но...
Если устанавливаю фильтр
//ApplyDatasetFilter(ReportDataset, 'StartDate', StartDate, true);
//ApplyDatasetFilter(ReportDataset, 'FinishDate', FinishDate, true);
то работает.
А возможно установить для ds_Reestr_Work ранее сохраненный фильтр в ds_SaveFiltersReports (формат фильтра XML)?
"Прищепа Владимир" написал:А возможно установить для ds_Reestr_Work ранее сохраненный фильтр в ds_SaveFiltersReports (формат фильтра XML)?
Владимир, возможно. Как пример реализации обратите внимание на function GetSelectGroupResult(Sender, Message) сервиса wnd_AccountInMassMailGridAreaScript. а именно блок кода:
Добрый день, Наталия. Сервис ds_SaveFiltersReports никакого отношения к отчету не имеет. Из него я получаю фильтр в форме XML. И куда его (текст XML) занести в FiltersBuilder мне не понятно.
Добрый день!
Владимир, фильтр, хранящийся в сервисе ds_SaveFiltersReports, должен иметь отношение к датасету отчета, чтобы он мог к нему применяться.
Нет возможности применить любой XML фильтр к любому датасету (например, нельзя применить фильтр, настроенный в разделе Задачи к разделу Контрагенты, так как наблюдается разная структура таблиц, select query).
Т.е. в сервисе, хранящем фильтры, должны содержаться фильтры преднастроенные для датасета отчета.
XML фильтр сам по себе без FilterBuilder можно использовать только для просмотра, а чтобы применить фильтр нужно использовать построитель фильтров.
"Бондарь Наталия" написал:
XML фильтра сам по себе без FilterBuilder можно использовать только для просмотра, а чтобы применить фильтр нужно использовать построитель фильтров.
И где можно взять этот мифический построитель фильтров?
А также описание его работы с примерами.
"Прищепа Владимир" написал:А также описание его работы с примерами.
С методами и свойствами Вы можете ознакомиться в SDK, примеры работы можно посмотреть в конфигурации.
Например, скрипт wnd_AccountInMassMailGridAreaScript