- Print
- DarkLight
- PDF
В настройках элементов системы вы уже встречали возможность установить значение - "Вычисляется по формуле". Мы расскажем, как и какие формулы вы можете применять.
Если формулы завязаны на других элементах, то для написания формулы нужно использовать ID нужных элементов. Их вы можете посмотреть в настройках элемента.

Если при создании формулы вы укажите некорректные данные, то система подскажет, что что-то пошло не так.
Рассмотрим все операторы, доступные в системе.
Арифметические операторы
Если необходимо сделать из отрицательной переменной положительную и наоборот вы можете задать формулу формата:
-ID1
Знакомые операторы+ - * /, позволяют выполнить привычные математические вычисления.
Логические операторы
С помощью логических операторов вы можете проверить выполнение одного или нескольких условий.
Операторы & (и), | (или), ! (отрицание).
Приоритет можно выстраивать с помощью скобок ().
Например, вам нужно, чтобы условие включалось, если выбран ответ 1 (ID1) и 2(ID2) или, если не выбран ответ 5(ID5). Формула будет выглядеть следующим образом:
Таким образом, мы объединили первое условие в скобку и через знак |(или) проставили отрицание ID5
Операторы равенства и сравнения
Операторы равенства и сравнения позволяют сравнивать между собой переменные, возвращая значение true, если они равны, и значение false, если они не равны:
- (==) - проверяет равны ли элементы.
- (!=) - проверяет неравенство элементов.
- (>) - больше ли первый элемент;
- (<) - меньше ли первый элемент;
- (>=) - больше или равен ли первый элемент;
- (<=) - меньше или равен ли первый элемент.
Тернарный оператор
Условный оператор (?:) - тернарный условный оператор, вычисляет логическое выражение и возвращает результат вычисления одного из двух выражений в зависимости от того, выполняется условие или нет.
Записывается оператор следующим образом:
Условие - само условие, которое проверяется,
Следствие - действие, если условие выполняется,
Альтернатива - действие, если условие не выполняется.
Например, в зависимости от ответа на вопрос "Учитывается ли НДС при расчете", должен выставиться % НДС 0 или 20. Настроит условие на вариант ответа "Да, учитывается"(ID1):
если ID1, то 20, иначе 0
Формулы с мультипликатором
При работе с мультипликатором у вас есть возможность использовать формулы для работы с репликами мультипликатора.
Название метода | Описание метода | Пример реализации |
getCount() | Подсчет количества реплик мультипликатора. Результатом методы является число. | ID1.getCount() , где ID1 - id мультипликатора |
min() | Выбор минимального значения переменной в мультипликаторе. Результатом является минимальное значение. | ID1.min("ID5") , где ID1 - id мультипликатора,а ID5 - id переменной для выборки |
max() | Выбор максимального значения переменной в мультипликаторе. Результатом является максимальное значение. | ID1.max("ID5") , где ID1 - id мультипликатора,а ID5 - id переменной для выборки |
sum() | Подсчет суммы по переменной в мультипликаторе. Результатом будет сумма всех значений указанной переменной. | ID1.sum("ID5") , где ID1 - id мультипликатора,а ID5 - id переменной для выборки |
product() | Вычисление произведения всех значений переменной в мультипликаторе | ID1.product("ID5") , где ID1 - id мультипликатора,а ID5 - id переменной для выборки |
average() | Подсчет среднего значения по переменной в мультипликаторе. Результатом метода будет среднее значение. | ID1.average("ID5") , где ID1 - id мультипликатора,а ID5 - id переменной для выборки |
containsString() containsNumber() containsBoolean() | Поиск наличия определенного значения в переменной мультипликатора. Результатом работы метода будет true/false | ID1.containsString("ID5", "яблоко") ID1.containsNumber("ID5", 100) ID1.containsBoolean("ID5", true) , где ID1 - id мультипликатора,а ID5 - id переменной для выборки |
Формулы для работы с датами
Для работы с датами существуют специальные формулы. Для примера возьмем переменную ID1=8.08.2022 (понедельник).
Формула | Описание | Пример - Результат |
addDay(i) addMonth(i) addYear(i) | Добавление i дней/месяцев/годов к дате, соответственно | ID1.addDay(2) - 10.08.2022 ID1.addMonth(2) - 08.10.2022 ID1.addYear(2) - 08.08.2024 |
getMonthName() getMonthShortName() | Получение полного и короткого наименования месяца | ID1.getMonthName() - Август ID1.getMonthShortName() - Авг |
getDayName() getDayShortName() | Получение полного и короткого наименования дня недели | ID1.getDayName() - Понедельник ID1.getDayShortName() - Пн |
getDayOfWeek() | Получение номера дня недели (исчисление начинается с 0) | ID1.getDayOfWeek() - 0 |
getFirstDateOfWeek() | Получение даты понедельника текущей недели | ID1.getFirstDayOfWeek() - Mon Aug 08 2022 14:17:50 GMT+0300 (Москва, стандартное время) |
isLeapYear() | Определение високосный ли год. Возвращает значение true/false | ID1.isLeapYear() - false |
getFirstDayOfMonth() getLastDayOfMonth() | Получение номера для недели с которого начинается месяц или каким заканчивается | ID1.getFirstDayOfMonth() - 0 ID1.getLastDayOfMonth() - 3 |
getFirstDateOfMonth() getLastDateOfMonth() | Получение первой/последней даты месяца в формате"Thu Jun 30 2022 00:00:00 GMT+0300 (Москва, стандартное время)" | ID1.getFirstDateOfMonth() - Mon Aug 01 2022 00:00:00 GMT+0300 (Москва, стандартное время) ID1.getLastDateOfMonth() -Wed Aug 31 2022 00:00:00 GMT+0300 (Москва, стандартное время) |
getFirstDateOfQuarter() | Получение первой даты в квартале в формате"Fri Apr 01 2022 00:00:00 GMT+0300 (Москва, стандартное время)" | ID1.getFirstDateOfQuarter() - Fri Jul 01 2022 00:00:00 GMT+0300 (Москва, стандартное время) |
getFirstDateOfHalfYear() | Получение первой даты в полугодии в формате"Fri Apr 01 2022 00:00:00 GMT+0300 (Москва, стандартное время)" | ID1.getFirstDateOfHalfYear() - Fri Jul 01 2022 00:00:00 GMT+0300 (Москва, стандартное время) |
getDaysInMonth() | Получение количества дней в месяце | ID1.getDaysInMonth() - 31 |
toISOString() | Получение даты в формате ISO | ID1.toISOString() - 2022-08-08T14:17:50.529+03:00 |
truncMonth() truncYear() | Урезание даты до начала месяца/года | ID1 = 26.11.2022 ID1.truncMonth() - 01.11.2022 ID1.truncYear() - 01.01.2022 |
diffDays() | Расчет разницы между датами. Результатом формулы будет количество число - количество дней. | ID1 = 26.11.2022 ID2 = 29.11.2022 ID2.diffDays(ID1) = 3 Из первой даты будет отниматься вторая. Если первая дата меньше, то значение будет отрицательным. |
daysBetween() hoursBetween() minutesBetween() secondsBetween() | Расчет разницы между датами. Результатом формул будет число - количество дней/часов/минут/секунд | ID1 = 26.11.2022 ID2 = 29.11.2022 ID2.daysBetween(ID1) = 3 ID2.hoursBetween(ID1) =72 ID2.minutesBetween(ID1) =4 323 ID2.secondsBetween(ID1) =259 425 Из первой даты будет отниматься вторая. Если первая дата меньше, то значение будет отрицательным. |
getYear() setYear() | Получение значения года - Результат будет число = году Установка значения года | ID1 = 26.11.2022 ID1.getYear() = 2022 ID1.setYear(2025) = 26.11.2025 |
Date.today().truncDay() | Возвращает текущую дату | Date.today().truncDay() = Tue Dec 27 2022 |
Прочие формулы
Формула | Описание | Пример - результат |
substring | Формула позволяет разбить введенную в переменную слово или значение на составные части | Пример: ID1.substring(0,1) Описание: Из переменной ID1 взять с начала строки (0) количество символов равное 1 Результат: Вводим слово "Привет", формула вернет первый символ "П" |
Формулы для работы с текстовыми переменными
Для текстовой переменной доступны формулы, позволяющие проверить при заполнении анкеты, является ли поле пустым. Эта проверка актуальна в случае, если в зависимости от того, заполнена переменная или нет, должно включаться какое-либо условие.
Формулы имеют следующий синтаксис:
ID.isEmpty(), ID == “” – условие включается, если переменная ID не содержит никаких символов
ID !== “” – условие включается, если переменная ID является непустой строкой (содержит хотя бы один символ).
Пример включения/выключения условия в зависимости от наличия текста в переменной: