Как использовать функции минимума/максимума, округления вверх и вниз (используя кратность), а также об использовании скриптов на языке Ruby
Функции "Минимум/Максимум"
На примере таблицы "Сотрудники" рассмотрим работу функций.
Данная таблица содержит колонку с ФИО сотрудника, его должность и колонки с процентом КТУ (коэффициент трудового участия) за прошлый и текущий кварталы.
Используя две последние колонки, рассчитаем размер премии, которая полагается сотруднику.
Премия рассчитывается так: берется самый высокий показатель КТУ и умножается на сумму.
В первую очередь нужно добавить поле Формула на форму.
В первом выпадающем списке нужно выбрать "Функция":
Во втором выпадающем списке выбираем "Максимум":
Далее, нужно выбрать два поля для сравнения. В данном случае - это КТУ за прошлый и текущий кварталы.
Остается нажать на кнопку "Создать".
Теперь в нашей таблице появилось поле "Макс. КТУ", которое сравнивает два значения в записи и берет максимальное:
Функция "Минимум" работает с точностью до наоборот:
Функции "Округлить вверх и вниз"
Для демонстрации функции округления, создадим формулу следующего вида:
Получаем результат:
Чтобы округлить сумму, воспользуемся функцией округления. Для этого нужно:
- создать новое поле Формула и выбрать функцию "Округлить вверх" (или "Округлить вниз");
- выбрать нужное поле;
- указать точность округления.
В результате получаем колонку с круглым числом:
Применение скриптов (Ruby script)
На примере все той же таблицы "Сотрудники", рассмотрим работу скриптов.
Создадим новое поле Формула, выберем опцию "Функция" и пункт "Script (Ruby)" в следующем списке.
В скриптах используются HTML названия полей в качестве операндов. Нажав на ссылку под полем функции «Как вставлять данные записи» появится список доступных полей:
Достаточно выбрать поле из списка и скопировать его HTML название.
Обратите внимание, вы можете изменить HTML название поля прямо здесь. Достаточно указать новое название и нажать на кнопку "Обновить":
Доступны следующие арифметические операторы:
(+) сложение
(-) вычитание
(*) умножение
(/) деление
(>) true, если левый операнд больше правого
(<) true, если левый операнд меньше правого
(%) деление по модулю
(==) true, если значения двух операндов одинаковы.
Условные операторы:
(if) используется для проверки истинности условия. Значения условия false и nil являются ложными (false), тогда как все прочие — будут True.
(elsif) используется для дополнительных условий.
(||) используется для проверки несколько условий.
Вернемся, к примеру. Предположим, что коэффициент доплаты отличается в зависимости от должности сотрудника.
Создадим скрипт следующего вида:
if 'долж' == 'инженер 1 категории'
максКТУ*650
где: if - условный оператор, 'долж' - HTML название поля "Должность", содержит значение 'инженер 1 категории'
Если условие соблюдается, то выполнить расчет: максКТУ*650
Создадим еще одно условие. Если должность - бухгалтер или секретарь, то коэффициент доплаты будет составлять - 500.
Записывается таким образом:
elsif 'долж' == 'бухгалтер' || 'секретарь'
максКТУ*500
Для всех других условий, коэффициент будет равен - 450.5
else
максКТУ*450.5
По завершению скрипта, нужно обязательно указать end
Для того, чтобы в результате получить круглое число, используем метод .round
Похожие методы Ruby, которые можно применить:
(round) - возвращает ближайшее целое число к вещественному числу
(ceil) - возвращает наименьшее целое число большее или равное числу.
(floor) - возвращает наибольшее целое, меньшее или равное.
(ceiling_up) - округлить вверх.
(ceiling_down) - округлить вниз.
В результате получаем скрипт:
Теперь в колонке "Премия" выполняются расчеты, которые отличаются в зависимости от должности.
Доступные методы и операторы: to_f, to_i, to_s, round, floor, ceil, ceiling_up, ceiling_down, include?, if, elsif, else, end.
Также, вы можете использовать две переменные: a и b