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

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

Автор Тема: Формирование отчёта (вычисляемая колонка, логические функции)  (Прочитано 2099 раз)

Nikso

  • Новичок
  • *
  • Сообщений: 44
    • Просмотр профиля
Здравствуйте!

Имеется архивируемая переменная в которой хранится показание счётчика с нарастающим итогом.

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

Возникают ситуации, когда начальное значение равно 0 и в этом случае надо в отчёт выводить н/д, либо код ошибки (например 8888), так как в результате расчёта получается не достоверное значение.

Пробовал использовать конструкцию IFF (begin=0. 8888.end-begin) где 8888 - обозначение ошибки, но не получилось.
Вопрос.
1. Какой язык программирования используется в редакторе отчётов. Хотелось бы получить по нему более подробную информацию.
2. Возможно имеется стандартное решение данной задачи.


Simple-Scada

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

Цитировать
Какой язык программирования используется в редакторе отчётов.
C#. Пример кода:
Код: (c#)
// если (a = 0) и (b = 1) то
if ((a == 0) && (b == 0)) {
  // здесь делаем какие-то действия
}

Цитировать
Возможно имеется стандартное решение данной задачи.
"begin" и "end" это колонки в источнике данных? Третья колонка это разность "end-begin", верно? Или разность нужно выводить вне бэнда данных? Можете выслать проект из папки "Projects\" на support@simple-scada.com, мы подробно опишем какие условия нужно добавить.
« Изменён: 17 Сентября 2018, 15:53:19 от Simple-Scada »

Nikso

  • Новичок
  • *
  • Сообщений: 44
    • Просмотр профиля
В редактор отчётов имеется две колонки

Колонки К1_Energy_tot(min), К1_Energy_tot(max), которые берутся из БД
В вычисляемой колонке К1 вычисляется К1_Energy_tot(max) - К1_Energy_tot(min)

Требуется примерно так: if К1_Energy_tot(min)=0 then “NA” else К1_Energy_tot(max)- К1_Energy_tot(min)
Проект выслал на почту.

Кроме этого. После того как переменная добавлена в отчёт с выбранным типом обработки, можно ли у этой переменной изменить тип обработки или необходимо эту переменную удалять и добавлять новую.
« Изменён: 18 Сентября 2018, 14:33:14 от Nikso »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3193
    • Просмотр профиля
    • Simple-Scada
Спасибо за пример отчета и описание. Откройте отчет в редакторе отчетов. У Вас на странице отчета расположена таблица "TableSibyt" с ячейками в которых выводятся значения {Sibyt.K1}, {Sibyt.K2} и т.д.. Рассмотрим пример с ячейкой {Sibyt.K1}. Выделите её. Нажмите кнопку "Условия" на верхней панели и добавьте условие "Условное выделение" как показано на скрине во вложении. Теперь в соответствии с условием, когда "К1_Energy_tot(min)" равно 0, в ячейке отобразится текст "NA".Для других колонок нужно проделать аналогичные действия.

Цитировать
После того как переменная добавлена в отчёт с выбранным типом обработки, можно ли у этой переменной изменить тип обработки или необходимо эту переменную удалять и добавлять новую.
Да, можно. В верхнем меню выберите пункт "ДЕЙСТВИЯ" - "Редактировать ссылки". Откроется окно в котором будут перечислены все связи с переменными проекта. Кликните дважды любую связь и измените тип обработки.
« Изменён: 18 Сентября 2018, 15:22:18 от Simple-Scada »