Используя тип поля Формула и Функции из плагинов мы можем создавать сложные вычисления. Давайте рассмотрим различные примеры применения формул.
Простые вычисления
([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)
Формулы в функциях
Создавая новую функцию, например для вычисления сумы значений, вы можете использовать в формуле только числовые поля и простые математические вычисления.
Список полей, разрешенных для использования в функциях:
- Числовое поле
- Числовое поле в комментариях
Хотите прокомментировать?
You must be logged in to post a comment.