Стартовая страница › Форумы › Понять, как работает ПО › Формулы › Переопределение статусов каналов
- В этой теме 6 ответов, 3 участника, последнее обновление 1 год, 8 месяцев назад сделано
Evgeniy58.
-
АвторСообщения
-
22.10.2024 в 10:00 #35169
Evgeniy58
УчастникДобрый день, помогите с формулой. Хочу поменять стандартные статусы у канала (норма, завышение, аварийное завышение.)
Почему то не срабатывает условие, а срабатывает «else return st»;public int CalcStat() { int st = CnlStat; if (st == 13) return 102; else if (st == 14) return 103; else if (st == 15) return 104; else return st; }22.10.2024 в 10:31 #35170
manjey73УчастникА где вы статус в формулу подаете? у вас всегда оно 1 если канал в работе. CnlStat
22.10.2024 в 11:01 #35173Evgeniy58
УчастникВызываю формулу во входной формуле канале
https://skrinshoter.ru/sSKyU8QGj7m22.10.2024 в 11:07 #35174
manjey73УчастникЕще раз. CalcStat() — а внутри CnlStat — Переданный Серверу статус канала до расчёта
Статус передается Коммуникатором, если там связь ОК и все хорошо, то CnlStat у вас = 1. Откуда ему взяться 13, 15 или еще чем-то ?
Вам статус надо поменять в зависимости от значения канала? тогда и формула будет иной.
То есть все эти ИФы до одного места. Это произойдет только тогда, когда Коммуникатор передаст в качестве статуса значения 13,14 или 15 но не раньше.22.10.2024 в 11:12 #35177
manjey73УчастникА, статусы 13,14 и 15 это к лимитам относятся, это уже потом Сервер на них меняет, но надо лимиты настраивать и включать.
Но до расчета по идее все равно будет = 1 вот то самое CnlStat, так как он от Коммуникатора прилетает.Скорее вам в формуле надо применять Stat(), то есть уже то, что посчитал Сервер, и уже после этого менять на свои.
Честно, с Лимитами особо не игрался.Должно быть что-то вроде такого
if (CnlStat == 1 && Stat() == 13) То есть что данные достоверны и их статус согласно лимитам такой-то, тогда меняем на свой.
-
Ответ изменён 1 год, 8 месяцев назад пользователем
manjey73.
22.10.2024 в 14:20 #35179
MikhailМодераторДобрый день.
Верно, Коммуникатор передаёт данные на Сервер со статусом 1. Статусы 13, 14 и 15 присваиваются после вычисления по формуле, если формула не меняла статус сама.23.10.2024 в 07:46 #35198Evgeniy58
УчастникСпасибо за помощь, теперь я понял что встроенные границы — это по факту уже встроенные формулы и переопределять их нет никакого смысла. Переделал собственную формулу в которой расставил собственные границы в зависимости от значений канала.
public int CalcStat() { if (Val() > 0 && Val() < 65) return 102; else if (Val() >= 65 && Val() <= 70) return 103; else if (Val() > 70 && Val() <= 75) return 104; else if (Val() > 75 && Val() <= 80) return 105; else if (Val() > 80 && Val() <= 85) return 106; else if (Val() > 85) return 107; else return Stat(); } -
Ответ изменён 1 год, 8 месяцев назад пользователем
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.