Пожалуйста, включите JavaScript для просмотра этого сайта.

Отчеты Simple-Scada

Важно! Источник данных "Сообщения" работает только с системой архивации v2 в версиях Simple-Scada 2.6.4.0 и выше. Начиная с версии Simple-Scada 2.6.5.0 доступна возможность формирования отчета по сообщениям из меню просмотра сообщений.

Задача: вывести в отчет сообщения из заданной группы (в данном примере выбрана группа "Все сообщения").

Сначала создадим интерфейс проекта. В меню редактирования переменных создадим внутренние переменные типа DateTime с именами "vrTimeBegin" и "vrTimeEnd" - они будут определять период времени, за который нужно сформировать отчет. Добавим на мнемосхему два календаря для ввода периода времени и свяжем их с переменными "vrTimeBegin" и "vrTimeEnd". Добавим кнопку "Сформировать" для формирования отчёта. Получим такой интерфейс:

 

Сохраним проект и перейдём к созданию шаблона отчёта. Запустим редактор отчётов (Reports.exe), выберем наш проект и создадим новый отчёт с именем "Все сообщения". Выделим страницу отчета и на вкладке "Свойства" изменим свойство "Ориентация" на "Альбомная":

 

Затем добавим в отчет новый источник данных через меню "Источники" - "Новый источник данных":

 

Назовем источник "Сообщения", тип источника выберем "сообщения". Тип сообщений укажем "все сообщения" (можно выбрать другой тип, чтобы вывести только аварии или только предупреждения). Выберем нужную группу сообщений, например "Все сообщения" и нажмём кнопку "Создать":

 

Важно! Если в источнике выбрать группу "Неподтверждённые", или "Активные", то переменные начала и конца не будут учитываться! Из этих групп всегда берутся все сообщения на момент построения отчета.

Перейдем к Словарю отчета. Теперь в нем появился наш источник "Сообщения" с колонками, а также две переменные "Сообщения_Начало" и "Сообщения_Конец". Simple-Scada будет передавать в этот источник только сообщения, которые лежат в интервале времени от переменной начала ("Сообщения_Начало") до переменной конца ("Сообщения_Конец"). Все остальные данные, которые лежат вне этого периода - не попадут в выборку.

 

Далее, мы должны связать переменные из проекта "vrTimeBegin" и "vrTimeEnd" с переменными отчёта "Сообщения_Начало" и "Сообщения_Конец". Делаем клик правой кнопкой мыши по переменной проекта и выбираем пункт "Связать с переменной":

 

В открывшемся окне выбираем переменную отчёта, с которой нужно установить связь. Таким образом связываем переменную "vrTimeBegin" с "Сообщения_Начало", а "vrTimeEnd" c "Сообщения_Конец". Теперь перед построением отчёта в переменные "Сообщения_Начало" и "Сообщения_Конец" будут подставлены значения переменных проекта "vrTimeBegin" и "vrTimeEnd" и источник "Сообщения" будет работать с заданным периодом времени.

 

Перетянем источник данных из словаря в зону отчёта. В левой части открывшегося окна снимем флажки с колонок "ID группы", "ID сообщения" и "Объект", т.к. значения указанных колонок не требуются в данном отчете. В правой части окна настроим следующий порядок колонок: Тип, Текст сообщения, Время, Завершено, Длительность, Подтверждено, Подтвердил. Также, включим флажок "Заголовок данных".

 

На странице отчета отобразились бэнды "Заголовок данных" (верхний) и "Данные" (нижний). Настроим ширину колонок следующим образом: Тип = 0.8, Текст сообщения = 13, Время = 3, Завершено = 2.6, Длительность = 2, Подтверждено = 2.6, Подтвердил = 3.6. У колонок бэнда "Заголовок данных" выставим размер шрифта = 9. У колонок бэнда "Данные" размер шрифта установим = 8, кроме колонки "Текст сообщения" - ей зададим размер шрифта = 9. У всех колонок, кроме колонки "Текст сообщения" включим выравнивание по центру. Теперь бэнды на странице отчета выглядят так:

 

Значения в колонках "Завершено", "Длительность" и "Подтверждено" могут быть нулевыми (null). Например, когда сообщение всё ещё активно и не было подтверждено. Поэтому для данных колонок нужно настроить замену нулевых значений. В бэнде данных дважды кликаем поля соответствующие указанным колонкам и в открывшемся окне выбираем "Показывать вместо нулевых значений" = "-":

 

Теперь сделаем так, чтобы в колонке "Тип" отображался цвет соответствующий типу сообщения. Для этого выделяем в бэнде данных поле с типом и нажимаем кнопку "Условия" на верхней панели. В открывшемся окне через кнопку "Добавить условие" - "Условное выделение" добавляем четыре условия. Первое: для значения 0 (аварийное сообщение) назначаем красный цвет шрифта и фона, как показано ниже:

 

Аналогично добавляем ещё три условия. Для значения 1 (предупреждающее сообщение) назначаем желтый цвет, для значения 2 (обычное сообщение) светло-серый цвет, для значения 4 (сообщение об авторизации) светло-фиолетовый цвет. Закрываем окно "Условия" нажав кнопку "ОК".

Чтобы высота строк в разных колонках всегда была одинаковой, выделяем все поля в бэнде данных, кликаем их правой кнопкой мыши и в раскрывшемся списке снимаем флажок "Может расти":

 

Теперь настроим формат в колонках со значениями даты/времени. Наиболее подробный формат (ДД.ММ.ГГГГ ЧЧ:ММ:СС) задаём колонке "Время". Кликаем поле времени в бэнде данных правой кнопкой мыши и нажимаем на иконку форматирования:

 

Откроется окно с настройками формата. Выбираем раздел "Дата" и подробный формат даты/времени:

 

Аналогичные действия проделаем для колонок "Завершено" и "Подтверждено", но формат установим короткий. Для этого в окне настроек формата выбираем раздел "По выбору" и в поле "Маска" вводим требуемый формат: dd.MM HH:mm

 

У колонки "Длительность" не будем менять формат. Чтобы в данной колонке могла отображаться длительность более 24 часов, дважды кликаем поле "Длительность" в бэнде данных и в открывшемся окне на вкладке "Выражение" вводим следующий код:

{
  IsNull(Сообщения, "Длительность") ? "-" : 
    ((int)Сообщения.Длительность.TotalHours).ToString() + 
    ":" + Сообщения.Длительность.ToString("mm\:ss")
}

 

Наконец, разместим на странице отчета бэнд "Заголовок отчета". Добавим в него компонент "Текст" с таким выражением:

Сообщения из группы "Все сообщения" за период от {Сообщения_Начало} до {Сообщения_Конец}

В результате шаблон отчета должен выглядеть так:

 

Отчет готов. Чтобы увидеть данные на странице, нужно сначала получить их от сервера. Запустим сервер Simple-Scada, активируем проект и подождём пока в архиве (в БД) накопятся сообщения. После этого подключимся к проекту клиентом Simple-Scada и выберем в календарях прошедший интервал времени, а в Редакторе отчёта нажмем зеленую кнопку обновления данных:

 

Для лучшего понимания опишем по шагам, что происходит в этот момент:

в переменные отчёта "Сообщения_Начало" и "Сообщения_Конец" записываются значения переменных проекта "vrTimeBegin" и "vrTimeEnd", так как ранее мы их связали. То есть, переменные "Сообщения_Начало" и "Сообщения_Конец" становятся равны тому, что указано в двух Календарях нашего проекта;

источник "Сообщения" получает сообщения из группы "Все сообщения" за период от "Сообщения_Начало" до "Сообщения_Конец".

 

Теперь источник заполнен данными (если в архиве нет сообщений за указанный период, то источник останется пустым) и можно перейти к просмотру отчета:

 

Сохраним отчёт и вернёмся к Редактору проекта. Напишем скрипт на событие "OnClick" для кнопки "Сформировать":

Важно! В некоторых случаях может потребоваться из скрипта задать параметры источника данных "Сообщения" (например, если нужно по каким-либо условиям изменять группу сообщений в источнике). Для этого можно использовать процедуру SetSourceMessageParams.

var
  aReport: TM_Report;
begin
  aReport := ReportBuild('Все сообщения');  // построить отчет
  aReport.View(GetClientName);              // открыть его для просмотра
end.

 

Сохраним проект и перезапустим его на сервере, чтобы изменения вступили в силу. Подключимся к проекту через клиент Simple-Scada. Введем время начала и время конца в календари и нажмем кнопку "Сформировать". Отчёт открылся для просмотра:

 

В окне просмотра мы нажали кнопку "Сохранить" -> "Adobe PDF файл" и сохранили полученный отчёт в формате ".pdf". Просмотреть его можно по этой ссылке. При необходимости, можно формировать отчёт и сохранять его на клиентский или серверный ПК в нужном формате - подробнее см. по ссылке.