Справка по использованию формул в модулях «STARt: Калькулятор услуг» и «STARt: Калькулятор PRO»


Что такое формула

Формула – это математическое выражение, согласно которому калькулятор будет вычислять итоговую стоимость.

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

Пример:

Нам требуется рассчитать стоимость возведения забора на прямоугольном земельном участке. Известна стоимость погонного метра забора – 3 000 руб. Планируется, что ширину и длину участка укажет пользователь, заполнив соответствующие поля калькулятора.

В таком случае стоимость будет рассчитываться по формуле:

(«Ширина участка в метрах» + «Длина участка в метрах») * 2 * 3000

То есть сначала мы находим периметр земельного участка в метрах (сумма его сторон, умноженная на 2), а затем умножаем его на стоимость погонного метра (3000).

Реализация на стороне калькулятора

«Ширина участка в метрах», «Длина участка в метрах» - нужно создать эти два параметра в нашем калькуляторе. К примеру, их тип – ползунок.

ползунок.jpg

Чтобы передать эти параметры в формулу, нам нужно знать их ID. Перейдите в раздел с параметрами калькулятора. ID указаны тут.

ID.jpg

Теперь запишем формулу с использованием ID.

({1539} + {1540}) * 2 * 3000

Где 1539 – это ID параметра «Ширина участка в метрах», а 1540 - ID параметра «Длина участка в метрах». Фигурные скобки {} показывают калькулятору, что речь идет о переменной, а не о простом числе.

Таким образом, чтобы передать параметр в калькулятор, нужно скопировать его ID и заключить в фигурные скобки – вот так {ID}.

Доступные операции

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

Базовые операции

Символ

Название

Пример

+

Сложение

1.2 + 2 = 3.2

-

Вычитание

7 – 4 = 3

*

Умножение

6 * 8 = 48

/

Деление

100 / 5 = 20

()

Группировка

(1 + 2) * 3 = 9

^

Возведение в степень

2 ^ 3 = 8

sqrt()

Извлечение квадратного корня

sqrt(25) = 5

%

Получение остатка от деления

8 % 3 = 2

 

Некоторые другие математические функции

Символ

Название

Пример

sin()

Синус

sin(45 deg) = 0.85090352453

cos()

Косинус

cos(pi) = -1

tan()

Тангенс

tan(45 deg) = 1.61977519054

log()

Логарифм

log(e) = 1

!

Факториал

5! = 120

 

Математические константы

Символ

Название

pi

Число Пи

e

Основание натурального логарифма

i

Мнимая единица

 

Полный перечень доступных функций https://mathjs.org/docs/reference/functions.html. Для использования уберите приставку math. перед названием функции.


Особенности составления формул

  •  В числах в качестве десятичного разделителя должна использоваться точка. Например, 2,51 – неправильно, верная запись - 2.51

  •  Запись выражения с пробелами и без них - равнозначна. То есть, (1 + 2) * 3 – это тоже самое что и (1+2)*3

  • Аналогично можно использовать перенос строки – на работу формулы это не повлияет. Например, (1+2)*3+4*3.5 можно записать так:

(1+2)*3

+

4*3.5

Такая запись может упростить чтение сложных формул, логические части которых можно разнести в разные строки.

Условия

Функционал решения позволяет задавать условия, в зависимости от которых будет выполняться та или иная часть формулы.

Для этого нужно использовать конструкцию <if id="" value="" type=""></if>

  •   id – это ID параметра, от значения которого зависит выполнение условия.

  •  value – значение параметра.

  •  type - может принимать значения = (равно), != (не равно), > (больше), < (меньше).

Пример:

<if id="795" value="Двустворчатое" type="!=">({797} + {800}) * 5</if>

Расшифровка: если значение параметра с ID 795 не равно «Двустворчатое», то следует выполнить выражение ({797} + {800}) * 5.


Вернемся к знакомому нам примеру с расчетом стоимости забора:

Добавим в калькулятор еще один параметр под названием «Материал забора» с ID 1541 и двумя вариантами выбора: «Кирпич» и «Профлист». Стоимость метра забора из кирпича – 3 000 руб., а из профлиста – 1 000 руб.

<if id="1541" value="Кирпич" type="=">

({1539} + {1540}) * 2 * 3000

</if>

<if id="1541" value="Профлист" type="=">

 ({1539} + {1540}) * 2 * 1000

</if>

Внимание! Условия поддерживают вложенность. То есть при необходимости можно реализовать конструкцию, где одно условие находится внутри другого:

<if>

    <if></if>

</if>