Содержание
Что такое формулы в amoCRM
Формулы — это инструмент автоматических вычислений в карточке сделки. С их помощью можно рассчитывать скидки, маржу, сроки, бонусы менеджеров и любые другие показатели на основе данных из полей сделки, контакта или компании.
🧮Формулы рассчитываются автоматически при открытии сделки или изменении полей. Результат записывается в указанное поле.
Примеры использования формул:
- Расчёт маржи — Цена продажи минус Себестоимость
- Скидка в рублях — Цена без скидки умножить на Процент скидки
- Стоимость доставки — Расстояние умножить на тариф за км
- Бонус менеджера — Бюджет сделки умножить на процент бонуса
- Срок оплаты — Дата договора плюс количество дней отсрочки
Настройка формул
Виджет «Формулы» устанавливается из маркетплейса amoCRM. После установки настройка происходит в разделе Настройки → Формулы.
Как добавить формулу:
- Перейдите в раздел Настройки → Формулы
- В поле «Поле» укажите название поля, куда записывать результат
- В поле «Формула» введите выражение для вычисления
- Нажмите Сохранить
⚠️Важно: Названия полей в формулах должны точно совпадать с названиями в amoCRM, включая регистр букв. Поля для вычислений должны иметь отключённое «Заполнение по API».
Синтаксис формул
Формула состоит из ключевых слов (сущностей) и названий полей. Основные сущности:
- lead — данные сделки
- contact — данные контакта
- company — данные компании
Примеры обращения к полям:
lead['Цена товара'] // поле сделки
contact['Телефон'] // поле контакта
company['ИНН'] // поле компании
lead['Бюджет'] // бюджет сделкиСистемные поля сделки:
- lead['ID'] — ID сделки
- lead['Название'] — название сделки
- lead['Бюджет'] — бюджет
- lead['status_id'] — ID статуса
- lead['pipeline_name'] — название воронки
- lead['Ответственный'] — ФИО ответственного
Математические операции
Доступные операции:
- + (сложение) — lead['Цена'] + lead['Доставка']
- - (вычитание) — lead['Цена'] - lead['Себестоимость']
- * (умножение) — lead['Количество'] * lead['Цена за единицу']
- / (деление) — lead['Сумма'] / lead['Количество']
Пример: расчёт маржи
lead['Цена продажи'] - lead['Себестоимость']Пример: расчёт скидки 10%
lead['Цена'] * 0.1📐Формулы не ограничены двумя переменными — можно использовать любое количество полей и скобки для группировки операций.
Условия в формулах
Формулы поддерживают условные выражения (тернарный оператор), которые позволяют возвращать разные значения в зависимости от условий.
Синтаксис:
условие ? значение_если_да : значение_если_нетПримеры:
// Если статус = 'успех', записать 'да', иначе 'нет'
lead['Статус'] == 'успех' ? 'да' : 'нет'
// Расчёт стоимости доставки по расстоянию
lead['Расстояние'] <= 10 ? '300' : '500'Операторы сравнения:
- == — равно
- !== — не равно
- > — больше
- < — меньше
- >= — больше или равно
- <= — меньше или равно
Вложенные условия
Для сложных сценариев можно использовать вложенные условия — когда внутри одного условия проверяется ещё одно.
Пример: тарифы доставки по расстоянию
lead['Расстояние'] <= 10 ? '300' : (lead['Расстояние'] <= 30 ? '1000' : '2000')Логика:
- До 10 км → 300 руб.
- От 11 до 30 км → 1000 руб.
- Более 30 км → 2000 руб.
💡Не злоупотребляйте вложенностью — слишком сложные формулы трудно поддерживать. Для сложных расчётов лучше разбить на несколько формул.
Работа с датами
Формулы позволяют работать с датами: вычислять разницу, прибавлять дни, получать текущую дату.
Полезные функции:
// Разница между датами в днях
(dateToTime(lead['Дата окончания']) - dateToTime(lead['Дата начала'])) / 3600 / 24
// Прибавить 7 дней к дате
datePlusSeconds(lead['Дата договора'], 3600 * 24 * 7)
// Обновить дату на +1 месяц
updateDate(lead['Дата'], 1, 'M')
// Текущая дата
new Date(Date.now()).toISOString().split('T')[0]Модификаторы для updateDate:
- d — дни
- M — месяцы
- y — года
Дополнительные функции
Преобразование типов:
// Текст в число
chislo(lead['Текстовое поле'])
parseInt(lead['Поле'])
// Число в текст
text(lead['Числовое поле'])Число прописью:
numToRuWords(lead['Сумма'])
// 12500 → 'двенадцать тысяч пятьсот'Склонение ФИО:
namePad(contact['ФИО'], 'родительный')
// Иванов Иван Иванович → Иванова Ивана ИвановичаОкругление:
(lead['Сумма'] / lead['Количество']).toFixed(2)
// Результат с двумя знаками после запятойПрактический пример: расчёт скидки
Рассмотрим реальный сценарий: автоматический расчёт цены со скидкой в зависимости от суммы заказа.
Условия:
- Заказ до 10 000 руб. — без скидки
- Заказ от 10 000 до 50 000 руб. — скидка 5%
- Заказ от 50 000 руб. — скидка 10%
Формула:
lead['Сумма заказа'] < 10000 ? lead['Сумма заказа'] : (lead['Сумма заказа'] < 50000 ? lead['Сумма заказа'] * 0.95 : lead['Сумма заказа'] * 0.9)✅Результат записывается в поле «Цена со скидкой» автоматически при изменении поля «Сумма заказа». Менеджеру не нужно ничего считать вручную.
