Найти в Дзене
QuintaDB

Функции и Скрипты на сервисе QuintaDB

Оглавление

Как использовать функции минимума/максимума, округления вверх и вниз (используя кратность), а также об использовании скриптов на языке Ruby

Функции "Минимум/Максимум"

На примере таблицы "Сотрудники" рассмотрим работу функций.

Данная таблица содержит колонку с ФИО сотрудника, его должность и колонки с процентом КТУ (коэффициент трудового участия) за прошлый и текущий кварталы. 

Используя две последние колонки, рассчитаем размер премии, которая полагается сотруднику.

-2

Премия рассчитывается так: берется самый высокий показатель КТУ и умножается на сумму.

В первую очередь нужно добавить поле Формула на форму.

-3

В первом выпадающем списке нужно выбрать "Функция":

-4

Во втором выпадающем списке выбираем "Максимум":

-5

Далее, нужно выбрать два поля для сравнения. В данном случае - это КТУ за прошлый и текущий кварталы.

Остается нажать на кнопку "Создать".

-6

Теперь в нашей таблице появилось поле "Макс. КТУ", которое сравнивает два значения в записи и берет максимальное:

-7

Функция "Минимум" работает с точностью до наоборот:

-8

Функции "Округлить вверх и вниз"

Для демонстрации функции округления, создадим формулу следующего вида:

-9

Получаем результат:

-10

Чтобы округлить сумму, воспользуемся функцией округления. Для этого нужно:

- создать новое поле Формула и выбрать функцию "Округлить вверх" (или "Округлить вниз");

- выбрать нужное поле;

- указать точность округления.

-11

В результате получаем колонку с круглым числом:

-12

Применение скриптов (Ruby script)

На примере все той же таблицы "Сотрудники", рассмотрим работу скриптов.

Создадим новое поле Формула, выберем опцию "Функция" и пункт "Script (Ruby)" в следующем списке.

В скриптах используются HTML названия полей в качестве операндов. Нажав на ссылку под полем функции «Как вставлять данные записи» появится список доступных полей:

-13

Достаточно выбрать поле из списка и скопировать его HTML название. 

-14

Обратите внимание, вы можете изменить HTML название поля прямо здесь. Достаточно указать новое название и нажать на кнопку "Обновить":

-15

Доступны следующие арифметические операторы:

(+) сложение

(-) вычитание

(*) умножение

(/) деление

(>) 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) - округлить вниз.

В результате получаем скрипт:

-16

Теперь в колонке "Премия" выполняются расчеты, которые отличаются в зависимости от должности.

-17

Доступные методы и операторы: to_f, to_i, to_s, round, floor, ceil, ceiling_up, ceiling_down, include?, if, elsif, else, end.

Также, вы можете использовать две переменные: a и b