Формулы и калькулятор
в amoCRM
Виджет «Формулы» автоматизирует вычисления в amoCRM: при переходе сделки на этап, а также при открытии карточки сделки, контакта или компании, он автоматически рассчитывает значения по заданным формулам и записывает результат в выбранные поля.
Формулы могут быть как простыми (сложение, вычитание, умножение, деление), так и сложными — с логикой, условиями, датами, товарами и текстами. Это позволяет автоматически считать маржинальность, бонусы, стоимость услуг или другие показатели без ручного ввода, сокращая ошибки и экономя время сотрудников.
Почему это важно?
  • Автоматизация расчётов
    исключает ошибки и ручной рассчет данных.
  • Экономия времени
    менеджеры работают с готовыми цифрами, а не тратят время на подсчёты.
  • Снижение ошибок в отчётности
    исключается человеческий фактор при подготовке аналитики.
Возможности
виджета
Поддержка сложных сценариев
Работа с любыми полями
Гибкие условия запуска
Виджет поддерживает расчёты как по стандартным, так и по дополнительным полям amoCRM, включая сделки, контакты и компании.
Формулы могут выполняться как при открытии карточки (сделки, контакта, компании), так и автоматически через Salesbot или триггер в воронке.
можно использовать логические формулы и условия для автоматического принятия решений
Мы подготовили подробную инструкцию по установке
Отзывы благодарных клиентов
Очень полезная вещь, главное не забывайте нажимать кнопку «сохранить» внутри карточки, что бы значение в поле сохранилось.
АЛЕНА, TRUCKEURO
Лучшее решение, спасибо NOVA!
Отличный виджет. Прост в настройке, закрыл головную боль отсутствия вычисляемых полей в амосрм. Рекомендую
Отличный виджет, необычно настраивается, но все работает без нареканий. Спасибо!
КИРИЛЛ, SITYSTROI
АЛИНА, OPTIKA72
СЕРГЕЙ, BATHWORK
Стоимость решения
7 дней бесплатно
5 994 ₽
9 990 ₽
6 месяцев
12 месяцев
17 982 ₽
24 месяцев
6 месяцев в подарок
2 месяца в подарок
и забирайте гайд «7 виджетов, которые нужно установить после активации amoCRM»
1.Настройка Формул в salesbot
1. Перейдите в настройки воронки.
2. Выберите этап, где будет работать бот, и нажмите + Добавить триггер.
3. В списке выберите Salesbot → настройте условия → нажмите + Добавить нового бота.
4. В настройках бота перейдите в раздел Виджеты → выберите Формулы.
5. Нажмите на иконку карандаша.
6. Выберите поле, в которое будет записываться результат.
8. Введите формулу.
Пример:
lead['Цена товара'] - lead['Себестоимость товара']
9. При необходимости добавьте несколько формул → повторите шаги.
10. Сохраните настройки.
  • При необходимости добавить следующие шаги и завершить работу бота. Далее сохранить бота и настройки воронки
  • При переходе сделки на этап бота, бот автоматически заполнит поле по результатам расчета
2.Настройка формул при открытии карточки amoCRM
  • После установки виджета откройте раздел Настройки → Формулы.
  • В ячейке «Поле» укажите название поля, в которое будет записываться результат формулы.
Важно:
  • Названия полей необходимо указывать строго в том же регистре, как они указаны в сущностях amoCRM.
Поля, участвующие в вычислениях, должны иметь отключённое свойство «Заполнение по API», иначе формулы будут работать некорректно.
  1. Вставьте формулу в соответствующее поле.
  2. Формула должна состоять из:
  • ключевого слова (например, lead),
  • названия поля, из которого берётся значение для расчёта.
📌 Пример:

lead['Цена товара'] - lead['Себестоимость товара']


  1. Проверка работы формулы
  2. Перейдите в сделку.
  3. Заполните поля, которые участвуют в формуле
  4. (например, «Цена товара» и «Себестоимость товара»).
  5. После заполнения последнего поля результат автоматически появится в указанном поле.
Если результат не отобразился:
  • перезайдите в сделку, чтобы обновить данные.
Важное о формулах:
  • В формулах можно использовать любые математические операции:
  • сложение (+)
  • вычитание (-)
  • умножение (*)
  • деление (/)
  • Формула не ограничивается двумя переменными.
  • Допускается использование любого количества полей и значений, необходимых для вычисления результата.
3.Переменные в формулах
Если в формулах необходимо использовать постоянное значение, его можно задать через триггер:
  1. Перейдите в бота с формулами.
  2. Нажмите Настройка переменных.
3. Создайте новую переменную, указав:
  • Название (только латинские буквы).
  • Значение (число или текст).
  • После этого переменную можно использовать в формулах наравне с полями amoCRM.

Важно при работе с переменными:
  • Если переменная не является числом, преобразуйте её в числовой тип:
chislo(lead['Название поля с типом текст'])
  • Если переменная не является текстом, преобразуйте её в текстовый тип:
text(lead['Название поля с типом число'])
Это необходимо для корректной работы формул и предотвращения ошибок при вычислениях.
4.Подсказки
В поле ввода формулы доступны подсказки с названиями полей, которые можно использовать в вычислениях.
Чтобы вызвать подсказку, введите символ:
"["
После этого появится выпадающий список доступных полей.
5.Приложение
Корректная работа с числами
  • Иногда amoCRM воспринимает значения как текст, из-за чего вместо сложения получается «склейка» (например: 10+14+5 = 10145).
  • Чтобы этого избежать, каждое значение нужно оборачивать в parseInt().
Пример:
parseInt(lead['Сумма в договоре']) - parseInt(lead['Бюджет'])

Создание логических условий (if-else в одну строку)
  • Можно проверять значения полей и возвращать разные результаты.
Пример:
lead['поле1'] == 'успех' ? 'да' : 'нет'
Здесь:
  • если поле1 = «успех» → результат «да»
  • иначе → результат «нет»
Поддерживаются разные операторы сравнения:
  • >= — больше или равно
  • <= — меньше или равно
  • > — больше
  • < — меньше
  • !== — не равно
Пример с условиями:
lead['Расстояние до заказчика (в км)'] <= '50' ? '300р.' : '250р.'
Этот пример показывает вложенное условие (тернарный оператор) — когда внутри одного условия используется ещё одно.
🔹 Разбор формулы:
lead['Расстояние до заказчика (в км)'] <= '10' ? '300р.' : (lead['Расстояние до заказчика (в км)'] <= '30' ? '1000' : '2000')
1. Проверяется условие:
  • если расстояние ≤ 10 км → результат «300р.».
2. Если первое условие не выполнено, проверяется второе:
  • если расстояние ≤ 30 км → результат «1000».
3. Если оба условия не выполнены:
  • результат по умолчанию → «2000».
По сути, это аналог «если – иначе если – иначе»:
  • До 10 км → 300р.
  • От 11 до 30 км → 1000
  • Больше 30 км → 2000




Иногда в результате вычислений может получиться число с большим количеством знаков после запятой. Чтобы ограничить их количество, используйте функцию .toFixed(x), где:
x — это число знаков после запятой, которое должно остаться.
Пример:
(lead['Сумма'] / lead['Количество']).toFixed(2)
  • Если сумма = 105, количество = 7, то результат будет 15.00 (2 знака после запятой).
Иногда при сложении или других арифметических операциях значения могут "склеиваться" как текст
Пример:
10 + 14 + 5 = 10145
  • вместо правильного результата 29.
  • Чтобы избежать этой ошибки, каждую переменную нужно преобразовать в число с помощью функции parseInt().
✔ Пример правильного использования:

parseInt(lead['Сумма в договоре']) - parseInt(lead['Бюджет'])
В этом случае значения будут обрабатываться как числа, и результат получится корректным.
В какой момент происходит расчет по формулам ?
— При открытии сделки и при изменении полей в ней, когда сделка открыта у пользователя. Считаются по очереди сверху вниз.
6.Как найти id полей товаров
1. Перейдите в нужный список.
2. Нажмите на три точки (…) и выберите пункт Свойства списков.
3. Кликните по названию нужного поля.
4. В открывшемся окне отобразится ID поля
5. Скопируйте его и вставьте в настройки.
7.Генерация формул через ИИ
1.Перейдите в раздел Настройки.
2.Нажмите на иконку генерации формул.
3. Введите простыми словами, какую формулу нужно создать.
4. Нажмите Сгенерировать.
5. Готовая формула автоматически появится в поле Формула.
6. Скопируйте формулу нажав на иконку
7. Формула вставиться в поле Формула

8.Какие переменные ифункции используются в формулах?

Ключи полей
Сделки (lead):
  • lead['ID'] — ID сделки
  • lead['Название'] — Название сделки
  • lead['Бюджет'] — Бюджет
  • lead['status_id'] — ID статуса
  • lead['pipeline_id'] — ID воронки
  • lead['status_name'] — Название статуса
  • lead['pipeline_name'] — Название воронки
  • lead['Ответственный'] — ФИО ответственного
  • lead['Поле'] — Дополнительное поле сделки
Контакт (contact):
  • contact['ID'] — ID контакта
  • contact['ФИО'] — ФИО контакта
  • contact['Имя'] — Имя
  • contact['Фамилия'] — Фамилия
  • contact['Ответственный'] — ФИО ответственного
  • contact['Поле'] — Дополнительное поле контакта
Компания (company):
  • company['ID'] — ID компании
  • company['Название'] — Название компании
  • company['Ответственный'] — ФИО ответственного
  • company['Поле'] — Дополнительное поле компании
Операции с полями
Числовые:
  • lead['Поле1'] + lead['Поле2'] — сложение чисел
  • lead['Поле1'] - lead['Поле2'] — вычитание
  • lead['Поле1'] * lead['Поле2'] — умножение
  • lead['Поле1'] / lead['Поле2'] — деление
  • numToRuWords(lead['Поле']) — преобразование числа в слова
Текстовые:
  • lead['Поле1'] + lead['Поле2'] — объединение строк
  • lead['Поле1'] + ' ' + lead['Поле2'] — объединение с пробелом
  • addDivider(lead['Поле'], '.', 3) — разделение строки на блоки по 3 символа
Флаги:
  • Значение: 'Да' (если отмечено) или пусто (если не отмечено).
Списки:
  • Чтение и запись как текст.
Мультисписки:
  • Значения считываются как текст, несколько значений разделяются ;.
  • Работа с товарамиlead['list_sum'] — сумма по всем спискам (тип Цена)
  • lead['list_sums'][ID] — сумма по конкретному списку
  • lead['list_sum_ID'] — значение поля с ценой по ключу (пример: lead['list_sum_123'])
  • lead['e_IDсписка_1_Название'] — ключ по названию поля из списка

Работа с датами:
  • (dateToTime(lead['Поле1']) - dateToTime(lead['Поле2']))/3600/24 — разница дат (в днях)
  • (Math.floor(Date.now()/1000) - dateToTime(lead['Поле']))/3600/24 — разница текущей даты и даты из поля
  • datePlusSeconds(lead['Поле'], 3600*24*7) — прибавить 7 дней
  • updateDate(lead['Поле'], 1, 'd') — обновление даты (+1 день
  • new Date(Date.now()).toISOString().split('T')[0] — текущая дата
  • new Date(Date.now() + 7 * 86400000) — текущая дата + 7 дней

Изменение типов:
  • chislo(lead['Поле']) — текст → число
  • text(lead['Поле']) — число → текст

Падежи для ФИО:
  • namePad(contact['ФИО'], 'родительный') — ФИО в нужном падеже

Сложные формулы и вложения:
  • lead['Поле1'] * (lead['Поле2'] - lead['Поле3']) — операции со скобками
Условия:
  • (lead['Поле'] > 10) ? 1 : 0 — если >10, то 1, иначе 0
  • (lead['Поле'] == 'тип 1') ? 'Если условие выполнено' : 'Если условие не выполнено' — проверка на равенство
С текстом:
  • (lead['Поле'] === 'Текст') ? 'Если условие выполнено' : 'Если условие не выполнено'
С вариантами:

((lead['Поле']=='1')?'Вариант1':'') +
((lead['Поле']=='2')?'Вариант2':'') +
((lead['Поле']=='3')?'Вариант3':'')
Made on
Tilda