Как рассчитать и вывести в отчете время простоя прибора за определенный период?
Данные есть только W_Start, W_End и W_Delta - это все времена наработки прибора.
Для этого нужны интеграторы по времени неработы (суммарные или конкретно по каждой НС), но не во всех приборах такие данные сохраняются в архиве, а рассчитать в ЛЭРС их будет не совсем точно, надо знать дату ввода прибора в эксплуатацию и просуммировать все значения от и до сегодня. Присоединяюсь к вопросу, а вдруг все же есть какая хитрость или можно попросить разработчиков ее внести в ЛЭРС :nez-nayu:
Пример отчета во вложении.
“Расчетное время работы” - рассчитывается из интервала времени записей интеграторов, следующим выражением:
(DateDiffMinute([DataDate_Start - дата и время показаний интеграторов на начало отчетного периода, DataDate_End - дата и время показаний интеграторов на конец отчетного периода] ))/60
“Нормальное время работы” - W_Delta - разница показаний времени наработки на конец и начало отчетного периода.
“Время остановки счета” - “Расчетное время работы” минус “Нормальное время работы”
otchet.lersreport (80.3 KB)
А интеграторы за период по времени неработы не сделать так?
Увы, нет.
Интеграторы по времени “не работы” - это отдельная тема, эти данные даже не сохраняются в БД ЛЭРС при чтении архивов, так же не каждый прибор учета сохраняет в память интеграторы по времени остановки счета (работы).
В данный момент ЛЭРС сохраняет в таблицу интеграторов: Массу, Объём, Тепло и Время наработки.
Обсудим реализацию в другой теме? Желательно показывать интегратор по времени простоя для клиентов.
все хорошо, сделали через DateDiffHour, более-менее правильно считает, но иногда вылезают такие неприятные штуки, что W_Delta = 24,01 и тогда Время простоя получается -0,01 что как-то неправильно. Как можно избавиться или отфильтровать такие значения?
Поместите выражение в скобки функции FLOOR() - округляет в меньшую сторону до целого, т.е. добавте вычисляемое поле и создайте выражение типа FLOOR(W_Delta - разница показаний времени наработки на конец и начало отчетного периода)
FLOOR(24,01) = 24
так же можно округлить в большую сторону до целого, функция CEILING ()
CEILING (24,01) = 25
Не подойдет, так как при времени наработки например 22,58 тоже округлит до 22, что не нужно.
Я сделал просто счет до десятых долей, а не до сотых, пока устраивает