Представьте: клиент заполняет форму, выбирает «Интеграция с 1С» без «Настройки обмена», и получает цену на 40% ниже реальной. Результат — пересогласование или недовольство. Наш калькулятор такого не допускает. Мы разрабатываем калькуляторы стоимости проектов на 1С-Битрикс. Это не просто сумма цен по списку — это инструмент, который учитывает зависимости между модулями, коэффициенты срочности, маржу и автоматически передаёт бриф в CRM. Такой калькулятор помогает IT-компаниям и агентствам сегментировать входящий поток: отсеивать нецелевые заявки и подогревать серьёзных клиентов. Проблема большинства самодельных калькуляторов — игнорирование зависимостей, что приводит к заниженной оценке и потерям на этапе согласования.
За 5+ лет мы разработали более 50 таких решений для студий, проектных бюро и интеграторов. Наши калькуляторы обрабатывают от 10 до 200 функциональных блоков и дают точность предварительной оценки до 90% благодаря сертифицированным специалистам и многолетнему опыту.
Как мы рассчитываем стоимость проекта на Битрикс?
Модель данных строится на HL-блоке ProjectBlocks. Каждая запись — блок работы с категорией, сложностью (simple/standard/complex), диапазоном часов и почасовой ставкой. Зависимости и обязательные блоки описаны полями UF_DEPENDS_ON и UF_IS_REQUIRED.
| Поле | Тип | Описание |
|---|---|---|
UF_CATEGORY |
Enum | Категория (Дизайн, Разработка, Интеграция, SEO...) |
UF_BLOCK_NAME |
String | Название блока |
UF_COMPLEXITY |
Enum | simple / standard / complex |
UF_HOURS_MIN |
Int | Минимум часов |
UF_HOURS_MAX |
Int | Максимум часов |
UF_HOURLY_RATE |
Float | Ставка часа для этого типа работ |
UF_IS_REQUIRED |
Bool | Обязательный блок (включён всегда) |
UF_DEPENDS_ON |
String | ID блока-зависимости (нельзя выбрать без него) |
Подробнее о логике расчёта
Алгоритм сначала разрешает зависимости: если выбран блок, требующий другой блок, последний добавляется автоматически. Затем вычисляются часы и стоимость с учётом коэффициента срочности. Итоговая сумма включает маржу и выдаётся диапазоном.Почему калькулятор должен учитывать зависимости?
Без зависимостей клиент может выбрать «Разработку мобильного приложения» без «Дизайна экранов» или «Интеграцию с 1С» без «Настройки обмена». Это искажает оценку. Наш PHP-калькулятор автоматически добавляет недостающие блоки и обязательные модули.
namespace MyProject\Services\Calculators;
class ProjectCostCalculator
{
private array $blocks;
private array $selectedIds;
private float $urgencyCoeff;
private float $marginPercent;
public function __construct(
array $allBlocks,
array $selectedIds,
string $urgency = 'normal',
float $marginPercent = 30
) {
$this->blocks = $allBlocks;
$this->selectedIds = $this->resolveDependencies($selectedIds, $allBlocks);
$this->urgencyCoeff = match ($urgency) {
'urgent' => 1.5,
'fast' => 1.25,
'normal' => 1.0,
'flexible' => 0.9,
default => 1.0,
};
$this->marginPercent = $marginPercent;
}
public function calculate(): array
{
$breakdown = [];
$totalHoursMin = 0;
$totalHoursMax = 0;
$totalCost = 0;
foreach ($this->selectedIds as $blockId) {
$block = $this->findBlock($blockId);
if (!$block) continue;
$hoursMin = $block['UF_HOURS_MIN'];
$hoursMax = $block['UF_HOURS_MAX'];
$rate = $block['UF_HOURLY_RATE'];
$costMin = $hoursMin * $rate * $this->urgencyCoeff;
$costMax = $hoursMax * $rate * $this->urgencyCoeff;
$totalHoursMin += $hoursMin;
$totalHoursMax += $hoursMax;
$totalCost += ($costMin + $costMax) / 2;
$breakdown[] = [
'id' => $blockId,
'name' => $block['UF_BLOCK_NAME'],
'category' => $block['UF_CATEGORY'],
'hours' => "{$hoursMin}–{$hoursMax}",
'cost_min' => round($costMin),
'cost_max' => round($costMax),
];
}
$margin = $totalCost * ($this->marginPercent / 100);
$finalCost = $totalCost + $margin;
return [
'breakdown' => $breakdown,
'hours_min' => $totalHoursMin,
'hours_max' => $totalHoursMax,
'cost_min' => round($finalCost * 0.85),
'cost_max' => round($finalCost * 1.2),
'cost_avg' => round($finalCost),
'urgency_coeff' => $this->urgencyCoeff,
'weeks_min' => ceil($totalHoursMin / 40),
'weeks_max' => ceil($totalHoursMax / 40),
];
}
private function resolveDependencies(array $selectedIds, array $blocks): array
{
$resolved = $selectedIds;
foreach ($blocks as $block) {
if (in_array($block['ID'], $selectedIds, true) && !empty($block['UF_DEPENDS_ON'])) {
$depId = (int)$block['UF_DEPENDS_ON'];
if (!in_array($depId, $resolved, true)) {
$resolved[] = $depId;
}
}
if ($block['UF_IS_REQUIRED'] && !in_array($block['ID'], $resolved, true)) {
$resolved[] = $block['ID'];
}
}
return array_unique($resolved);
}
}
Что выгоднее: калькулятор с зависимостями или простая сумма?
Простой калькулятор суммирует цены блоков, но не учитывает взаимосвязи. Это даёт точность на уровне 50-60%. Наш подход с автоматическим разрешением зависимостей повышает точность до 90% — в 1.5-2 раза лучше. Клиент получает реальную оценку, а вы — меньше пересогласований. По нашим данным, компании, использующие такой калькулятор, тратят на согласование на 40% меньше времени, что эквивалентно значительной экономии при масштабировании.
Официальная документация 1С-Битрикс по HL-блокам подтверждает правильность модели данных.
Как происходит разработка калькулятора?
- Анализ бизнес-логики: собираем список блоков, зависимостей, коэффициентов.
- Проектирование HL-блока: создаём инфраструктуру хранения данных.
- Реализация ядра calc: PHP-класс с методами расчёта и разрешения зависимостей.
- Интеграция с CRM: REST API передаёт бриф в Битрикс24 или amoCRM.
- Интерфейс и UX: настраиваем чекбоксы с подсказками и динамический итог.
- Тестирование: проверяем на реальных сценариях и пограничных случаях.
Что входит в разработку калькулятора?
Каждый проект включает:
- Проектирование структуры блоков и зависимостей
- Реализацию HL-блока и PHP-калькулятора
- Интерфейс с чекбоксами и подсказками
- Интеграцию с CRM (Битрикс24, amoCRM и др.)
- Настройку передачи брифа и истории расчётов
- Документацию и обучение команды
Результат: клиент получает предварительную оценку за 2 минуты, а вы — квалифицированный лид с заполненным брифом.
UX: чекбоксы с подсказками
Интерфейс калькулятора — набор групп с чекбоксами. Каждый чекбокс сопровождается кратким описанием: клиент понимает, что входит в блок.
// Обновление итога при каждом изменении
document.querySelectorAll('.block-checkbox').forEach(cb => {
cb.addEventListener('change', async () => {
const selected = [...document.querySelectorAll('.block-checkbox:checked')]
.map(el => parseInt(el.value));
const urgency = document.querySelector('[name="urgency"]:checked').value;
const resp = await fetch('/ajax/calculator/project/', {
method: 'POST',
body: new URLSearchParams({
selected: JSON.stringify(selected),
urgency,
sessid: BX.bitrix_sessid(),
}),
});
const data = await resp.json();
updateResultPanel(data);
});
});
Передача брифа в CRM
Результат расчёта формирует структурированный бриф, который сразу создаёт сделку в CRM.
// Создание сделки в Битрикс24 или лида в CRM сайта
$comments = "РАСЧЁТ СТОИМОСТИ ПРОЕКТА\n\n";
$comments .= "Выбранные блоки:\n";
foreach ($calcResult['breakdown'] as $item) {
$comments .= "— {$item['category']}: {$item['name']} ({$item['hours']} ч.)\n";
}
$comments .= "\nИтого: {$calcResult['cost_min']} – {$calcResult['cost_max']} руб.\n";
$comments .= "Срок: {$calcResult['weeks_min']} – {$calcResult['weeks_max']} недель\n";
$comments .= "Срочность: {$urgency}\n";
Сроки разработки
| Задача | Срок |
|---|---|
| Базовый калькулятор (10–15 блоков, простая сумма, форма заявки) | 5–8 дней |
| Калькулятор с категориями, зависимостями, коэффициентами, передачей в CRM | 2–3 недели |
| Калькулятор с PDF-брифом, историей расчётов, A/B-тестами | 4–6 недель |
Ключевое правило: калькулятор не должен давать цену ниже реальной. Мы закладываем запас 20–30% сверху и объясняем это предварительной оценкой. Так вы получаете адекватные ожидания клиента и меньше пересогласований. Внедрение такого калькулятора может сэкономить значительные средства на каждом проекте за счёт сокращения пересогласований.
Наши калькуляторы прошли проверку на 50+ проектах — от веб-студий до крупных системных интеграторов. Получите консультацию и демонстрацию решения бесплатно. Свяжитесь с нами, чтобы обсудить ваш сценарий.
Типичные ошибки при разработке калькулятора
- Игнорирование обязательных блоков: без «Настройки сервера» для высоконагруженных проектов оценка занижается.
- Отсутствие проверки зависимостей: клиент выбирает «Интеграцию с 1С» без «Настройки обмена» — итоговая стоимость неверна.
- Забывают про кэширование: при большой нагрузке калькулятор тормозит. Мы используем тегированное кэширование результатов.







