Инструкция по работе с виджетом
«Калькулятор» в amoCRM

В данной инструкции вы научитесь:
  • Добавлять и настраивать формулы
  • Получите информацию по функциям
  • Создавать конечный результат для определенного значения в поле и для определенного типа поля
  • Ознакомитесь с примерами и разбором формул
Виджет работает в браузере пользователя в карточке сущности. При вводе значений в поля или изменении полей, автоматически меняются значения, после этого нужно сохранить карточку. Обратите внимание, при создании или изменении сделки через API или списки, значения не будут пересчитаны автоматически.
Содержание

Установка и настройка виджета «Калькулятор» в amoCRM

Найдите виджет Калькулятор от «Команда F5» на aмоМаркете и установите его. Либо установите по данной ссылке.

После установки укажите номер телефона и выберите пользователей, которые смогут использовать виджет. Затем нажмите кнопку «Сохранить».

Также вы можете активировать настройку «Пересчитывать при открытии карточки». Если эта опция включена, автоматический пересчет формул будет происходить только при изменении или внесении данных в поля. При открытии сущности пересчет формул не будет выполняться.

Настройка формул
Раздел Формулы

Блок «Разделы» предназначены для классификации формул по категориям, что особенно полезно, если у вас накопилось много формул. Изначально предусмотрены три раздела:
  • Активные — включенные виджеты, которые можно отключить, если формула больше не нужна, не используется, некорректна или конфликтует с другой формулой.
  • Неактивные — выключенные формулы, которые не будут выполняться.
  • Без раздела — для формул, которые не были отнесены ни к одному из разделов.

Создание формулы, состоит из следующих параметров:
  • Имя формулы — Указывается название самой формулы.
  • Раздел — в какой из созданных вами разделом помещается данная формула.
  • Приоритет — предназначен для случаев, когда у вас есть формулы, которые записывают конечный результат в одно и то же поле. В такой ситуации виджет может вернуть значение NaN. Чтобы избежать этого, вы можете настроить приоритет выполнения формул. Формулы с приоритетом 0 будут обрабатываться первыми, в то время как все значения выше 0 будут иметь меньший приоритет, что обеспечивает правильное выполнение формул с учетом их очередности.

  • Заполнение полей.
  1. Не обязательно — Если вы указали в формуле несколько полей, то их не обязательно все заполнять.
  2. Обязательно — Обязательное заполнение всех указанных вами полей, иначе формула не будет выводить конечный результат.
  • Поле результата.
  1. Указывайте сущность, чтобы впоследствии выбрать поля, в которые будет записываться.
  2. Выбирается само поле Сущности.
  • Окружения выполнение — галочкой (флажок/check box) указывается окружение, где именно будет отрабатывать формула.
  1. Карточка — Формула будет отрабатывать только в сущности или когда заходите в саму сущность.
  2. Цифровая воронка — Триггеры настраиваете в «Цифровой воронке/Digital Pipeline» где далее будет отрабатывать при переходе или на создании на этапе или от любых других условий amoCRM, которые вы указали в самом триггере.
  • Кнопки.
  1. Проверить — Проверяет код на корректность настройки.
  2. Сохранить — Сохраняет саму формулу.

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


  • Переменные. Отображаются поля, откуда виджет может тянуть данные. Виджет отрабатывает в 4 сущностях, такие как: Сделка, Контакт, Компания, Покупатели.

Справочники

В этом разделе вы можете формировать конечный результат для конкретного значения в поле, а также для определенного типа поля, например, числа, текста и так далее. Например, если у вас есть поле типа «список/мультисписок»" с наименованиями одежды, вы можете назначить этим значениям числовые параметры, такие как цена товара.



Пример

В разделе «Переменные» имеется поле с тремя синими полосками 🟦. Чтобы использовать переменную со справочником, нажмите на синюю кнопку 🟦 или на название поля. Но для этого необходимо добавить модификатор .date, например: lead.cf2757561.data.

В столбце «Значение» указаны значения поля, для которых ранее были присвоены числовые параметры.

Список функций
IF — Возвращает различные значения в зависимости от результата логической проверки (ИСТИНА или ЛОЖЬ).

Проверяется значения «числового» поля. Если оно равно «100», вы выводится текст «Привет», иначе «Пока».

IF(lead.cf2802899=="100","Привет","Пока")

//Ниже предоставлен описания функции в виде кода
IF(logical_expression, value_if_true, value_if_false)
CURRENCY (конвектор валюты/валюты) — Возвращает текущий курс ЦБ в минимальном единичном эквиваленте. Принимает параметр кода валюты. Например, CURRENCY("USD") проставит дробное значение текущего курса доллара в рублях. Поддерживаемые коды (AUD, AZN, GBP, AMD, BYN, BGN, BRL, HUF, HKD, DKK, USD, EUR, INR, KZT, CAD, KGS, CNY, MDL, NOK, PLN, RON, XDR, SGD, TJS, TRY, TMT, UZS, UAH, CZK, SEK, CHF, ZAR, KRW, JPY).

В поле “Бюджет” указано число 100, т.е. 100 долларов. Эти 100 долларов конвертировались в рубли, т.е. в 9236.6 рублей

CURRENCY(USD)*lead.sale

//Ниже предоставлен описания функции в виде кода
CURRENCY(code)
ROUND — Округляет число до определенного количества знаков после запятой. Применяются стандартные правила округления.

ROUND(lead.cf2802899, 2)

//Ниже предоставлен описания функции в виде кода
ROUND(value, [places])
CLEARNUMBER — Очищает значение от лишних символов, возвращая значение числовом типе.

Т.е. если у вас в текстовом поле будет значение “Слово + число”, то слово он ужалит вычленив только число. В этом случае не придется применять регулярное выражение и автоматом преобразует значение как числовое

CLEARNUMBER(lead.cf2802903) * lead.cf2802901

//Ниже предоставлен описания функции в виде кода
CLEARNUMBER(value)
REGEXPMATCH — Возвращает нахождения по регулярному выражению.


//Ниже предоставлен описания функции в виде кода
REGEXPMATCH(pattern, string)

//Пример использования
REGEXPMATCH((пять),lead.cf1012195)[0]
SFITEMNAME — Получить название выбранного элемента по указанному id списка.

SFITEMNAME(lead.cf1074727,10049)
//10049 - ID каталога

//Ниже предоставлен описания функции в виде кода
SFITEMNAME(superField, catalogID)

ADD — Возвращает сумму двух чисел. Эквивалентно оператору "+".


Работает только с двумя полями, не более.

ADD(lead.cf2802899,lead.cf2802901)

//Ниже предоставлен описания функции в виде кода
ADD(value1, value2)

MINUS — Возвращает разницу двух чисел. Эквивалентно оператору "-".


Работает только с двумя полями, не более.

MULTIPLY(lead.cf2802899,lead.cf2802901)

//Ниже предоставлен описания функции в виде кода
MULTIPLY(value1, value2)

MULTIPLY — Возвращает произведение двух чисел. Эквивалентно оператору "*".


Работает только с двумя полями, не более.

MULTIPLY(lead.cf2802899,lead.cf2802901)

//Ниже предоставлен описания функции в виде кода
MULTIPLY(value1, value2)

DIVIDE — Возвращает одно число, разделенное на другое. Эквивалентно оператору "/".


Работает только с двумя полями, не более.

DIVIDE(lead.cf2802899,lead.cf2802901)

//Ниже предоставлен описания функции в виде кода
DIVIDE(value1, value2)

ISEMPTY — Определяет, является ли указанное значение пустым значением.

// Если поле cf1012243 не заполнено, то вернет 100, если не пустое (иначе), 
//то 200
IF(ISEMPTY (lead.cf1012243), 100,200)

// Если поле cf1012243 пустое, то вернет 200, иначе 100
IF(ISEMPTY (lead.cf1012243) == false, 100,200)

//Ниже предоставлен описания функции в виде кода
ISEMPTY(expression)

NUMBER — Преобразовывает переданное значение в числовой формат.

//Ниже предоставлен описания функции в виде кода
NUMBER(value)

TXT — Преобразует предоставленное значение в текстовое значение.

//Ниже предоставлен описания функции в виде кода
TXT(value)

CURRENCYFORMAT — Форматирует число в валютный формат. Данный момент поддерживает только USD и RUB.

//Ниже предоставлен описания функции в виде кода
CURRENCYFORMAT(value, format)

DIFFDATE — Вычисляет количество дней, недель или месяцев между двумя датами.

//Ниже предоставлен описания функции в виде кода
DIFFDATE(start_date, end_date, unit, floating = false)

DATEUNIX — Конвертирует дату в unix формат.

//Ниже предоставлен описания функции в виде кода
DATEUNIX(date)

DIFFFULLDATE — Возвращает разницу между двумя датами. Принимает 2 аргумента. Если второй аргумент пустой, то сравниться с текущей датой.

//Ниже предоставлен описания функции в виде кода
DIFFFULLDATE(date1, [date2])

INMULTI — Проверить выбран ли какой то элемент в мульти списке. Например INMULTI("lead.cf542312", lead.cf542312, " Кроссовки").

//Ниже предоставлен описания функции в виде кода
INMULTI(key, value, string)

EXISTVAL — Проверит выбрано ли данное значение или нет. Принимает два значения строку поиска и значения. Возвращает булево значение.

//Ниже предоставлен описания функции в виде кода
INMULTI(key, value, string)

NOTIFY — Выводит системное оповещение.

//Ниже предоставлен описания функции в виде кода
NOTIFY(text)

CMD — Выполняет команду и возвращает результат переданный вторым аргументом.

//Ниже предоставлен описания функции в виде кода
CMD(expression, value)

AREA — Возвращает область инициализации скрипта.

//Ниже предоставлен описания функции в виде кода
AREA()

STOP — Останавливает скрипт, кидая исключение. Дальше формула не будет выполняться и устанавливать результат.

//Ниже предоставлен описания функции в виде кода
STOP()

STREXIST — Проверит строку в тексте на наличие.

//Ниже предоставлен описания функции в виде кода
STREXIST(pattern, text)

MAX — Возвращает максимальное значение в массиве.

//Ниже предоставлен описания функции в виде кода
values

DATEFORMAT — Конвертирует дату из Unix timestamp в указанный формат. При передаче формата - 'default' примет формат указанный на данный аккаунт.

//Ниже предоставлен описания функции в виде кода
DATEFORMAT(unix, format)

NOW — Возвращает Unix Timestamp.

//Ниже предоставлен описания функции в виде кода
NOW()

GETLEADCATALOG — Возвращает массив товаров сделки по его ID индикатору, получения количества товаров необходимо передать так же и ид каталога списка Товары.

//Ниже предоставлен описания функции в виде кода
GETLEADCATALOG(lead_id, catalog_id)

CEIL — Округляет число в большую сторону.

//Ниже предоставлен описания функции в виде кода
CEIL(value)

SUBDATE — Добавляет определенное количество дней или месяцев к дате, принимает аргументы (timestamp, number, ["D", "M", "Y" ,"H", "I"]).

//Ниже предоставлен описания функции в виде кода
SUBDATE(unix, number,  unit);

INFOBETWEENDAYS — Возвращает количество рабочих, сокращенных, не рабочих, а так же дни которые коснулись COVID. Принимает в аргументы начала даты, конец даты, страну ('by' - Белоруссия, 'kz' - Казахстан, 'ru' - Россия, 'ua' - Украина), учитывать ли сокращенные дни( true/ flase), учитывать ли дни короновируса( true/ flase ).

//Ниже предоставлен описания функции в виде кода
INFOBETWEENDAYS('12.02.2020', 15632322222, 'ru', true, true)

WORKDAYS — Функция автоматически возвращает итоговую дату. К дате в поле, которое является первым аргументом прибавляется количество рабочих дней из поля второго аргумента. Выходные дни и праздники в расчет не берутся. Третьим аргументом функции возможно выбрать страну, по календарю которого будет вестись расчет.

//Ниже предоставлен описания функции в виде кода
WORKDAYS(12.02.2020, 20, "ru")

EXECFORMULA — Выполняет функцию и устанавливает ответ в заданное поле указанное в формуле. Возвращает значение результата при успешном, либо кидает исключение Error который можно отловить через ERROR функцию. Необходимо писать в таком формате EXECFORMULA(ID ФОРМУЛЫ, ПАРАМЕТРЫ). В параметры необходимо передать значения которые требуются для расчета. Пример EXECFORMULA(1001, {'lead.cf2134322': 5000, 'lead.sale': lead.sale}); Данной функцией можно пользоваться, если необходимо в одной формуле необходимо установить больше результатов ответа при калькуляции. Не влияет на выключен ли данная формула или нет. При отсутствии каких либо параметров, если стоит необязательное заполнение всех полей пустым полям будет присвоено 'empty' по умолчанию, при обязательном будет кидать ошибку, какие параметры отсутствуют. Рекомендовано использовать вместе с CMD().

//Ниже предоставлен описания функции в виде кода
EXECFORMULA(formula_id, object_arguments)

GETFIELD — Возвращает модель поля по ключу.

//Ниже предоставлен описания функции в виде кода
GETFIELD(cf_id)

SETVALUE — Устанавливает значение в поле, не завершая формулу.

//Ниже предоставлен описания функции в виде кода
SETVALUE(field_key, value)

ARRAYFORMULA — Выполняет последовательно все команды.

//Ниже предоставлен описания функции в виде кода
ARRAYFORMULA([expression, expression...]);

MAP — Перебирает массив возвращая результат.

//Ниже предоставлен описания функции в виде кода
MAP(array, callback)

SUMARRAY — Суммирует значения всех чисел в массиве.

//Ниже предоставлен описания функции в виде кода
SUMARRAY(array_numbers);

FIELDNODE — Возвращает Node элемент из DOM страницы.

//Ниже предоставлен описания функции в виде кода
FIELDNODE(lead.cf32432.key)

CSS — Устанавливает стили для выбранного Node элемента.

//Ниже предоставлен описания функции в виде кода
CSS(node,  params)

SELECTOR — Получает элемент из DOM. Первым аргументом принимает текущий node или ничего. Вторым аргементом принимает селектор а третьим булево значние. Если истина ищет в родительский node по селектору, а иначе в дочернем DOM.

//Ниже предоставлен описания функции в виде кода
SELECTOR(node, selector,  parent)

LOGGER — Выводит переданный обьект в консоль лог.

//Ниже предоставлен описания функции в виде кода
LOGGER(extension)

EACH — Перебирает массив или обьект.

//Ниже предоставлен описания функции в виде кода
EACH(iterable, callback)

STORAGE — Сохраняет значение в window.CalcfieldStorage.

//Ниже предоставлен описания функции в виде кода
STORAGE(key,  object)

CURRENTUSER — Возвращает обьект текущего пользователя в системе.

//Ниже предоставлен описания функции в виде кода
CURRENTUSER()

IMPLODE — Возвращает строку, содержащую строковое представление всех элементов массива в указанном порядке, со строкой glue между каждым элементом.

//Ниже предоставлен описания функции в виде кода
IMPLODE (values,[glue=","])

CSSPROPERTY — Применяет свойства css к объектам через применение important используйте только в том случае если необходимо переписать свойство которое сложно переписать.

//Ниже предоставлен описания функции в виде кода
CSSPROPERTY(nodes, styles)

MIN — Возвращает минимальное значение в массиве.

//Ниже предоставлен описания функции в виде кода
values

RESETVALUE — Очищает значение кастомного поля.

//Ниже предоставлен описания функции в виде кода
RESETVALUE(field_key)

HTMLREPLACE — Заменяет HTML код в указоном селекторе.

//Ниже предоставлен описания функции в виде кода
HTMLREPLACE(selector, html)

EVENT — Подписывается на изменение и вызов событий на DOM элемент.

//Ниже предоставлен описания функции в виде кода
EVENT(action, selector, func)

APPLYFUNC

//Ниже предоставлен описания функции в виде кода
APPLYFUNC(func,  ...args)

SETTIMEOUT

//Ниже предоставлен описания функции в виде кода
SETTIMEOUT(func, miliseconds)

SETTIMEOUTAPPLY

//Ниже предоставлен описания функции в виде кода
SETTIMEOUTAPPLY(func, miliseconds)

MODALSUCCESS — Отображает сообщение в модальном окне.

//Ниже предоставлен описания функции в виде кода
MODALSUCCESS(message)

MODALERROR — Отображает сообщение ошибки в окне.

//Ниже предоставлен описания функции в виде кода
MODALERROR(error)

MODALCONFIRM — Выводить модальное окно для подтверждения какого либо действия.

//Ниже предоставлен описания функции в виде кода
MODALCONFIRM(text, accept, decline, options)

HANDLECATALOGCHANGE — Ловит изменение каталога товаров (изменение количества, добавление, удаление) в карточке и вызывает либо переданную функцию, либо срабатывает как EXECFORMULA, если передать 2 аргумента: (ID ФОРМУЛЫ, ПАРАМЕТРЫ).

//Ниже предоставлен описания функции в виде кода
HANDLECATALOGCHANGE(func)

ENABLEGROUPFIELDS — Позволяет сгруппировать дополнительные поля, добавляя спец.поле с названием группы или подгруппы в заданное место, в списке всех полей. Спец поле для групп: "---Название группы---". Спец поле для подгрупп: "--Название подгруппы--".

//Ниже предоставлен описания функции в виде кода
ENABLEGROUPFIELDS(auto_hide_groups)

DEFAULT — Если значение пусто то будет применено указанное значение по умолчанию.

//Ниже предоставлен описания функции в виде кода
DEFAULT(value, default)

EXPLODE — Возвращает массив строк, полученных разбиением строки string с использованием delimiter в качестве разделителя.

//Ниже предоставлен описания функции в виде кода
EXPLODE (string,[delimiter=","])

INPUTMASK — Создает маску для поля, принимает селектор первым аргументом или указатель, а вторым аргументом сам паттерн.

//Ниже предоставлен описания функции в виде кода
INPUTMASK(selector, pattern, placeholder=false, slots='_',  accept='\d')

INTROUND — Округляет число до определенной точности. Применяются стандартные правила округления.

//Ниже предоставлен описания функции в виде кода
INTROUND(value,  precision)

INTCEIL — Округляет число в большую сторону с определенной точностью.

//Ниже предоставлен описания функции в виде кода
INTCEIL(value, precision)

INTFLOOR — Округляет число в меньшую сторону с определенной точностью.

//Ниже предоставлен описания функции в виде кода
INTFLOOR(value, precision)

CURRENCYEXCHANGE — Возвращает текущий курс ЦБ в минимальном единичном эквиваленте. Принимает параметр кода валюты. Например, CURRENCY("USD") проставит дробное значение текущего курса долара в рублях. Поддерживаемые коды (AUD, AZN, GBP, AMD, BYN, BGN, BRL, HUF, HKD, DKK, USD, EUR, INR, KZT, CAD, KGS, CNY, MDL, NOK, PLN, RON, XDR, SGD, TJS, TRY, TMT, UZS, UAH, CZK, SEK, CHF, ZAR, KRW, JPY).

//Ниже предоставлен описания функции в виде кода
CURRENCYEXCHANGE(code)

WORKDAYSNEW — Функция автоматически возвращает итоговую дату. К дате в поле, которое является первым аргументом прибавляется количество рабочих дней из поля второго аргумента (можно использовать отрицательные числа). Выходные дни и праздники в расчет не берутся. Третьим аргументом функции возможно выбрать страну, по календарю которого будет вестись расчет.

//Ниже предоставлен описания функции в виде кода
WORKDAYSNEW("12.02.2020", 20, "ru")

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

//Ниже предоставлен описания функции в виде кода
EXTRACTLELLTERS(text)

SFITEMS — Получить массив выбранных элементов списков в супер-поле.

//Ниже предоставлен описания функции в виде кода
SFITEMS(superField)

STRINGIFY — Преобразовать в JSON строку.

//Ниже предоставлен описания функции в виде кода
STRINGIFY(value)

SFITEMID — Получить id выбранного элемента по указанному id списка.

//Ниже предоставлен описания функции в виде кода
SFITEMID(superField, catalogID)

REMOVEFROMARRAY — Принимает первым аргументом массив и возвращает новый массив в котором отсутствуют элементы которые равны второму аргументу функции.

//Ниже предоставлен описания функции в виде кода
REMOVEFROMARRAY( array, removalElement )

FORMULA — Возвращает строку другой формулы. Принимает в параметр ID формулы.


MATH — Выполняет функцию Math.eval() из библиотеки math.js. Подробнее можно ознакомится на сайте https://mathjs.org/


NUMBERTOSTRING — Возвращает числа с прописью, можно передать падеж. Принимает 3 аргумента число, валюта и формат. Например, NUMBERTOSTRING(42342, "RUBLE", "NORMAL_FORMAT"). Поддерживает такие валюты, как DOLLAR, EURO, RUBLE, HRYVNIA. Поддерживает такие форматы, как SHORT_FORMAT, NORMAL_FORMAT, NORMAL_DOC_FORMAT, DUPLICATION_FORMAT, CLARIFICATION_FORMAT.

Кейсы использования

Сложение, вычитания, деления, умножения


Чтобы применить математические операции к полям, вам нужно понять, какой тип поля вы планируете использовать. Самое просто, применять математические операции к типу поля “Число”, т.к. в таком случае переменная будет выглядеть очень просто 👇

lead.cf123456 + lead.cf456789

Если, вы применяете тип поля “Текст”, то в этом случае нужно применить функцию NUMBER.

NUMBER(lead.cf123456) + NUMBER(lead.cf456789)

NUMBER(lead.cf123456) - NUMBER(lead.cf456789)

NUMBER(lead.cf123456) * NUMBER(lead.cf456789)

NUMBER(lead.cf123456) / NUMBER(lead.cf456789)
Конвертация валюты

В данном кейсе мы рассматриваем как конвертировать не только из валюты в рубль, а из другой валюты в другую валюту, через функцию CURRENCY.

В поле "Бюджет" записывается сумма в рублях. Сначала она конвертируется в тенге с помощью функции CURRENCY(KZT), а затем переводится в доллары с использованием функции CURRENCY(USD).

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

ROUND(CURRENCY(KZT)/CURRENCY(USD)*lead.sale,4)
Возникли вопросы или сложности с настройкой?
Читайте так же
Штаб-квартира «Команды F5»
Лучшие кейсы автоматизаций, новости о выходе новых виджетов и обновлениях действующих.