БесплатноБесплатный аудит сайта и кода на 1С-Битрикс при заказе доработки или поддержки

Расчёт стоимости доставки прямо в корзине: как реализовать

Предварительный расчёт стоимости доставки в корзине магазина на 1С-Битрикс: зоны, вес, службы доставки

Покупатель сложил корзину, увидел сумму товаров — и застыл. «А доставка сколько?» Он не хочет проходить три шага оформления, вводить телефон и адрес только ради того, чтобы узнать финальную цену. Часть таких посетителей просто закрывает вкладку: неизвестная стоимость доставки — одна из самых частых причин брошенных корзин. Особенно болезненно это для крупногабаритных и тяжёлых товаров, где доставка ощутимо влияет на итог.

Эта статья — о том, как показать стоимость доставки прямо в корзине магазина на 1С-Битрикс: как устроен модуль «Интернет-магазин» и службы доставки, чем точный расчёт отличается от честного ориентира, как считать вес и зоны, аккуратно работать с внешними API транспортных компаний и не замедлить корзину. По ходу — практика с реальных проектов и связка с автоматизацией продаж и склада на 1С, откуда приходят вес, остатки и склады отгрузки.

Коротко

  • В штатной логике доставка считается на оформлении; в корзине разворачивают упрощённый предварительный расчёт по городу, весу и сумме.
  • Чаще честнее показывать ориентир («от N рублей», «бесплатно от X»), а точную цену фиксировать на оформлении, где есть полный адрес.
  • Внешние API транспортных компаний нельзя дёргать на каждый рендер — нужен кэш по ключу «город + вес + сумма» и запасной тариф.
  • Вес, габариты, склад отгрузки и признак крупногабаритности должны приходить обменом из 1С — иначе расчёт врёт.

Зачем показывать доставку до оформления

Неизвестная стоимость доставки — это скрытая цена, а покупатели не любят сюрпризов в конце воронки. Когда итоговая сумма всплывает только на последнем шаге, часть людей воспринимает это как «навязывание» и уходит. Показанная заранее доставка работает наоборот: она снимает тревогу, делает цену предсказуемой и повышает готовность оформить заказ.

Есть и второй эффект — управление средним чеком. Если в корзине видно, что до бесплатной доставки не хватает немного, покупатель охотнее добирает товар. То есть предварительный расчёт доставки — это не только про удобство, но и про деньги: меньше брошенных корзин и выше сумма заказа.

Кому это особенно важно

Как устроена доставка в 1С-Битрикс

В 1С-Битрикс за доставку отвечает модуль «Интернет-магазин»: есть сущность «службы доставки», у каждой — свои настройки, ограничения и обработчик расчёта. Служба может быть простой (фиксированная ставка, ставка по весу, по сумме) или подключаться к внешней транспортной компании через модуль или REST-обработчик. Расчёт цены доставки штатно происходит в контексте объекта заказа (sale.order): системе нужны товары, местоположение и выбранный способ получения.

Ключевое ограничение и есть корень задачи: корзина — это ещё не заказ. Пока покупатель не перешёл к оформлению, нет ни местоположения, ни выбранной службы, поэтому штатно доставке «нечего» считать. Чтобы показать цену в корзине, мы фактически запускаем тот же расчётный механизм заранее — с минимальным набором данных (город + состав корзины) — и показываем предварительный результат.

Главный принцип: корзина и оформление должны считать доставку одной и той же логикой. Если предварительный расчёт использует одни правила, а финальный — другие, покупатель поймает расхождение и перестанет доверять цифрам.
Путь заказа: от расчёта доставки до трек-номера Заказадрес, весРасчётСДЭК, Почта, ПВЗСборкакомплектацияОтгрузкапередача службеТрекстатусы клиенту
Схема: по адресу и весу считается доставка (СДЭК, Почта, ПВЗ), заказ собирают и отгружают перевозчику, а покупатель отслеживает статусы по трек-номеру.

Точный расчёт или ориентир: что честнее

Соблазн — показать в корзине точную цену до рубля. Но точность требует данных, которых в корзине обычно нет: полного адреса, индекса, габаритов каждого места. Поэтому у вас два честных пути.

ПодходЧто показываемКогда уместно
Ориентир«от N рублей», вилка по городу, «бесплатно от X»Много служб, сложные тарифы, нет адреса
Расчёт по городуЦена по выбранному городу и способу полученияПокупатель указал город в корзине
Точная ценаФинальный тариф по адресу и габаритамШаг оформления, есть полный адрес

На практике лучший компромисс — ориентир в корзине плюс уточнение по городу, а точная цена — на оформлении. Это честно: вы не обещаете того, что не можете гарантировать без адреса, но и не оставляете покупателя в неведении. Главное правило — предварительная цена никогда не должна оказаться ниже финальной, иначе клиент почувствует себя обманутым.

Что нужно для расчёта: город, вес, габариты

Даже упрощённый расчёт опирается на конкретные данные. Минимальный набор для предварительной оценки в корзине:

Слабое звено почти всегда — качество данных о товаре. Если вес и упаковка в карточке пустые или взяты «на глаз», любой расчёт будет неточным. Поэтому предварительный расчёт доставки начинается не с фронтенда, а с чистых данных в каталоге, которые приходят из учётной системы. Навести порядок в этих полях помогает аудит и оптимизация 1С.

Зоны доставки и способы получения

Тариф почти всегда зависит от зоны — группы местоположений с общими правилами. В 1С-Битрикс местоположения и их группировка задаются в настройках, а службы доставки привязываются к зонам с разными ставками. Типовые способы получения тоже считаются по-разному:

В корзине разумно показывать не одну цифру, а короткий список доступных способов с ориентировочной ценой: курьер — от N, самовывоз — бесплатно, в регион — от M. Так покупатель сразу видит самый выгодный для себя вариант и реже уходит из-за «дорогой доставки», которая на деле была лишь одним из способов.

Внешние API транспортных компаний

Для доставки в регионы обычно подключают внешние сервисы: СДЭК, Почту России, Boxberry, транспортные компании. Расчёт идёт через их API или готовые модули из Маркетплейса. Здесь начинается самая тонкая инженерная часть, потому что внешний сервис — это чужая скорость и чужая надёжность.

Что важно учитывать при работе с внешними API:

Технически расчёт удобно вынести в отдельный серверный обработчик, который сам ходит во внешние API, кэширует и возвращает корзине готовый результат по AJAX. Как правильно и безопасно строить такие интеграции, мы разбираем в статье про REST, вебхуки и безопасность в Битрикс, а сложную бизнес-логику расчёта закрываем услугой автоматизации на 1С.

Кэш и производительность расчёта

Корзина открывается и пересчитывается часто, а внешние вызовы дороги. Если считать доставку синхронно на каждый рендер, страница будет тормозить, а лимиты API — быстро заканчиваться. Поэтому расчёт строят вокруг кэша и асинхронности.

  1. Кэшируйте по ключу. Ключ кэша — «город + округлённый вес + диапазон суммы + способ». Один и тот же расчёт не повторяется десятки раз.
  2. Считайте асинхронно. Цена доставки подгружается AJAX-запросом после выбора города, а не блокирует загрузку корзины.
  3. Держите TTL разумным. Тарифы меняются нечасто — кэш на несколько часов снимает нагрузку без риска устаревания.
  4. Готовьте запасной путь. Если API не ответило за таймаут — отдавайте базовый тариф зоны, а не ошибку.

Скорость корзины в целом зависит и от инфраструктуры: где живёт кэш, как настроен веб-сервер, хватает ли ресурсов под пики. Эти вопросы мы разбираем в материале про хостинг и инфраструктуру BitrixVM — на слабом сервере даже идеально написанный расчёт будет казаться медленным.

Бесплатная доставка от суммы в корзине

Порог бесплатной доставки — сильный конверсионный инструмент, и его логичнее всего показывать именно в корзине. Если до бесплатной доставки не хватает суммы, покажите прогресс: «до бесплатной доставки осталось 800 ₽». Это мягко подталкивает добрать товар и поднимает средний чек без скидок.

Несколько правил, чтобы приём работал честно:

Данные из 1С: вес, склад, упаковка

Качество расчёта доставки напрямую зависит от того, что приходит на сайт из учётной системы. Вес, габариты, признак крупногабаритности, склад отгрузки и остатки формируются в 1С и передаются обменом. Если эти поля пустые или неактуальные, никакой алгоритм в корзине не спасёт.

Что стоит держать под контролем на стороне 1С и обмена:

Наведение порядка в этих данных — это работа не столько по сайту, сколько по учёту. Мы решаем её услугой автоматизации продаж и склада на 1С: чистые остатки, корректные веса и склады отгрузки делают предварительный расчёт в корзине точным.

Реализация в корзине пошагово

Названия настроек зависят от редакции и шаблона, но общая последовательность внедрения такова:

  1. Проверьте данные товара. Вес, габариты и склад отгрузки заполнены и приходят обменом из 1С.
  2. Настройте службы и зоны. Способы получения, местоположения и тарифы описаны в модуле «Интернет-магазин».
  3. Сделайте предрасчёт. В корзине по городу и весу вызывайте расчёт служб доставки и показывайте ориентир или цену по способам.
  4. Вынесите внешние API на бэкенд. Запросы к транспортным компаниям идут с сервера, с кэшем и таймаутами.
  5. Добавьте порог бесплатной доставки. Прогресс-индикатор «осталось добрать» из тех же правил, что и на оформлении.
  6. Синхронизируйте с оформлением. Убедитесь, что корзина и sale.order считают доставку одинаково.
  7. Протестируйте на реальных данных. Разные города, вес, крупногабарит, падение API — везде корректный и не завышенный ответ.

Чтобы такие изменения выкатывались без риска для боевой корзины, полезно иметь настроенный процесс деплоя. Как выстроить безопасную выкладку правок, мы описали в статье про CI/CD и деплой в Битрикс.

Частые ошибки

Чек-лист внедрения

  1. Данные товара чистые. Вес, габариты, склад и признак крупногабарита приходят из 1С и актуальны.
  2. Службы и зоны настроены. Способы получения и тарифы описаны в модуле «Интернет-магазин».
  3. Предрасчёт в корзине работает. По городу и весу показывается ориентир или цена по способам.
  4. Внешние API на бэкенде. Кэш по ключу, таймауты, запасной тариф, ключи на сервере.
  5. Порог бесплатной доставки виден. Прогресс-индикатор согласован с правилами оформления.
  6. Корзина и оформление совпадают. Единая логика расчёта, предварительная цена не ниже финальной.
  7. Протестировано на пиках и сбоях. Разные города, вес, падение API — корректный ответ и стабильная скорость.

Вывод

Расчёт доставки в корзине — это прежде всего борьба с брошенными заказами. Покупатель хочет понимать итоговую цену до того, как введёт телефон и адрес, и честный ориентир по городу снимает главную тревогу. Технически задача сводится к тому, чтобы запустить штатную логику служб доставки заранее, аккуратно поработать с внешними API через кэш и запасные тарифы и не дать корзине затормозить.

Но фундамент — данные: вес, габариты, склады и остатки из 1С. Наведите порядок в учёте, синхронизируйте правила корзины и оформления — и предварительный расчёт доставки превратится из источника ошибок в инструмент, который снижает отказы и поднимает средний чек.

Частые вопросы

Почему стоимость доставки в 1С-Битрикс обычно считается только на шаге оформления?

В штатной логике модуля «Интернет-магазин» доставка привязана к объекту заказа: пока не создан заказ и не указаны хотя бы город и способ получения, службам доставки нечего считать. Корзина же — это просто набор товаров без адреса. Поэтому по умолчанию цена доставки появляется на шаге оформления. Чтобы показать её раньше, в корзине разворачивают упрощённый предварительный расчёт: берут вес и сумму корзины, спрашивают город и прогоняют через те же службы доставки, что и на оформлении.

Можно ли показать точную цену доставки прямо в корзине?

Точную — далеко не всегда, и это нормально. В корзине обычно нет полного адреса, а транспортные компании считают тариф по индексу, габаритам и весу каждого места. Поэтому в корзине честнее показывать ориентир: «от N рублей», «бесплатно от суммы X» или вилку по выбранному городу. Точная цена фиксируется на оформлении, когда известны адрес и способ получения. Ориентир снимает главную тревогу покупателя — «а сколько всего», — не обещая того, что нельзя гарантировать.

Как рассчитать вес и габариты корзины для служб доставки?

Вес берётся из свойства товара (в 1С-Битрикс у товара есть поле веса), суммируется по позициям с учётом количества. Габариты — сложнее: у отдельных товаров есть размеры, но собрать из них объём коробки автоматически трудно. На практике используют упрощение: расчётный вес плюс усреднённый объём, а для крупногабаритных позиций — отдельные правила. Данные о весе и упаковке должны приходить обменом из 1С, иначе расчёт будет опираться на пустые поля и врать.

Как не замедлить корзину внешними запросами к API транспортных компаний?

Внешние API (СДЭК, Почта России, Boxberry и другие) отвечают за сотни миллисекунд, а иногда таймаутят. Дёргать их на каждый рендер корзины нельзя. Решение — кэшировать результат по ключу «город + вес + сумма» на несколько часов, считать асинхронно (AJAX после выбора города, а не при загрузке страницы) и всегда иметь запасной тариф, если API недоступно. Тогда корзина остаётся быстрой, а расчёт не блокирует интерфейс.

Что показывать, если API службы доставки не ответило?

Никогда не показывайте пустоту или ошибку — это ломает доверие к корзине. Держите запасной сценарий: базовый тариф по зоне, сообщение «уточним при оформлении» или фиксированную ставку для города. Логируйте сбои, чтобы видеть, как часто внешний сервис падает, и при систематических проблемах подключайте резервную службу. Покупатель не должен страдать от того, что чужой API временно недоступен.

Нужно ли учитывать бесплатную доставку от суммы прямо в корзине?

Да, и это один из сильнейших конверсионных приёмов. Если до бесплатной доставки не хватает, скажем, 800 рублей, покажите это в корзине: «добавьте товаров на 800 рублей и доставим бесплатно». Такой прогресс-индикатор поднимает средний чек. Логика порога должна совпадать с правилами скидок и настройками служб доставки, чтобы обещание в корзине не разошлось с реальной ценой на оформлении.

Как связать расчёт доставки в корзине с 1С и складами?

Вес, габариты, склад отгрузки и признак «крупногабаритный» приходят на сайт обменом с 1С. Если у вас несколько складов, тариф зависит от того, откуда едет товар, поэтому расчёт в корзине должен знать склад отгрузки для позиции. Это уже вопрос архитектуры обмена и автоматизации: чем чище данные о товаре и остатках в 1С, тем точнее предварительный расчёт в корзине.

Стоит ли писать свой калькулятор доставки или хватит штатных служб?

Начинать почти всегда стоит со штатных служб доставки и модулей транспортных компаний — они закрывают типовые сценарии. Своя логика нужна, когда есть нестандартные правила: смешанные зоны, доставка с разных складов, сложная кратность и упаковка, собственная логистика. Тогда поверх штатного механизма пишут свой обработчик расчёта, но опираются на те же объекты заказа и службы, чтобы корзина и оформление считали одинаково.

Поделиться:

Хотите показывать доставку в корзине без тормозов и ошибок?

Подключим службы доставки, предварительный расчёт по городу, пороги бесплатной доставки и обмен весом и складами с 1С. Рассчитаем работу по вашему магазину.

Игорь Воскресенский

Команда B2Bsite. С 2014 года разрабатываем интернет-магазины и порталы на 1С-Битрикс: настраиваем службы доставки, расчёт в корзине и обмен весом, остатками и складами с 1С.

← Все статьи блога