Формулы в полях

Обратите внимание: функционал по применению формул на заключительном этапе реализации, поэтому пока не доступен в системе.

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

Основной принцип: вы задаете выражение (формулу) в настройках поля, и система вычисляет его результат каждый раз при создании или изменении записи. Полученное значение сохраняется в поле и не может быть изменено вручную. Недопустимы формулы, где поля ссылаются друг на друга (A → B → A). Система выдаст ошибку. При возникновении ошибки (деление на 0, некорректная дата и т.д.) формула вернет пустое значение (NULL).

Важно: При изменении формулы в структуре каталога значения будут автоматически пересчитаны для всех существующих записей.

Для получения доступа к данному функционалу вам необходимо перейти в структуру каталога и приступить к настройке полей. В свойствах нужного вам поля указать параметр значения Формула.

Интерфейс редактора формул

Редактор помогает быстро и правильно создавать выражения.

  1. Панель вставки элементов:

  2. Поле: Быстрое добавление системного имени поля из текущего каталога (вставляет {Имя_Поля}).

  3. Функция: Полный список доступных функций по категориям.

  4. Операторы: Математические и логические операторы, скобки, константы.

  5. Область написания формулы: Основное поле для ввода выражения (например, {Количество} * {Цена}).

  6. Область подсказки: Динамическая справка по синтаксису выбранной функции.

Синтаксис формул

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

Типы данных и константы

Тип

Пример

Примечание

Число

1, -5.75, 3.14

Десятичный разделитель — точка.

Строка

'Текст', "Текст"

Можно использовать одинарные или двойные кавычки.

Булево значение

true, false

Логические константы.

Дата

DATE(2024, 12, 31)

Создается с помощью функции DATE.

Массив

[1, 2, 3], ["Да", "Нет"]

Набор значений в квадратных скобках.

Ссылка на поле

Для использования значения поля в формуле укажите его системное имя в фигурных скобках: {FIELD_NAME}.

Значения по умолчанию: Если поле, на которое ссылается формула, пустое, оно принимает значение по умолчанию, что может повлиять на результат.

Тип поля

Тип в формуле

Значение по умолчанию

Текст, Текстовый редактор

Строка

"" (пустая строка)

Число, Дата

Число, Дата

NULL (пустое значение)

Прогресс, Оценка звездами

Число

0

Переключатель

Булево значение

false

Статус, Набор галочек

Массив строк

[] (пустой массив)

Важно: Если в процессе вычисления встречается NULL (пустое значение), результат всей формулы также станет пустым, за исключением функций CONCAT и JOIN, которые преобразуют NULL в пустую строку.

Операторы

Арифметические операторы

Оператор

Пример

Результат

Описание

+

1 + 2

3

Сложение чисел или конкатенация строк.

-

5 - 2

3

Вычитание.

*

3 * 5

15

Умножение.

/

10 / 2

5

Деление.

%

12 % 7

5

Остаток от деления.

^

12 ^ 2

144

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

Строковый оператор

Оператор

Пример

Результат

Описание

&

5 & "2"

"52"

Склеивание (конкатенация) строк.

Логические операторы

Оператор

Пример

Результат

Описание

>

1 > 2

false

Прямое сравнение: Число, Строка, Дата, Булевый тип. Для остальных типов: преобразуются в строку и сравниваются.

<

1 < 2

true

Прямое сравнение: Число, Строка, Дата, Булевый тип. Для остальных типов: преобразуются в строку и сравниваются.

>=

1 >= 2

false

Прямое сравнение: Число, Строка, Дата, Булевый тип. Для остальных типов: преобразуются в строку и сравниваются.

<=

1 <= 2

true

Прямое сравнение: Число, Строка, Дата, Булевый тип. Для остальных типов: преобразуются в строку и сравниваются.

==

1 == 2

false

Прямое сравнение: Число, Строка, Дата, Булевый тип. Для остальных типов: преобразуются в строку и сравниваются.

!=

1 != 2

true

Прямое сравнение: Число, Строка, Дата, Булевый тип. Для остальных типов: преобразуются в строку и сравниваются.

!

!(1 > 2)

true

Применяется к: Булевому значению (чаще всего является результатом выражения).

&&

(1 > 2) && (3 > 2)

false

Работает с: Булевыми значениями (результатами условий).

||

(1 > 2) || (3 > 2)

true

Работает с: Булевыми значениями (результатами условий).

Функции

Строковые

Функция

Описание

Пример

CONCAT(строка1, строка2, ...)

Склеивает все аргументы в одну строку.

CONCAT("Итог: ", {Сумма})

JOIN([массив], разделитель)

Объединяет элементы массива в строку через разделитель.

JOIN({Теги}, ", ")

TRIM(направление, символы, строка)

Удаляет указанные символы с начала/конца строки. Направление: "leading", "trailing", "both".

TRIM("both", " ", " текст ")

SEARCH(строка, подстрока)

Возвращает позицию первого вхождения подстроки (с 0) или -1.

SEARCH("привет", "иве") → 2

REPLACE(строка, что_менять, на_что)

Заменяет все вхождения подстроки.

REPLACE("a-b-c", "-", "/") → "a/b/c"

LOWER(строка), UPPER(строка)

Приводит строку к нижнему/верхнему регистру.

UPPER("текст") → "ТЕКСТ"

LEN(строка)

Возвращает длину строки.

LEN("abc") → 3

SUBSTRING(строка, начало, ?конец)

Возвращает часть строки. Индексы с 0.

SUBSTRING("abcdef", 1, 4) → "bcd"

TOSTRING(значение)

Преобразует любое значение в строку.

TOSTRING(123) → "123"

Числовые

Функция

Описание

Пример

ABS(число)

Модуль числа.

ABS(-5) → 5

ROUND(число, ?знаков)

Округление до ближайшего.

ROUND(5.67, 1) → 5.7

FLOOR(число, ?знаков), CEIL(...)

Округление вниз/вверх.

FLOOR(5.9) → 5

SUM(число1, число2, ...), AVERAGE(...), MIN(...), MAX(...)

Сумма, среднее, минимум, максимум.

SUM(1, 2, {Цена})

MOD(делимое, делитель)

Остаток от деления.

MOD(10, 3) → 1

POWER(основание, степень)

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

POWER(3, 2) → 9

SQRT(число)

Квадратный корень.

SQRT(16) → 4

RANDOM()

Случайное число от 0 до 1.

RANDOM()

FIXED(число, ?знаков)

Форматирует число в строку с разделителями.

FIXED(1000.5, 1) → "1 000,5"

TONUMBER(значение)

Преобразует значение в число.

TONUMBER("123") → 123

Даты

Функция

Описание

Пример

DATE(год, месяц, день, ?час, ?мин, ?сек)

Создает дату.

DATE(2024, 12, 31)

DATEADD(дата, количество, единица)

Добавляет интервал к дате. Единицы: "d" (дни), "mon" (месяцы), "y" (годы) и др.

DATEADD({ДатаСтарта}, 7, "d")

DATEDIFF(дата1, дата2, единица)

Разница между датами.

DATEDIFF({Конец}, {Начало}, "d")

DATEFORMAT(дата, формат)

Форматирует дату в строку. Список форматов.

DATEFORMAT(NOW(), 'DD.MM.YYYY')

DAY(дата), MONTH(дата), YEAR(дата)

Извлекает компонент даты.

MONTH({Дата})

WEEKDAY(дата)

День недели (1-понедельник).

WEEKDAY({Дата})

STARTOF(дата, единица), ENDOF(...)

Сдвиг к началу/концу периода (дня, месяца, года).

STARTOF({Дата}, "mon")

NOW()

Текущие дата и время.

NOW()

Логические

Функция

Описание

Пример

IF(условие, значение_истина, значение_ложь)

Возвращает одно из двух значений в зависимости от условия.

IF({Сумма} > 1000, "Крупный", "Мелкий")

ISEMPTY(значение)

Проверяет, пустое ли значение (или является ошибкой).

ISEMPTY({Цена})

Массивы

(Для полей Статус и Набор галочек часто требуется параметр attr для указания, что использовать: "id" или "name").

Функция

Описание

Пример

COUNT(массив)

Количество элементов в массиве.

COUNT({Статус})

INDEX(массив, индекс, ?attr)

Элемент массива по индексу (с 0).

INDEX({Чекбоксы}, 0, "name")

ID(массив), NAME(массив)

Массив из ID или названий элементов.

NAME({Статус})

FIND(массив, элемент, ?attr)

Ищет элемент в массиве, возвращает его.

FIND({Статус}, "Готово", "name")

Контекстные

Функция

Описание

RECORDID()

Возвращает внутренний ID (dbid) текущей записи.

CATALOGID()

Возвращает ID текущего каталога.

Пример использования формул

Автоматизируйте расчет стоимости для клиентов с помощью формул даже на nocode-решении. Система будет автоматически вычислять итоговые суммы, учитывая скидки и налоги.

Создайте каталог "Калькулятор коммерческих предложений" с рекомендуемыми полями:

Название поля
Тип поля
Формула

Стоимость без скидки

Число

{Количество} * {Цена за единицу}

Сумма скидки

Число

{Стоимость без скидки} * {Скидка %} / 100

Стоимость со скидкой

Число

{Стоимость без скидки} - {Сумма скидки}

Сумма НДС

Число

{Стоимость со скидкой} * {НДС} / 100

Итоговая сумма

Число

{Стоимость со скидкой} + {Сумма НДС}

Добавьте формулы в поля, которые будут рассчитываться. В нашем примере будут рассчитываться следующие поля: Стоимость без скидки, Сумма скидки, Стоимость со скидкой, Сумма НДС, Итоговая сумма.

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

Last updated