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

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

Автор Тема: Несколько вопросов по отчетам  (Прочитано 1188 раз)

Серега

  • Постоялец
  • ***
  • Сообщений: 209
    • Просмотр профиля
Несколько вопросов по отчетам
« : 03 Ноября 2021, 11:12:36 »
Добрый день!
Был создан отчет. Основная его функция сбор данных, обработка и отображение результата.
Так как некоторые объекты могут изыматься из системы было принято решение сделать типа динамического отчета.
Кодом ниже мы из источника типа MySQL выбираем нужные данные, фильтруем и получаем определенный результат:
Код
SELECT ID, MIN(Value) AS min_v, MAX(Value) AS max_v FROM database.trends_data
WHERE ID IN (3621, 3622)
AND (timestamp >= @PeriodStart)
AND (timestamp <= @PeriodFinish)
AND Value <> 0
        AND Quality = 1
GROUP BY ID;
Далее для отображения полученного результата (в ячейке источника данных) вставляем такой код:
Код
{Switch(database_trends_data.ID == 3621,"210_001.Пробег(км)",
database_trends_data.ID == 3622,"210_001.Время движения(ч)")}
Добавляем туда все, что хотим, помня о том, что команда switch может принять 21 параметр(могу ошибаться). При этом мы можем вставить несколько таких команд, соблюдая синтаксис.
В свойствах ячейки выставляем выравнивания по центру, формат стандарт - текст.
И на выходе получаем изображение из рисунка №1.
Видно, что все что входит во второй switch в колонке 'ID' смещено вниз на одну строку как бы.
Вопрос №1. Почему?
Допускаю, что использовать двух switch  не правильно.
Вопрос №2. Можете указать как правильно?
Потребовалось изменить отчет добавлением по каждому объекту третьего параметра.
Находим в редакторе ID новых переменных. Проверяем в БД, что есть архивные значения.
Вставляем соответствующие ID в запрос к бд из репорта. Вставляем и группируем в оформлении, типа так:
Код
{Switch(database_trends_data.ID == 3621,"210_001.Пробег(км)",
database_trends_data.ID == 3622,"210_001.Время движения(ч)",
        database_trends_data.ID == 6991,"210_001.Время работы(ч)")}
И ожидаем увидеть по порядку 3 параметра к каждому объекту, но все в разнобой. Новые переменные вообще в самом конце.
Вопрос №3. Как можно навести порядок?
Возможно есть более простой и адекватный способ получения отчета. Тогда отсылка к вопросу 2.
Жду вопросов и предложений!






Timothy Clement

  • Постоялец
  • ***
  • Сообщений: 149
  • ОАО Борисовский завод "Металлист"
    • Просмотр профиля
    • Полымя
Re: Несколько вопросов по отчетам
« Ответ #1 : 03 Ноября 2021, 13:32:20 »
Добрый день! А вы не рассматривали вариант сделать этот отчёт используя в качестве источника не MySQL, а стандартный, через Источники - Добавить. Так как отчёт нужен динамический, то и переменные передавать динамические, хранящие ID с соответствующими выборками минимума и максимума, переменные начала и конца периода. Просто для работы с таблицей архивов скады мне кажется данный способ больше всего подходит, для работы со своими таблицами уже да, через запросы к MySQL.
upd. А что касательно вопроса смещения, пишите в ячейках без пробелов и переносов строки, это же текст, каждый пробел и перевод строки между функциями так и выведет в ячейках.
« Изменён: 03 Ноября 2021, 13:50:15 от Timothy Clement »

Серега

  • Постоялец
  • ***
  • Сообщений: 209
    • Просмотр профиля
Re: Несколько вопросов по отчетам
« Ответ #2 : 04 Ноября 2021, 12:24:33 »
Добрый день!
В этой теме(https://simple-scada.com/forum/index.php?topic=967.msg8202#msg8202) начало.
Все это началось из-за того, что не смог получить стандартным источником нужные значения.
Если подскажите как буду очень признателен.
Настройка свойств соответсвующих ячеек помогает сформировать более красиво отчет.
Но как сгрупировать переменные с ID старых и новых (например старые 3004 и 4563 и новые 6001 и 6002) в Group By, опять мне все равно как расположены, но надо красиво
Жду вопросов и предложений

Timothy Clement

  • Постоялец
  • ***
  • Сообщений: 149
  • ОАО Борисовский завод "Металлист"
    • Просмотр профиля
    • Полымя
Re: Несколько вопросов по отчетам
« Ответ #3 : 05 Ноября 2021, 11:27:32 »
Теперь стало понятнее после прочтения прошлой темы. Сам столкнулся с такими же проблемами при формировании отчётов с набегающими данными в связке устройство-ОРС-скада. При отключении любого в цепочке в начале или конце интервала появлялись кривые отчёты. Но моя проблема решилась тем, что само устройство тоже вело архивы, и с него можно было прочитать и записать в тренды недостающие значения. Могу вам посоветовать настроить в архивации переменных фильтр архивации, например Фильтр отклонений. Значение нарастающее, архивируется наверное у вас по изменению. Поставить там например 100, если  у вас значение 4000, а потом изменилось до 0 или в минус ушло, не писать в архив, только 4001..4020 и т.д. Это должно помочь убрать мусор из архива, который при формировании отчёта может появится в начале или конце интервала. Тогда можно будет вернуться к стандартному источнику данных, даже сделали уже месячный интервал и выборку с типом "Разница", должно всё красиво нарисовать.