Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Автор Тема: Формирование суточного отчета  (Прочитано 6704 раз)

Vitalii_Popovych

  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Формирование суточного отчета
« : 23 Октября 2019, 09:49:56 »
А подскажите пожалуйста как быть? Раз в сутки автоматически формирую отчет за прошедшие сутки (как в примере с 08:00 по 08:00). Но. Каждый новый отчет (который сохраняется в указанной папке) перезаписывает предыдущий, а нужно чтобы записывался новый отчет. Понимаю, что имя отчета одно и то же будет. Может где-то в настройках есть нужный пункт?
Код: (delphi)
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.
« Изменён: 23 Октября 2019, 10:16:52 от Simple-Scada »

Vladimir

  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Re: Формирование суточного отчета
« Ответ #1 : 23 Октября 2019, 15:44:36 »
Добавьте в имя отчета дату

Vitalii_Popovych

  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Re: Формирование суточного отчета
« Ответ #2 : 23 Октября 2019, 16:23:25 »
Добавьте в имя отчета дату
На словах я тоже к этому пришел, но как это правильно реализовать еще не придумал. просто вставить в название например {Данные_Начало} при редактировании самого отчета?

Vladimir

  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Re: Формирование суточного отчета
« Ответ #3 : 23 Октября 2019, 16:27:30 »
по синтаксисису точно не скажу, но что-то вроде имя отчета = 'имя отчета '+datetime(now). Посмотрите синтаксис команд, скады нет под рукой. Тоже формировал суточные и часовые отчеты.

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1407
    • Просмотр профиля
Re: Формирование суточного отчета
« Ответ #4 : 23 Октября 2019, 16:34:41 »
Здравствуйте.

Лучше всего для этого использовать функцию DateTimeToFileName. Она переводит текущую дату и время в имя файла. Использовать можно так:
Код: (delphi)
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.

VladD

  • Новичок
  • *
  • Сообщений: 18
    • Просмотр профиля
Re: Формирование суточного отчета
« Ответ #5 : 22 Декабря 2019, 20:05:46 »
Добрый день..если мы сохраняем отчет как
aReport.Save('my_client1', 'Мой отчет' + DateTimeToFileName(Now, ''), '', rfPDF), то какой синтаксис для вложения его в почтовое сообщение
aMail.AttachReport(aReport, 'Мой отчет' + DateTimeToFileName(Now, ''));
или другой метод? Спасибо.

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3215
    • Просмотр профиля
    • Simple-Scada
Re: Формирование суточного отчета
« Ответ #6 : 23 Декабря 2019, 10:34:48 »
Здравствуйте.
Для отправки отчета не важно сохраняете Вы его, или выполняете какие-то другие действия. Достаточно построить отчет через ReportBuild и прикрепить его к письму (можно даже не сохранять). Вот пример с комментариями:
Код: (delphi)
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 в утилите настроек.