Не работает логическая функция Iif с несколькими выражениями

Необходимо было доработать отчетную форму Ведомость параметров (Теплоснабжение), чтобы уменьшить время досчёта.
В отчетной форме для столбца Теплопотребление(ГКал) при выводе значений необходимо задать несколько выражений (условий):

  1. если дельта T меньше или равняется 2, то Q ровняется 0, соответственно:
    Iif([T_delta - Разность температур (°C)] >= 1.9445, [Q - Теплопотребление (ГКал)], 0)
  2. если дельта М больше 4%, то Q и время нормальной работы ровняются 0, соответственно
    Iif([M - Массовый расход (т)] <= ((([M1 - Масса по подающей магистрали (т)]+[M2 - Масса по обратной магистрали (т)])/2)*0.04), [Q - Теплопотребление (ГКал)], 0)
    3 .если Время работы больше 24 ч., то Q ровняется 0.
    Iif([WorkTime - Время нормальной работы (ч)] < 24, [Q - Теплопотребление (ГКал)], 0)

Каждое по отдельности условие работает:

  1. Если попытаться добавить в функцию все три выражения, то оно не высчитывает
    например, Iif([T_delta - Разность температур (°C)] >= 1.9445, [Q - Теплопотребление (ГКал)], [M - Массовый расход (т)] <= ((([M1 - Масса по подающей магистрали (т)]+[M2 - Масса по обратной магистрали (т)])/2)*0.04), [Q - Теплопотребление (ГКал)], [WorkTime - Время нормальной работы (ч)] < 24, [Q - Теплопотребление (ГКал)],0)

В чем может быть проблема? исходила из логики Iif(Expression1, True_Value1, …, ExpressionN, True_ValueN, False_Value)

Проблема как раз в этом:

Не совсем понятно как вы пришли к данной логике. В описании этой функции явно указано:

Iif(Expression, TruePart, FalsePart)

Если выражение истина, исполняет TruePart, иначе исполняет выражение FalsePart…

исходя из описания в разделе Logical Functions

Да действительно, данная функция изменилась. Очевидно в русской локализации данного компонента разработчики просто не обновили описание.

Тогда не совсем понятно, что именно вы хотите получить? Какое то значение при выполнении всех 3-х условий?

Количество тепла/времени для последующего расчета по среднему значению и получения итогового значения Тепла.
Например, так

Как это связано с вышеописанным объединением нескольких условий в одной функции Iif? Почему вы считаете, что данная функция работает неправильно?

Всего три условия, если я добавляю второе или третье выражение в функцию, то расчета не получается

  1. Если попытаться добавить в функцию все три выражения, то оно не высчитывает
    например, Iif([T_delta - Разность температур (°C)] >= 1.9445, [Q - Теплопотребление (ГКал)], [M - Массовый расход (т)] <= ((([M1 - Масса по подающей магистрали (т)]+[M2 - Масса по обратной магистрали (т)])/2)*0.04), [Q - Теплопотребление (ГКал)], [WorkTime - Время нормальной работы (ч)] < 24, [Q - Теплопотребление (ГКал)],0)

Проверьте что выдает функция Iif на выходе. Возможно при множественных условиях она возвращает строковое значение.

Четвертый столбец показывает расчет с 3 условиями на первом скрине, такой же результат с двумя условиями

В четвертом столбце у вас отражается корректный результат согласно приведенному вами ранее условию:

Срабатывает первое условие из перечисленных и функция Iif возвращает результат для этого условия.

оу, как же вы правы :unamused: :fearful:Необходимо поменять знаки и True_ValueN, False_Value

Если вам необходимо объединить все условия в одно, то это можно было сделать несколько проще при помощи оператора And:

Iif([T_delta - Разность температур (°C)] >= 1.9445 And [M - Массовый расход (т)] <= ((([M1 - Масса по подающей магистрали (т)]+[M2 - Масса по обратной магистрали (т)])/2)*0.04) And [WorkTime - Время нормальной работы (ч)] < 24, [Q - Теплопотребление (ГКал)],0)

Я правильно понимаю, ваш вопрос решен?

Да благодарю