<< Click to Display Table of Contents >> Navigation: Проект > Документы объектов > Генератор отчетов > Примеры построения отчетов > Различные способы обработки данных > Пример первый. Обработка атрибута времени. > Постановка задачи |
Необходимо построить периодический отчет, то есть вывести строки с определенным интервалом. В отчете нужно отобразить максимальное и минимальное значение на интервале, а также время наступления максимума и минимума на этом интервале. В конце отчета нужно подвести итог, где также отобразить максимум и минимум, и время их наступления. Также необходимо цветом выделить ячейки с максимальным и минимальным значением.
В объект добавлено значение "Значение параметра" и две команды "Начало" и "Конец". У значения при помощи имитации архив был наполнен данными, а у команд "Начало" и "Конец" установлены значения до опроса – ими мы будем ограничивать интервал выборки из архива.
Создадим отчет у объекта "Максимум и минимум". Добавим новый источник данных "Архив MasterSCADA" и назовем его "Данные".
Соединим команды "Начало" и "Конец" с одноименными параметрами источника. У параметра "Интервал" зададим значение – 10 секунд.
В свойствах источника данных "Данные" установим способ формирования "Периодический"
Затем добавим в источник значение "Значение параметра". Нам необходимо получить максимум, время максимума, минимум и время минимума данной переменной, поэтому необходимо вытащить ее в источник из дерева объектов четыре раза – то есть создать 4 колонки в источнике данных.
Переименуем колонки – вызовем контекстное меню и выберем пункт Изменить.
Зададим имя колонке "Значение_максимум".
Аналогично переименуем остальные колонки – зададим им имена "Время_максимум", "Значение_минимум" и "Время_минимум".
Теперь установим способ обработки у каждого параметра. Выделим колонку "Значение_максимум" и перейдем на закладку Свойства.
Атрибут данных оставим Значение - в этом случае данная колонка будет получать значения из архива переменной MasterSCADA.
Вернемся на закладку Словарь и выделим колонку "Время_максимум" и перейдем на закладку Свойства. Сначала установим другой атрибут – установим "Время".
Теперь установим обработку "Максимум".
Теперь данная колонка будет содержать метку времени максимального значения на данном интервале, что нам и требуется. Если на интервале времени, будет несколько одинаковых минимальных значений с разными метками времени, то колонка вернет самую первую из них.
Аналогичным образом настроим колонки "Значение_минимум" и "Время_минимум".
Вытащим источник данных "Данные" на рабочую область страницы. В окне Данные отметим все колонки, включим вставку бэндов Заголовок данных и Итог данных, а также зададим нужное чередование столбцов
Откорректируем бэнды – сделаем выравнивание по центру, включим границу, у ячеек для вывода числовых значений зададим формат числа.
Запустим построение отчета
Отчет построился корректно. Для каждого интервала времени был вычислен максимум и минимум и их метки времени.
Теперь подсчитаем итог – найдем самое маленькое и самое больше значение в отчете и также определим их метки времени. Вернемся в режим разработки.
Сначала настроим вычисление максимума значения – вызовем двойным щелчком мыши редактор текста поля итога "Значение максимума", и перейдем на закладку Итог. Установим функцию – Max, Данные – наш бэнд данных "DataДанные", Колонка – "Данные.Значение_максимум". Теперь функция вычислит максимальное значение колонки на данном бэнде и это значение будет записано в текстовое поле.
Теперь необходимо определить метку времени, когда было наибольшее значение. Однако вычислить метку времени таким же способом, как мы только что вычислили значение, не получится – функция Max вернет самое большое значение из столбца "Время_максимума", то есть значение из поля последней строки – "21.06.2012 13:57:14", а не правильное "21.06.2012 13:57:00".
Решить данную проблему можно двумя способами, подробно рассмотрим каждый.