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

Отчеты Simple-Scada

История: Примеры отчетов

Отчет по изменению

Пред. Вверх След. Еще

Важно! Подробнее о принципе работы отчёта "по изменению" можно прочесть в этом разделе.

Задача: вывести в отчёт таблицу со всеми архивными значениями трёх переменных за указанный пользователем интервал времени. "Периодический" отчёт, который мы рассмотрели в предыдущих примерах не подойдёт, так как он берет заданный период времени, делит его на равные интервалы и для каждого интервала выводит результат обработки заданный пользователем (подробное описание здесь). А нам требуется вывести каждое архивное значение, без разбиения на интервалы и без обработки.

Для примера, создадим проект со следующими переменными:

Переменная

Тип данных

Описание

vrRepLevel

Single

Уровень в резервуаре

vrRepTemperature

Single

Температура в резервуаре

vrRepPressure

Single

Давление в резервуаре

vrRepFrom

DateTime

Начало периода времени, за который нужно сформировать отчёт.

vrRepTo

DateTime

Конец периода времени, за который нужно сформировать отчёт.

 

На странице расположим два календаря (свяжем их с переменными "vrRepFrom" и "vrRepTo") и кнопку "Сформировать" для формирования отчёта:

 

Сохраним проект и перейдём к созданию шаблона отчёта. Запустим редактор отчётов (Reports.exe), выберем наш проект и создадим новый отчёт с именем "По изменению". Затем добавим в отчет новый источник данных через меню "Источники" - "Новый источник данных":

 

В открывшемся окне укажем имя источника - назовем его "Данные". Имена переменных начала и конца автоматически изменятся на "Данные_Начало", "Данные_Конец". Слой оставим "основной", а "Тип источника" нужно изменить. Как было описано выше, тип "периодический" нам не подходит и нужно выбрать тип "по-изменению":

 

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

 

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

 

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

 

Добавим в источник новые колонки в соответствии с задачей: Уровень, Температуру и Давление. Для начала добавим переменную давления ("vrRepPressure").  Делаем клик правой кнопкой мыши по переменной и выбираем пункт "Добавить в источник". Обратите внимание, иконка у переменных давления, температуры и уровня отмечена зелёной точкой - значит переменные архивируются. Если добавить в источник переменную, которая не архивируется, то выводить в источник будет нечего. Учитывайте это.

 

Открылось окно добавления новой колонки в источник данных. В списке выбираем наш источник "Данные", называем новую колонку "Давление". Остальные параметры оставляем без изменений.

 

Теперь проделываем те же действия для переменной "vrRepLevel", но с именем "Уровень", а также добавляем переменную "vrRepTemperature" с именем "Температура". После описанных действий, в словаре должна получиться такая структура:

 

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

 

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

 

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

 

Данные отобразились, но в колонке "Давление" после десятичной запятой выводится слишком много знаков. Изменим формат чисел оставив два знака дробной части. Делаем клик правой кнопкой мыши на поле и нажимаем на иконку форматирования:

 

 

Переходим к просмотру отчета. Теперь данные выводятся правильно:

 

Добавим в отчёт заголовок. Для этого воспользуемся бэндом "Заголовок отчёта" (данный бэнд выводится один раз в начале отчёта, перед другими бэндами).

 

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

 

Изменим размер текста заголовка и его выравнивание при помощи соответствующих кнопок панели форматирования. Далее, настроим выравнивание текста в ячейках бэнда "Данные", а для ячеек в шапке бэнда выставим светло-серый фон:

 

Шаблон отчёта готов. При необходимости, можно настроить условное выделение ячеек, как мы делали это в предыдущем примере. Сохраним отчёт через "Меню - Сохранить" и вернёмся к Редактору проекта. Напишем скрипт на событие "OnClick" для кнопки "Сформировать":

var
  aReport: TM_Report;
begin
  aReport := ReportBuild('По изменению');
  aReport.View(GetClientName);
end.

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