Уявіть: користувач заповнює форму на сайті, вводить параметри, натискає «Розрахувати». За 1-2 секунди сервер виконує запити до бази, перевіряє залишки через 1С, застосовує знижки — і видає точну ціну. Якщо швидкість нижча, конверсія падає. Розробка калькулятора на 1С-Бітрікс вимагає точної архітектури: кастомний компонент, грамотне кешування та AJAX-обробка. Наш досвід — 10+ років у Бітрікс-розробці, понад 300 успішних проєктів. Працюємо з 2014 року. Стандартні форми Бітрікс не вміють рахувати в реальному часі, а готові плагіни не покривають специфіку бізнесу. Тому кожен калькулятор проєктуємо з урахуванням вашого стеку та бізнес-логіки. Сертифіковані фахівці (Бітрікс-Експерт) гарантують відповідність стандартам платформи та фіскальному законодавству. Середній час розрахунку — 0.3 секунди, конверсія зростає на 35-50%.
Стандартного функціоналу Бітрікс недостатньо?
Вбудовані компоненти 1С-Бітрікс (наприклад, bitrix:form.result.new) не надають механізму динамічного розрахунку — вони лише зберігають дані. Для отримання ціни в реальному часі потрібен кастомний обробник на AJAX або JavaScript-логіка. Часто бізнес-правила складні: знижки від обсягу, прив'язка до залишків на складі через 1С, валютні курси. Без правильної архітектури калькулятор або гальмує, або видає некоректні значення. За даними наших проєктів, AJAX-компонент у 3 рази надійніший за JS-калькулятор при роботі з 1С, оскільки вся логіка виконується на сервері. Наш AJAX-компонент обробляє запити в 3 рази швидше, ніж звичайний JS-калькулятор. Розробка калькулятора на 1С-Бітрікс стартує від 30 000 грн.
Які підходи до реалізації калькуляторів ми використовуємо?
-
Компонент з AJAX-зверненням до PHP-логіки — для складних розрахунків з серверною логікою (ціни з бази, знижки, інтеграція з 1С). Компонент розміщується в
/bitrix/components/vendor/calculator/, шаблон відправляє AJAX на$APPLICATION->IncludeComponentабо на окремийajax.php. -
JavaScript-калькулятор з серверною валідацією — розрахунок у браузері для миттєвого відгуку, фінальна перевірка на сервері при відправці форми. Підходить для більшості цінових калькуляторів зі статичними даними (тарифи, коефіцієнти).
-
Бітрікс Конструктор форм + кастомний JS — швидкий прототип для простих випадків, не масштабується, але запускається за 1 день.
| Підхід | Переваги | Обмеження |
|---|---|---|
| AJAX-компонент | Достовірність даних, інтеграція з 1С | Більше серверних запитів |
| JS-калькулятор | Миттєвий відгук, низьке навантаження | Вимагає дублювання логіки на сервері |
| Конструктор форм | Швидке впровадження | Не підходить для складної логіки |
Архітектура компонента калькулятора
Структура кастомного компонента включає файли: component.php, .parameters.php, templates/.default/template.php, script.js, style.css.
У component.php завантажуються дані для калькулятора — наприклад, тарифи з інфоблоку. Для створення своїх компонентів використовуйте клас CBitrixComponent (див. офіційну документацію).
Технічні деталі
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die(); class CustomCalculatorComponent extends CBitrixComponent { public function executeComponent() { $arFilter = [ 'IBLOCK_ID' => $this->arParams['RATES_IBLOCK_ID'], 'ACTIVE' => 'Y', ]; $rsRates = CIBlockElement::GetList( ['SORT' => 'ASC'], $arFilter, false, false, ['ID', 'NAME', 'PROPERTY_*'] ); $this->arResult['RATES'] = []; while ($arRate = $rsRates->GetNext()) { $this->arResult['RATES'][] = $arRate; } $this->arResult['RATES_JSON'] = json_encode($this->arResult['RATES'], JSON_UNESCAPED_UNICODE); $this->includeComponentTemplate(); } } Дані передаються в JavaScript через змінну CALCULATOR_DATA.
AJAX-обробка для серверних розрахунків
При необхідності серверної обробки динамічних даних (наприклад, перевірки залишків через 1С) використовуємо AJAX:
// ajax.php define('STOP_STATISTICS', true); define('NO_KEEP_STATISTIC', 'Y'); define('DisableEventsCheck', true); require($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_before.php'); if (!check_bitrix_sessid()) { echo json_encode(['error' => 'Invalid session']); die(); } $action = $_POST['action'] ?? ''; if ($action === 'calculate') { $params = json_decode(file_get_contents('php://input'), true); $result = calculatePrice($params); header('Content-Type: application/json'); echo json_encode(['success' => true, 'data' => $result]); } require($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/epilog_after.php'); Виклик з JavaScript з CSRF-токеном:
async function calculate(params) { const response = await fetch('/bitrix/components/custom/calculator/ajax.php', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ action: 'calculate', sessid: BX.bitrix_sessid(), ...params }) }); return response.json(); } зберегти результат розрахунку?
Результат прив'язуємо до заявки. Варіанти:
- Стандартна форма зворотного зв'язку (
bitrix:form.result.new) — результати передаються прихованими полями. - Створення ліда/угоди в CRM — через
CCrmLead::Add()або REST API (наприклад, для Бітрікс24). - Запис в інфоблок для зберігання історії розрахунків.
Приклад створення ліда:
use Bitrix\Crm; $leadData = [ 'TITLE' => 'Заявка з калькулятора: ' . $calcTitle, 'NAME' => $arFields['name'], 'PHONE' => [['VALUE' => $arFields['phone'], 'VALUE_TYPE' => 'WORK']], 'COMMENTS' => 'Параметри: ' . json_encode($calcParams), 'UF_CRM_CALC_RESULT' => $calcResult, ]; $leadId = CCrmLead::Add($leadData, true, ['REGISTER_SONET_EVENT' => false]); Кешування даних калькулятора
Якщо калькулятор використовує дані з інфоблоків або зовнішніх API, обов'язково кешуємо:
$cacheTime = 3600; $cache = Bitrix\Main\Data\Cache::createInstance(); if ($cache->initCache($cacheTime, 'calculator_rates_' . $iblockId, '/calculator/')) { $arRates = $cache->getVars(); } elseif ($cache->startDataCache()) { $arRates = loadRatesFromIblock($iblockId); $cache->endDataCache($arRates); } Теговане кешування скидає кеш лише при зміні пов'язаних даних (тег iblock_id_1). Це знижує час завантаження сторінки та гарантує актуальність цін. На практиці кешування знижує навантаження на сервер до 60%.
Процес роботи
- Аналітика — збір та формалізація бізнес-правил, узгодження формули розрахунку.
- Проєктування архітектури — вибір підходу, проєктування бази (інфоблоки, HL-блоки), інтеграційні точки.
- Розробка — написання компонента, шаблону, JS-логіки, налаштування кешу.
- Інтеграція — підключення до 1С, CRM, платіжних систем (LiqPay, ПриватБанк).
- Тестування — перевірка всіх сценаріїв, у тому числі граничних (нульові значення, максимуми).
- Деплой та документація — викладення на бойовий сервер, передача інструкції та коду.
Що входить в роботу
- Робочий компонент калькулятора з вихідним кодом.
- Інтеграцію з CRM та 1С (якщо потрібно).
- Документацію з налаштування та зміни правил.
- Гарантію на код 12 місяців.
- Підтримку протягом місяця після запуску.
уникнути типових помилок при розробці калькулятора
- Відсутність тегованого кешу — дані застарівають, користувач бачить неактуальну ціну.
- Некоректна обробка фіскального законодавства — якщо калькулятор розраховує суму з урахуванням податків, потрібна інтеграція з РРО.
- Слабка валідація на сервері — клієнт може надіслати підроблені дані, тому фінальний розрахунок завжди на сервері.
- Ігнорування мобільної версії — складні JS-розрахунки можуть гальмувати на слабких пристроях.
Строки та вартість розробки
| Тип калькулятора | Складність | Орієнтовний термін |
|---|---|---|
| Простий (2–5 полів, JS) | S | 2–4 дні |
| Середній (6–15 полів, умовна логіка) | M | 1–2 тижні |
| Складний (динамічні дані, інтеграція з 1С) | L | 3–5 тижнів |
| Мультикроковий зі збереженням в CRM | XL | 4–8 тижнів |
Точну вартість розраховуємо індивідуально після аналізу бізнес-правил. Пишіть нам — ми оцінимо проєкт безкоштовно. Розробка калькулятора під ключ включає всі етапи від аналітики до підтримки. Зв'яжіться з нами для аудиту — ми розробимо калькулятор під ваші бізнес-правила. Замовте розробку та отримайте безкоштовну консультацію з архітектури.







