Скалярные функции
Скалярные функции работают в пределах одной строки: берут значения её полей и возвращают результат. Исключение одно, lookup: она подсматривает значение в другой таблице.
В примерах поля записаны по названию в квадратных скобках, как в редакторе: [Сумма]. Русские имена функций (ОКРУГЛ, ЕСЛИ…) перечислены в указателе функций.
Модуль числа.
abs(-5) // → 5abs([Сумма] - [Плановая сумма])round(x, digits=0)
Заголовок раздела «round(x, digits=0)»Округление к ближайшему. Второй аргумент задаёт число знаков после запятой, по умолчанию 0.
round(3.7) // → 4round(3.14159, 2) // → 3.14round([Сумма] / 12, 2) // в месяц, две цифры после запятойfloor(x), ceil(x)
Заголовок раздела «floor(x), ceil(x)»Округление вниз / вверх.
floor(7.9) // → 7ceil(7.1) // → 8min(a, b, …), max(a, b, …)
Заголовок раздела «min(a, b, …), max(a, b, …)»Минимум/максимум из аргументов. Null-аргументы игнорируются.
min([Аренда в месяц], 50000)max(0, [Прибыль]) // отрицательное → 0coalesce(a, b, …)
Заголовок раздела «coalesce(a, b, …)»Первый ненулевой аргумент. Удобно для значений по умолчанию.
coalesce([Заметки], "—") // если заметки пусты, покажем «—»coalesce([Факт], [План], 0)if(cond, then, else)
Заголовок раздела «if(cond, then, else)»Условие. Тернарного оператора ? : в формулах нет, вместо него if.
if([Сумма] > 100000, "Большая", "Малая")if([Сдан в аренду], [Аренда в месяц], 0)ЕСЛИ([Категория] == "Зарплата"; [Сумма]; 0)Вложенные условия:
if([Балл] >= 80, "Высокий", if([Балл] >= 50, "Средний", "Низкий"))Логическое отрицание. Эквивалент !x.
not([Сдан в аренду]) // истина, если объект свободен![Сдан в аренду] // то же самоеlower(s), upper(s)
Заголовок раздела «lower(s), upper(s)»Регистр текста.
lower([Категория]) // "ЗАРПЛАТА" → "зарплата"upper([Тикер])contains(haystack, needle)
Заголовок раздела «contains(haystack, needle)»Поиск подстроки без учёта регистра. Возвращает true/false.
contains([Заметки], "ипотека")contains([Адрес], "москва") // регистр не важенlookup — значение из другой таблицы (ВПР)
Заголовок раздела «lookup — значение из другой таблицы (ВПР)»lookup(значение, [Справочник.Ключ], [Справочник.Значение]): как ВПР в Excel. Ищет значение в колонке-ключе таблицы-справочника и возвращает соседнее значение из той же строки. Русское имя ВПР.
SUM([Сделки.Количество] * LOOKUP([Сделки.Тикер], [Рыночные цены.Тикер], [Рыночные цены.Цена]))Формула выше считает стоимость портфеля по текущим ценам: для каждой сделки находит цену бумаги в «Биржевых ценах» и умножает на количество.
- Работает в расчёте значения виджета. Без ручной формулы то же делает шаг «Значение из справочника» в конструкторе показателя.
- Ключ и значение должны быть из одной таблицы.
- Если ключ не найден, результат пустой.
- Чтобы показать значение связанной строки прямо в таблице, используйте не
lookup, а «Поле из связанной таблицы».
Частые ошибки
Заголовок раздела «Частые ошибки»- Пишут тернарный
? :. Такого оператора нет. Используйтеif(...). - Сравнивают с одним знаком
=. Нужно==. - Ждут, что
==не учтёт регистр.==учитывает регистр:"Зарплата" == "зарплата"даёт ложь. Сравнивайтеlower([Категория]) == "зарплата". Числа сравниваются как числа:"5" == 5даёт истину.