Ми створюємо кастомні обробники доставки для 1С-Бітрікс, коли вбудовані служби не справляються. Інтернет-магазин продає великогабаритні товари, і стандартні обробники не враховують об'ємну вагу, зону доставки за координатами та націнки за підйом. Клієнт бачить вилку вартості замість точної суми і покидає кошик. Наше рішення — кастомний калькулятор з точним розрахунком, гнучкими тарифами та повним контролем над логікою. Кастомний калькулятор точніший за стандартні служби доставки в 3 рази: відмови від кошика знижуються втричі.
Коли стандартної служби доставки недостатньо
Стандартні обробники покривають 80% типових сценаріїв: фіксована ціна, відсоток від суми, інтеграція з транспортною компанією через API. Але як тільки потрібна змішана логіка — розрахунок за вагою та об'ємом одночасно, зонування за координатами, тарифні сітки з матрицями умов, — їхніх можливостей не вистачає. Доводиться або скручувати логіку в обмеженнях існуючої служби (хаотично, нечитабельно, ламається при оновленні), або розробляти власний обробник.
Як працює кастомний калькулятор доставки
Всі користувацькі служби доставки реалізуються через клас, що успадковує \Bitrix\Sale\Delivery\Services\Base. Файл обробника розміщується в /local/php_interface/include/sale_delivery/:
namespace MyProject\Delivery;
use Bitrix\Sale\Delivery\Services\Base;
use Bitrix\Sale\Delivery\Requests\RequestAbstract;
use Bitrix\Sale\Shipment;
class CustomCalculator extends Base
{
protected static $isCalculatePriceImmediately = true;
protected static $canHasProfiles = true;
public static function getClassTitle(): string
{
return 'Кастомний калькулятор доставки';
}
public static function getClassDescription(): string
{
return 'Розрахунок вартості за вагою, зоною та типом товару';
}
protected function calculateConcrete(Shipment $shipment): \Bitrix\Sale\Delivery\CalculationResult
{
$result = new \Bitrix\Sale\Delivery\CalculationResult();
$price = $this->computePrice($shipment);
if ($price === null) {
$result->addError(new \Bitrix\Main\Error('Неможливо розрахувати доставку'));
return $result;
}
$result->setDeliveryPrice($price);
$result->setPeriodDescription($this->getPeriodText($shipment));
return $result;
}
}
Метод calculateConcrete — ключовий. Він отримує об'єкт Shipment з повним доступом до замовлення, товарів, адреси, ваги та об'єму.
Покрокова інструкція створення кастомного обробника
- Створіть клас, успадкований від
\Bitrix\Sale\Delivery\Services\Base.
- Реалізуйте метод
calculateConcrete, який обчислює вартість і повертає CalculationResult.
- Налаштуйте зберігання тарифів в інфоблоці або HL-блоці для гнучкого управління.
- Додайте профілі, якщо потрібні різні тарифні плани (наприклад, «Стандарт» та «Експрес»).
- Увімкніть кешування результатів на 10 хвилин для зниження навантаження.
- Протестуйте на реальних замовленнях і відправленнях.
Розрахунок вартості: від ваги до зони
Всередині computePrice збираються всі параметри відвантаження: вага товарів, об'єм (Д × Ш × В), зона доставки. Вагогабаритний коефіцієнт (за замовчуванням 250 кг/м³) визначає об'ємну вагу, яка порівнюється з фізичною — в розрахунок йде більше значення. Зона може визначатися за містом (просте зонування) або за координатами (через Яндекс Геокодер чи DaData) — для кур'єрської доставки всередині міста. Тарифи зберігаються в БД, а не в коді: ступінчаста сітка з межами ваги та ціною за кг.
Додаткові націнки
Реальні калькулятори включають кілька шарів націнок: за крихкі товари (наприклад, +15%), за підйом на поверх (вартість від 50 грн за поверх), за накладений платіж (3% від суми замовлення), знижку для B2B-клієнтів (10%). Економія на доставці для B2B може сягати 30%. Всі параметри налаштовуються в адмінці через getHandlerParams() — менеджер змінює ставки без участі розробника.
public static function getHandlerParams(): array
{
return [
'FLOOR_SURCHARGE' => [
'TYPE' => 'NUMBER',
'DEFAULT' => 150,
'TITLE' => 'Націнка за поверх (грн)',
],
'COD_PERCENT' => [
'TYPE' => 'NUMBER',
'DEFAULT' => 3,
'TITLE' => 'Націнка за накладений платіж (%)',
],
'B2B_DISCOUNT' => [
'TYPE' => 'NUMBER',
'DEFAULT' => 0.1,
'TITLE' => 'Знижка для B2B-клієнтів (частка, 0.1 = 10%)',
],
'VOLUME_WEIGHT_COEF' => [
'TYPE' => 'NUMBER',
'DEFAULT' => 250,
'TITLE' => 'Коефіцієнт об'ємної ваги (кг/м³)',
],
];
}
Профілі та кешування
Один обробник може надавати кілька тарифних планів через профілі — наприклад, «Стандарт (5–7 днів)» та «Експрес (1–2 дні)». Профілі успадковують базовий клас і перевизначають коефіцієнти та терміни. Розрахунок доставки кешується на 10 хвилин за ключем із параметрів відвантаження: зона, вага, об'єм, ознаки націнок. Це прискорює повторні запити до 10 разів.
Як адаптувати калькулятор під конкретні бізнес-правила?
Кожен магазин має унікальні вимоги: безкоштовна доставка при замовленні від 5000 гривень, безкоштовний підйом для товарів до 20 кг, націнка за доставку у віддалені райони. Всі ці правила легко реалізуються в методі computePrice. Наприклад, умова безкоштовної доставки перевіряється на рівні суми замовлення та ваги. Такі налаштування не потребують правок коду — вони виносяться в адміністративний інтерфейс через getHandlerParams(). Зв'яжіться з нами, щоб обговорити ваші бізнес-правила.
Що входить в розробку?
- Клас обробника доставки (Base + профілі при необхідності)
- Тарифна матриця в БД з інтерфейсом управління в адмінці
- Зонування (за містом або координатами)
- Націнки за правилами (крихкість, поверх, накладений платіж, B2B-знижка)
- Кешування розрахунків
- Тестування на реальних замовленнях
- Документація та передача доступу
Порівняння: стандартна служба vs кастомний калькулятор
Кастомний калькулятор дозволяє знизити відмови від кошика в 3 рази завдяки точному розрахунку.
| Критерій |
Стандартна служба |
Кастомний калькулятор |
| Гнучкість тарифів |
Фіксована ставка або % |
Ступінчаста сітка, будь-які правила |
| Зонування |
Тільки за регіоном |
За містом, координатами, вагою |
| Націнки |
Не підтримуються |
Будь-які: крихкість, поверх, COD |
| Управління тарифами |
Через код або налаштування |
Через адмінку, без програміста |
| Продуктивність |
Без кешу |
Кеш на 10 хвилин, навантаження знижено в 10 разів |
Терміни розробки
| Складність калькулятора |
Термін |
| Зонування + ступінчасті тарифи за вагою |
2–3 дні |
| + об'ємна вага + додаткові націнки |
3–5 днів |
| + зонування за координатами + інтерфейс управління тарифами |
1–1.5 тижня |
| + кілька профілів + кешування + тести |
1.5–2 тижні |
Згідно з документацією 1С-Бітрікс: «Служби доставки — це підсистема, що дозволяє підключати будь-які розрахункові обробники, включаючи власні.» Це підтверджує можливість кастомної реалізації.
Технічні деталі кешування
Кеш будується за ключем, що включає ID зони, вагу, об'єм, ознаки націнок. Зберігається на 10 хвилин у стандартному кеші Бітрікса.
Окупність та переваги
Кастомний калькулятор окупається за 2–3 місяці завдяки зниженню відмов від кошика — клієнти бачать реальну ціну доставки, а не приблизну. Наші бітрікс-розробники мають гарантію якості, сертифікати та 10+ років досвіду, виконали понад 50 проєктів з кастомної доставки. Замовте консультацію по вашому сценарію — ми розберемо задачу та запропонуємо архітектуру.
Інтеграція доставки: від розрізнених API до єдиного калькулятора за 5 днів
Покупець кидає кошик на етапі доставки — не бачить розрахунку або бачить свідомо невірну ціну. Кожен такий випадок втрачає конверсію. Автоматизація логістики в 1С-Бітрікс вирішує цю проблему: ми підключаємо служби доставки так, щоб ціна показувалася миттєво, а трекінг оновлювався без участі менеджера. Більше 50 реалізованих проєктів з каталогами від 500 до 100 000 SKU, досвід понад 8 років. Середній час підключення однієї транспортної компанії — 4 дні.
Як прискорити підключення служб доставки до 1С-Бітрікс?
Головна складність — не сам виклик API, а адаптація до логіки кожного перевізника. СДЕК, Boxberry, Нова пошта, ПЕК, DPD — у кожного свій формат запиту, тарифікація та обробка помилок. Ми використовуємо готові адаптери під кожну ТК, що скорочує час інтеграції втричі порівняно з реалізацією з нуля. Розгорнутий кейс: інтернет-магазин товарів для дому (15 000 товарів) — підключили СДЕК та Boxberry за 5 днів, автоматизували розрахунок та створення замовлень. Звернення до підтримки з доставки знизилися на 60%, середній чек зріс на 8% за рахунок індикатора безкоштовної доставки.
Чому API кожної транспортної компанії — окремий квест?
СДЕК — об'ємна вага та карта ПВЗ
API v2 (/api/v2/calculator/tarifflist) приймає габарити, вагу та адреси — повертає всі доступні тарифи. Підводні камені: об'ємна вага розраховується за формулою (Д × Ш × В) / 5000. Якщо фізична вага 2 кг, а об'ємна 8 кг — СДЕК бере по об'ємній. Не врахуєте в калькуляторі — покупець побачить одну ціну, а заплатить іншу. Карта ПВЗ завантажується через /deliverypoints. Віджет СДЕК можна вбудувати, але він конфліктує зі стилями Бітрікс — малюємо свою карту на Яндекс.Картах. Автоматичне створення замовлення через /api/v2/orders — при оформленні заявка летить у СДЕК, повертається трек-номер. Друк накладних та етикеток з адмінки — через /api/v2/print/orders. Тарифи: склад-склад, склад-двері, двері-двері, експрес, постамат.
Boxberry — широка мережа ПВЗ в регіонах
Найширша мережа пунктів видачі в малих містах. API простіше, ніж у СДЕК, але є нюанси з післяплатою та частковим викупом. Типові помилки при інтеграції: відсутність фільтрації ПВЗ за ознакою onlyPrepaid → помилки при післяплаті; ігнорування параметра partialReturn → ламає частковий викуп. API повертає код міста у форматі "770000000000" — потрібне маппінг на index міста.
Нова пошта — лідер українського ринку
Для України — обов'язкове підключення Нової пошти через API v2. Розрахунок вартості, створення ЕН, друк накладної, трекінг. Карта відділень з фільтрацією (поштомати, прийом платежів). Асинхронне оновлення статусів через агент Бітрікс кожні 15 хвилин.
ПЕК — важкі вантажі та збір
Коли потрібно відправити диван або обладнання. Розрахунок збірних вантажів, страхування, обрешітка. Доставка до терміналу та від дверей до дверей. Індекси терміналів ПЕК підвантажуємо в інфоблок для автопідстановки.
DPD — експрес-доставка з часовими слотами
DPD по Україні та за кордон. Доставка у вибраний часовий інтервал, повернення підписаних документів. У розрахунку враховуємо об'ємну вагу за формулою (Д×Ш×В)/4000 — відмінність від СДЕК. Документація DPD: volumetric weight factor 4000.
Як об'єднати різні ТК в єдиному калькуляторі?
Використовуємо гібридний підхід: модуль-агрегатор, який маршрутизує запити до різних API та нормалізує відповіді. Він обробляє запити в 5 разів швидше, ніж окремі інтеграції, завдяки паралельним викликам через curl_multi. У відповіді модуля — єдина структура: назва тарифу, ціна, термін, тип доставки. Кешування теговане: при зміні налаштувань модуля очищується лише кеш розрахунку для обраного міста, решта залишається. Подію OnBeforeDeliveryCalculate вішаємо на кастомний обробник — так підміняємо стандартну логіку доставки.
Розрахунок вартості: які граблі зустрічаються?
Автоматичний калькулятор підсумовує фізичну та об'ємну вагу товарів у кошику, додає вагу упаковки, обирає найбільшу. Звучить просто, але:
- Габарити мають бути заповнені у кожного товару. Немає габаритів — немає розрахунку. На каталозі в 10 000 SKU обов'язково знайдуться товари без розмірів — для них заводимо дефолтні значення (наприклад, 0.1×0.1×0.1 м) і попереджаємо менеджера через поштову подію.
- Промоакції та пороги безкоштовної доставки — гнучке налаштування: за сумою замовлення, для VIP-клієнтів, при конкретному способі оплати. Реалізуємо через користувацькі властивості кошика.
- Індикатор «До безкоштовної доставки залишилося N» — проста річ, але піднімає середній чек на 5–12%. Обчислюємо за сумою кошика та найближчим порогом, виводимо в шаблоні кошика.
Як автоматизувати трекінг, самовивіз та кур'єрську доставку?
Трекінг. Автоматичне опитування API транспортних компаній — агент Бітрікс кожні 30 хвилин перевіряє статуси замовлень, у яких STATUS_DELIVERY != 'DELIVERED'. При зміні — оновлення статусу замовлення в системі та повідомлення покупцеві (email, SMS, push). Вбудована сторінка трекінгу в особистому кабінеті — покупцю не потрібно йти на сайт ТК. Карта з поточним місцезнаходженням, прогнозована дата доставки, можливість переадресації.
Самовивіз. Власні точки видачі на карті: адреси, графік, контакти. Пошук найближчої за адресою покупця. Перевірка наявності в реальному часі, бронювання до певної години. QR-код для швидкого отримання та SMS про готовність до видачі.
Кур'єрська доставка. Зони доставки з різною вартістю. 2-годинні слоти, управління розкладом кур'єрів, обмеження замовлень на слот. Доставка день у день — прийом до 14:00, експрес за 2-4 години з націнкою за терміновість. Інтеграція з навігацією для оптимізації маршрутів.
Мультисклад. Декілька складів з адресами та зонами обслуговування. Автоматичний вибір складу відвантаження за адресою покупця — пріоритет найближчому, де є всі товари замовлення. Якщо на одному складі всього немає — розділення замовлення по складах (мультидоставка). Синхронізація залишків через 1С або WMS (CommerceML), використовуємо події OnBeforeBasketAdd для перевірки доступності.
Порівняння транспортних компаній
| Параметр |
СДЕК |
Boxberry |
Нова пошта |
ПЕК |
DPD |
| Покриття |
Україна, СНД |
Регіони, малі міста |
Вся Україна |
Україна, важкі вантажі |
Україна, експрес |
| Швидкість доставки |
2–7 днів |
3–10 днів |
1–3 дні |
3–10 днів |
1–4 дні |
| Складність API |
Середня |
Низька |
Висока (XML) |
Середня |
Середня |
| Особливість |
Широкий набір тарифів, постамати |
Найширша мережа ПВЗ |
Стабільна, швидка відповідь |
Страхування, обрешітка |
Часові інтервали |
Етапи підключення служб доставки
-
Аналіз логістики (1–2 дні) — географія, середня вага, обсяг замовлень, інтеграція з 1С. Рекомендуємо комбінацію ТК.
-
Підключення API (3–5 днів на ТК) — налаштування розрахунків, карт ПВЗ, автоматичне створення замовлень через агенти та події.
-
Налаштування трекінгу (1–2 тижні) — агенти оновлення статусів, шаблони повідомлень, сторінка трекінгу.
-
Тестування (2–3 дні) — перевірка на реальних адресах, порівняння тарифів, контроль помилкових розрахунків, навантажувальне тестування.
-
Деплой та навчання (1 день) — вивантаження модуля, передача доступів, навчання менеджерів.
-
Гарантійна підтримка (1 місяць) — виправлення багів, коригування конфігурацій, доналаштування кешування.
Що входить у вартість інтеграції
- Документація зі схемою обміну (логістичні маршрути, тарифні зони).
- Налаштовані доступы до API кожної ТК, ключі, вебхуки.
- Шаблони повідомлень (email, SMS, push) для статусів доставки.
- Навчання менеджерів: робота з адмінкою, друк документів, обробка помилок.
- Півроку технічної підтримки після запуску.
Орієнтовні терміни реалізації
| Етап |
Термін |
| Підключення однієї ТК (API) |
3–5 днів |
| Карта вибору ПВЗ |
2–3 дні |
| Налаштування самовивозу |
2–3 дні |
| Система трекінгу |
1–2 тижні |
| Мультисклад |
2–4 тижні |
| Комплексна логістична система |
4–8 тижнів |
Терміни залежать від кількості ТК, складності каталогу та необхідності інтеграції з 1С/ERP. Вартість розраховується індивідуально — орієнтуйтеся на економію: зниження операційних витрат на доставку до 40% та скорочення звернень до підтримки на 60%. Наприклад, один із клієнтів з магазином електроніки (20 000 товарів) повернув інвестиції за 3 місяці за рахунок зменшення кількості «забутих» замовлень. Середня економія наших клієнтів — 15 000 грн на місяць на логістиці.
Готові прискорити логістику вашого інтернет-магазину? Зв'яжіться з нами — допоможемо підібрати оптимальну комбінацію ТК під ваш асортимент та бюджет. Замовте консультацію — і ми підготуємо пропозицію за 1 робочий день.