А подскажите пожалуйста как быть? Раз в сутки автоматически формирую отчет за прошедшие сутки (как в примере с 08:00 по 08:00). Но. Каждый новый отчет (который сохраняется в указанной папке) перезаписывает предыдущий, а нужно чтобы записывался новый отчет. Понимаю, что имя отчета одно и то же будет. Может где-то в настройках есть нужный пункт?
var
aReport: TM_Report;
begin
{ если сейчас не 8 часов, то прерываем выполнение скрипта }
if HourOf(Now) <> 8 then Exit;
{ берём текущее время и дату и сбрасываем минуты, секунды и
миллисекунды в 0, т.к. нам важны только часы. Записываем
полученное значение в переменную vrTimeEnd }
vrTimeEnd.Value := RecodeTime(Now, HourOf(Now), 0, 0, 0);
{ от значения vrTimeEnd отнимаем 24 часа и записываем
полученное значение в vrTimeBegin }
vrTimeBegin.Value := IncHour(vrTimeEnd.AsDateTime, -24);
{ Формируем отчёт с именем "Отчет_1" и открываем его для просмотра
на всех клиентах с именем "Client_1" }
aReport := ReportBuild('Молодіжна_добовий');
aReport.Save('my_client1', 'Молодіжна_добовий', '', rfPDF); // сохраняем его в файл "Мой отчет.xlsx" на клиенте "Client_Name"
end.
Здравствуйте.
Лучше всего для этого использовать функцию DateTimeToFileName (https://simple-scada.com/help/script/datetimetofilename.html). Она переводит текущую дату и время в имя файла. Использовать можно так:
var
aReport: TM_Report;
begin
{ если сейчас не 8 часов, то прерываем выполнение скрипта }
if HourOf(Now) <> 8 then Exit;
{ берём текущее время и дату и сбрасываем минуты, секунды и
миллисекунды в 0, т.к. нам важны только часы. Записываем
полученное значение в переменную vrTimeEnd }
vrTimeEnd.Value := RecodeTime(Now, HourOf(Now), 0, 0, 0);
{ от значения vrTimeEnd отнимаем 24 часа и записываем
полученное значение в vrTimeBegin }
vrTimeBegin.Value := IncHour(vrTimeEnd.AsDateTime, -24);
{ Формируем отчёт с именем "Отчет_1" и открываем его для просмотра
на всех клиентах с именем "Client_1" }
aReport := ReportBuild('Молодіжна_добовий');
aReport.Save('my_client1', 'Молодіжна_добовий' + DateTimeToFileName(Now, ''), '', rfPDF); // сохраняем его в файл "Мой отчет.xlsx" на клиенте "Client_Name"
end.
Здравствуйте.
Для отправки отчета не важно сохраняете Вы его, или выполняете какие-то другие действия. Достаточно построить отчет через ReportBuild и прикрепить его к письму (можно даже не сохранять). Вот пример с комментариями:
var
aMail: TM_Mail;
aReport: TM_Report;
begin
// строим отчет с именем "Периодический"
aReport := ReportBuild('Периодический');
// сохраняем отчет в .pdf файл на клиентах с именем my_client1
aReport.Save('my_client1', 'Мой отчет' + DateTimeToFileName(Now, ''), '', rfPDF);
// отправляем e-mail
aMail := SendMail('Simple-Scada', 'Mail с отчетом', 'Отчет во вложении');
// прикрепляем к письму ранее построенный отчет aReport
aMail.AttachReport(aReport, 'Мой отчет' + DateTimeToFileName(Now, ''));
end.
, чтобы отправка e-mail работала нужно предварительно включить и настроить отправку e-mail в утилите настроек (https://simple-scada.com/help/manual/index.html?settings-simple-scada-server.html#send_email).