Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: Серега от 03 Ноября 2021, 11:12:36

Название: Несколько вопросов по отчетам
Отправлено: Серега от 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.
Жду вопросов и предложений!





Название: Re: Несколько вопросов по отчетам
Отправлено: Timothy Clement от 03 Ноября 2021, 13:32:20
Добрый день! А вы не рассматривали вариант сделать этот отчёт используя в качестве источника не MySQL, а стандартный, через Источники - Добавить. Так как отчёт нужен динамический, то и переменные передавать динамические, хранящие ID с соответствующими выборками минимума и максимума, переменные начала и конца периода. Просто для работы с таблицей архивов скады мне кажется данный способ больше всего подходит, для работы со своими таблицами уже да, через запросы к MySQL.
upd. А что касательно вопроса смещения, пишите в ячейках без пробелов и переносов строки, это же текст, каждый пробел и перевод строки между функциями так и выведет в ячейках.
Название: Re: Несколько вопросов по отчетам
Отправлено: Серега от 04 Ноября 2021, 12:24:33
Добрый день!
В этой теме(https://simple-scada.com/forum/index.php?topic=967.msg8202#msg8202) начало.
Все это началось из-за того, что не смог получить стандартным источником нужные значения.
Если подскажите как буду очень признателен.
Настройка свойств соответсвующих ячеек помогает сформировать более красиво отчет.
Но как сгрупировать переменные с ID старых и новых (например старые 3004 и 4563 и новые 6001 и 6002) в Group By, опять мне все равно как расположены, но надо красиво
Жду вопросов и предложений
Название: Re: Несколько вопросов по отчетам
Отправлено: Timothy Clement от 05 Ноября 2021, 11:27:32
Теперь стало понятнее после прочтения прошлой темы. Сам столкнулся с такими же проблемами при формировании отчётов с набегающими данными в связке устройство-ОРС-скада. При отключении любого в цепочке в начале или конце интервала появлялись кривые отчёты. Но моя проблема решилась тем, что само устройство тоже вело архивы, и с него можно было прочитать и записать в тренды недостающие значения. Могу вам посоветовать настроить в архивации переменных фильтр архивации, например Фильтр отклонений. Значение нарастающее, архивируется наверное у вас по изменению. Поставить там например 100, если  у вас значение 4000, а потом изменилось до 0 или в минус ушло, не писать в архив, только 4001..4020 и т.д. Это должно помочь убрать мусор из архива, который при формировании отчёта может появится в начале или конце интервала. Тогда можно будет вернуться к стандартному источнику данных, даже сделали уже месячный интервал и выборку с типом "Разница", должно всё красиво нарисовать.