Калькулятор стоимости проекта на Битрикс: зависимости и срочность

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Калькулятор стоимости проекта на Битрикс: зависимости и срочность
Средний
~1-2 недели
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1330
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    924
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    672
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    815
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    714
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1051

Представьте: клиент заполняет форму, выбирает «Интеграция с 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-блокам подтверждает правильность модели данных.

Как происходит разработка калькулятора?

  1. Анализ бизнес-логики: собираем список блоков, зависимостей, коэффициентов.
  2. Проектирование HL-блока: создаём инфраструктуру хранения данных.
  3. Реализация ядра calc: PHP-класс с методами расчёта и разрешения зависимостей.
  4. Интеграция с CRM: REST API передаёт бриф в Битрикс24 или amoCRM.
  5. Интерфейс и UX: настраиваем чекбоксы с подсказками и динамический итог.
  6. Тестирование: проверяем на реальных сценариях и пограничных случаях.

Что входит в разработку калькулятора?

Каждый проект включает:

  • Проектирование структуры блоков и зависимостей
  • Реализацию 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С» без «Настройки обмена» — итоговая стоимость неверна.
  • Забывают про кэширование: при большой нагрузке калькулятор тормозит. Мы используем тегированное кэширование результатов.