[15898] Подстановка рассчитанных значений в сообщения и описание пользовательских нештатных ситуаций

Есть ли возможность подставлять числовые значения, описывающих конкретную нештатную ситуацию, в сообщение и описание пользовательской НС? Чтобы скриншот, приложенный ниже, предоставлял пользователю в пользовательской нештатной ситуации такой же объем информации, как и в предопределенных вариантах диагностики нештатных ситуаций ЛЭРС Учет.

В сообщении пользовательской НС можно выводить только данные подстановочных блоков. Рассчитывать значения при формировании сообщения НС и выводить результат этого расчета в нем возможности нет.

Начиная с 3.60 мы начали использовать liquid-шаблоны для формирования кратких и полных сообщений о пользовательских нештатных ситуациях, так что теоретически такая возможность есть.

Если вы подробнее напишете какой текст вы хотите составить и какие значения использовать, можем попробовать составить нужный шаблон.

Для НС описанной здесь: НС для контроля отрицательного потребления по ГВС используется пользовательская НС.

Сейчас сообщение выглядит так. “Отрицательное потребление ГВС более 4%”, а хотелось бы увидеть примерно так:
"Отрицательное потребление ГВС “- 6,83 %”, небалас “- 0,17 тонн”

Небаланс берётся из параметра %M?

Можно брать и из %M

В НС он считается, т.к. в некоторых случаях настаивают при определении небаланса делить на |М1-М2|/2, а на М1

В общем сейчас возможность есть, но синтаксис шаблонов для этого подходит не очень хорошо. Сам шаблон будет выглядеть сложно, там будет многоэтажная конструкция из фильтров и переменных. К тому же, если изменить саму формулу и забыть поменять шаблон, сообщение будет выводиться неверно.

У нас давно витала в воздухе идея захватывать часть выражений в расчётных формулах. Фактически, дать возможность использовать в них переменные и значения этих переменных выводить в шаблонах сообщений.

Мы решили сделать это следующим образом. В 3.61 добавим в расчётные формулы новую функцию Capture. Она принимает два параметра: строковое наименование переменной и выражение. Значение выражение сохраняется в переменной и сразу же возвращается. Например, ваша формула расчёта выглядит так:

([ХВС.М1] - [ХВС.М2]) / [ХВС.М1] < 4

Её можно будет переписать в таком виде, и работать она будет точно так же.

Capture('MyValue', ([ХВС.М1] - [ХВС.М2]) / [ХВС.М1]) < 4

Здесь результат выражения будет сохранён в переменную MyValue. Если нужно, можно и порог тоже захватить

Capture('MyValue1', ([ХВС.М1] - [ХВС.М2]) / [ХВС.М1]) < Capture('MyValue2', 4)

В шаблон мы добавим новое поле Captures, которое позволит вывести захваченные значения. То есть, ваше сообщение может выглядеть следующим образом

Значение {{ Captures['MyValue1'] }} стало меньше чем {{ Captures['MyValue2']

Остальные значения из записи и так можно вывести. В шаблоне уже есть поле Consumption. из которого можно выдернуть значение M_balance:

Значение небаланса: {{ Consumption[0] | param_value: 'M_balance' }}

Таким образом вы сможете использовать нужные части из расчётной формуле непосредственно в шаблоне сообщений.

Функция Capture будет доступна в релизе 3.61.