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

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

Автор Тема: Формирование отчета в скрипте "По изменению переменной"  (Прочитано 2510 раз)

BeRnesty

  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Добрый день!
Задача: формировать отчет по окончанию процесса. Конец процесса устанавливается в переменной.
Столкнулся с проблемой, что в скрипте "По изменению переменной" отчет формируется, но после строки с ReportBuild ничего не выполняется.
Делаю тот же скрипт "По клику" - все работает.

Скрипт "по изменению переменной":
Код: (delphi)
begin
IF Variable = Experiment then
  if PrevAsBool = True then
RepBuild();
end.
(Да, мне нужно формировать когда переменная старнет False)

Скрипт "По клику":
Код: (delphi)
begin
  RepBuild();
end.

Сам скрипт отчета:
Код: (delphi)
var
aReport: TM_Report;
  begin
  vrTimeEnd.Value:= Now;
  ReportPath.Value:= ('C:\ScadaReports\Plasma_Movement\' + DateToStr(vrTimeEnd.Value) + '\');
  ForceDirectories(ReportPath.Value);

  aReport := ReportBuild('Plasma_Report');
  aReport.View(GetClientName);
  aReport.Save(GetClientName, 'Plasma_Report' + DateTimeToFileName(Now, ''), '', rfExcel2007);
  end;
end.
(VrTimeBegin:= Now; задается при старте процесса)
« Изменён: 25 Июня 2024, 17:51:37 от Simple-Scada »

Simple Scada

  • Глобальный модератор
  • *****
  • Сообщений: 285
    • Просмотр профиля
    • Simple-Scada
Здравствуйте.

В скрипте используется функция "GetClientName" см. описание данной функции – она не будет работать в скрипте с типом события "Изменились переменные", т.к. данное событие вызывается сервером, а не клиентом. Вместо GetClientName можно указать имя клиента, на котором требуется открыть/сохранить отчёт (имя клиента задаётся через настройки - "Имя этого клиента") или константу SS_SERVER_NAME для сохранения отчёта на серверном ПК. См. примеры 5 и 6 по ссылке