runRule - неожиданное поведение

Привет. Нашел пробел в документации, который стоил мне ночи за компом.
Если принудительно запустить runRule(proc), то переменная, которая должна вызывать срабатывание правила, в правиле равна undefined, а не предыдущему значению из топика. Это, возможно, логично в плане отсутствия лишнего опроса, НО делает функцию бесполезной. Обычно форсирванное выполнение правила нужно при изменении внешних условий, передернуть хендлер при неизменной переменной условия. А она - молча йок…

Добрый день.Тут дело в том что “переменных”, точнее топиков в правиле можеит быть перечислено больше чем 1. Ну и передаются в функцию внутри не только значение но и имя устройства.

Я к тому, что этот факт надо явно документировать, не я один могу убиться веником в поисках очень и очень блуждающей ошибки.

Оно ж документировано, тут:

Если срабатывание правила не связано непосредственно с изменением параметра (например, вызов при инициализации, по таймеру или через runRules()), then вызывается без аргументов, т.е. значением всех трёх аргументов будет undefined.
1 Like