Как использовать формулы и функции?

Используя тип поля Формула и Функции из плагинов мы можем создавать сложные вычисления. Давайте рассмотрим различные примеры применения формул.

Простые вычисления

([36]+[54])/2

где 36 и 54 — идентификаторы числовых полей.

Математические функции

В формуле мы можем применять математические функции MySql. К примеру, нам нужно округлить результат вычисления до целого числа:

FLOOR(([36]+[54])/2)

Расчет по формуле с условием

Для добавления условия в формулу нужно использовать оператор IF

if(expr1,expr2,expr3)

Если expr1 равно значению ИСТИНА (expr1 <> 0 и expr1 <> NULL), то функция IF() возвращает expr2, в противном случае — expr3. В зависимости от контекста, функция IF() может возвращать либо числовое, либо строковое значение:

if([36]>0,([36]+[54])/2,0)

В данном примере, если значение поля 36 больше 0, то мы производим расчеты, в противном случае, возвращаем ноль.

Если есть необходимость возвращать строку, например пустое значение, либо введенный текст,  то строку необходимо заключать в одинарные кавычки, например:

if([36]>0,([36]+[54])/2,'нет данных')

Проверка списка в операторе IF

Очень часто возникает необходимость производить расчеты только в том случае, если, к примеру, поле «Статус проекта» имеет тип поля «Раскрывающийся список» и значение «Закрыт». В таком случае, условие будет следующее:

if([11]=15,([36]+[54])/2,0)

где 11 — идентификатор поля «Статус», а 15 — это идентификатор значения «Закрыт».

Теперь давайте рассмотрим пример, когда нам нужно проверить несколько значений из списка:

if([11] in (15,16,17),([36]+[54])/2,0)

где 15,16,17 — это идентификаторы значений списка.

Для проверки значения из логического списка используйте ‘true’ или ‘false’, например:

if([20]='true',([36]+[54])/2,0)

где 20 — идентификатор поля «Логическое поле»

Расчет разницы времени

Очень часто возникает необходимость создать расчет разницы времени между полями с временем начала и окончания проекта/задачи. Так как даты хранятся в базе данных в секундах, то вычисление количества дней будет следующим:

([300]-[159])/86400

где 300 — идентификатор поля «Дата завершения», 159 — идентификатор поля «Дата начала», 86400 — количество секунд в сутках.

Но так как дата может быть введена некорректно или отсутствовать вовсе, мы должны выполнить проверку перед вычислением. Корректная формула будет следующая:

if([300]>0 and [159]>0 and [300]>[159],([300]-[159])/86400,0)

Примечание: вы можете использовать [TODAY] для текущей даты.

Список полей, разрешенных для использования в формуле

  • Числовое поле
  • Числовое поле в комментариях
  • Формула
  • Дата с календарем
  • Дата с календарем и выбором времени
  • Логическое поле
  • Раскрывающийся список
  • Переключатели

Функции

Функции помогут вам выполнить вычисления с использованием полей из других сущностей. Для добавления функции в формулу используйте фигурные скобки. Рассмотрим простой пример применения функции:

{12}+[5]

где 12 — это идентификатор функции, 5 идентификатор числового поля.

Следующий пример позволит вам выполнить вычисление с несколькими функциями:

{12}+{13}

Так же функции можно применять в условиях:

if([5]>0,{12},0)

Формулы в функциях

Создавая новую функцию, например для вычисления сумы значений, вы можете использовать в формуле только числовые поля и простые математические вычисления.

Список полей, разрешенных для использования в функциях: 

  • Числовое поле
  • Числовое поле в комментариях

Was this article helpful?

Похожие статьи

Хотите прокомментировать?

You must be logged in to post a comment.