Точный расчёт доставки в 1С-Битрикс: кастомное решение

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

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

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

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

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1322
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    915
  • 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
    663
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    811
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    710
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1044

Мы создаём кастомные обработчики доставки для 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 с полным доступом к заказу, товарам, адресу, весу и объёму.

Пошаговая инструкция создания кастомного обработчика

  1. Создайте класс, унаследованный от \Bitrix\Sale\Delivery\Services\Base.
  2. Реализуйте метод calculateConcrete, который вычисляет стоимость и возвращает CalculationResult.
  3. Настройте хранение тарифов в инфоблоке или HL-блоке для гибкого управления.
  4. Добавьте профили, если нужны разные тарифные планы (например, «Стандарт» и «Экспресс»).
  5. Включите кеширование результатов на 10 минут для снижения нагрузки.
  6. Протестируйте на реальных заказах и отправках.

Расчёт стоимости: от веса к зоне

Внутри computePrice собираются все параметры отгрузки: вес товаров, объём (Д × Ш × В), зона доставки. Весогабаритный коэффициент (по умолчанию 250 кг/м³) определяет объёмный вес, который сравнивается с физическим — в расчёт идёт бо́льшее значение. Зона может определяться по городу (простое зонирование) или по координатам (через Яндекс Геокодер или DaData) — для курьерской доставки внутри города. Тарифы хранятся в БД, а не в коде: ступенчатая сетка с границами веса и ценой за кг.

Дополнительные наценки

Реальные калькуляторы включают несколько слоёв наценок: за хрупкие товары (например, +15%), за подъём на этаж (150 руб за каждый этаж после первого), за наложенный платёж (3% от суммы заказа), скидку для B2B-клиентов (10%). Все параметры настраиваются в админке через 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С-Битрикс: «Службы доставки — это подсистема, позволяющая подключать любые расчётные обработчики, включая собственные.» Это подтверждает возможность кастомной реализации.

Окупаемость и преимущества

Кастомный калькулятор окупается за 2–3 месяца за счёт снижения отказов от корзины — клиенты видят реальную цену доставки, а не приблизительную. Вы не зависите от обновлений модуля или стороннего сервиса. Наши битрикс-разработчики имеют сертификаты и 10+ лет опыта, выполнили более 50 проектов по кастомной доставке. Закажите консультацию по вашему сценарию — мы разберём задачу и предложим архитектуру.