Настраиваю доставку в Битриксе на проектах регулярно, и почти всегда клиент приходит с одной и той же жалобой: калькулятор в корзине то обнуляет стоимость, то выдаёт космическую сумму за килограммовую коробку, а служба, которая должна работать только по Москве, вылезает в списке для покупателя из Владивостока. Модуль доставки в 1С-Битрикс закрывает большинство таких сценариев штатными средствами: свои службы доставки, зоны по местоположению, расчёт по весу через профили и ограничения по сумме заказа. Разберу, из чего состоит модуль, как настроить зоны и вес без программиста, и где штатной логики уже не хватает.
Как устроен модуль доставки в 1С-Битрикс
Настройки лежат в административной панели, в разделе Контент - Интернет-магазин - Доставка. Там два ключевых справочника: «Службы доставки» и «Профили». Служба доставки это сущность с названием, логотипом, сортировкой и обработчиком расчёта стоимости. Обработчик определяет, как считается цена: фиксированная сумма, зависимость от суммы заказа, зависимость от веса или произвольный профиль с таблицей условий.
К каждой службе можно привязать ограничения: по весу заказа, по сумме, по местоположению доставки и по способу оплаты. Если ограничение не выполняется, служба просто не показывается покупателю в корзине - это избавляет от ситуации, когда курьер из соседнего региона предлагает довезти заказ на другой конец страны за смешную сумму.
Готовые службы и коннекторы к перевозчикам
Из коробки в модуле есть базовые типы расчёта: фиксированная стоимость и собственная служба, которую настраиваете вручную под свои тарифы. Для реальных перевозчиков, таких как СДЭК, Boxberry, Почта России или Яндекс Доставка, используются модули-коннекторы из Маркетплейса Битрикса. Они подтягивают тарифы и сроки по API самого перевозчика, а не по статичной таблице, поэтому стоимость в корзине совпадает с тем, что покажет личный кабинет курьерской службы.
На одном из проектов с мебельным интернет-магазином ставил коннектор СДЭК поверх уже настроенных вручную зон: для крупногабаритных заказов вроде диванов и шкафов тарифы СДЭК не годились по габаритам, поэтому крупногабарит считался отдельной службой с фиксированной ценой по городу, а мелочь вроде фурнитуры и декора уходила через СДЭК с расчётом по реальному весу.
| Тип расчёта | От чего зависит цена | Когда использовать |
|---|---|---|
| Фиксированная стоимость | Не зависит от параметров заказа | Один город, свой курьер с постоянным тарифом |
| По сумме заказа | Итоговая сумма корзины | Порог бесплатной доставки, мотивация докупить товар |
| По весу заказа | Суммарный вес позиций в корзине | Товары с разным весом: от аксессуаров до мебели |
| Профиль (таблица условий) | Комбинация веса, суммы и зоны | Сложная логика, несколько тарифных сеток |
Бесплатный материал
🎁 Полезный скрипт в подарок
Подпишитесь на Telegram - пришлю готовый скрипт по этой теме.
Без спама. Отписка в 1 клик.
Зоны доставки: настройка по регионам и городам
За привязку служб к территории отвечает справочник «Местоположения»: в нём страны, регионы, города и группы местоположений. Каждой службе или профилю можно назначить, где она вообще видна: только Москва и область, только города-миллионники, вся Россия кроме Дальнего Востока и так далее.
На практике обычно делаю 3-4 зоны: столица с дешёвой фиксированной доставкой, область с отдельным тарифом, крупные города через коннектор перевозчика по реальным тарифам, и остальная территория с более высокой базовой ценой из-за логистического плеча. Группы местоположений удобны тем, что при добавлении нового города в зону не нужно трогать саму службу - просто добавляете город в группу, и он подхватывается везде, где эта группа используется.
Важный нюанс: если у службы вообще не заполнено ограничение по местоположению, она видна всем без исключения. На старте проекта это частая причина, почему региональный курьер, рассчитанный только на один город, вдруг предлагается покупателю из другого конца страны - ограничение просто забыли выставить при настройке.
Расчёт стоимости по весу заказа
Весовой расчёт держится на двух вещах: заполненном поле «Вес» в карточках товаров и профиле или обработчике, который переводит суммарный вес корзины в стоимость. У профиля стоимость обычно задаётся не формулой, а таблицей весовых интервалов: например, до 5 кг одна цена, от 5 до 20 кг другая, от 20 до 50 кг третья, а свыше 50 кг добавляется цена за каждый следующий килограмм.
Пример из практики с интернет-магазином строительных материалов: три весовых интервала (до 5 кг, 5-20 кг, 20-50 кг) с фиксированной ценой на каждый, плюс доплата за килограмм сверх 50 кг. Без этого у товаров вроде мешков со смесью корзина считала бы доставку так же, как для пачки саморезов, и магазин терял бы деньги на каждой тяжёлой позиции.
Если расчёт по весу выдаёт неожиданные числа, в первую очередь проверяю три вещи: заполнен ли вес у всех товаров в каталоге, а не только у части, не забыт ли вес упаковки, который прибавляется отдельным коэффициентом, и правильно ли выставлены границы интервалов в профиле - частая ошибка, когда интервалы пересекаются или между ними остаётся необработанный промежуток.
Ограничения служб: вес, сумма заказа, способ оплаты
Ограничения на службе доставки работают как фильтр перед показом покупателю. Указываете минимальный и максимальный вес, и служба, не рассчитанная на тяжёлые заказы, просто исчезает из списка для корзины с диваном. Указываете минимальную сумму заказа, и получаете бесплатную доставку от порога без единой строчки кода, просто настройкой профиля с нулевой ценой при выполнении условия.
Отдельная категория - ограничение по способу оплаты. Если в магазине настроен приём онлайн-оплаты, например через Т‑Банк или другой эквайринг, и отдельно наложенный платёж, имеет смысл разрешить наложенный платёж только тем службам, которые физически возят наличные и умеют их принимать, а безналичным курьерам оставить только предоплату. Это тоже настраивается ограничением на службе, без доработки.
Когда типового функционала уже не хватает
Штатных механизмов достаточно, пока задача укладывается в формулу «зона плюс вес плюс сумма». Дальше начинаются сценарии, которые требуют доработки: сравнение тарифов нескольких перевозчиков одновременно в одном окне корзины, автоматическая передача заказа в СДЭК с получением трек-номера и обратной записью его в заказ, или расчёт стоимости по объёмному весу вместо фактического для лёгких, но громоздких товаров.
Для автоматизации передачи заказов в перевозчика хорошо ложится связка: вебхук из Битрикса при смене статуса заказа, сценарий в n8n, который обращается к API СДЭК и создаёт отправление, и запись трек-номера обратно в заказ через REST API Битрикса с уведомлением менеджеру в Telegram. Отдельный сервер под это не нужен: n8n можно развернуть на облачном сервисе автоматизации без своей инфраструктуры, а сам обмен идёт по HTTP-запросам без изменений на стороне хостинга магазина.
Если нужна именно доработка и поддержка 1С-Битрикс, например написание собственного обработчика расчёта стоимости, интеграция нестандартного перевозчика или объёмный вес, такие задачи считаю почасово, без фиксированной вилки на все случаи сразу.
1С-Битрикс регулярно обновляется, поэтому перед внедрением я сверяюсь с актуальной документацией.
Частые вопросы
Можно ли в Битриксе показывать разную стоимость доставки для разных регионов без программиста?
Да, это делается через справочник местоположений: привязываете службу или профиль к конкретному региону, городу или группе городов прямо в административной панели, без правки кода.
Как настроить бесплатную доставку от определённой суммы заказа?
Через профиль или обработчик «по сумме заказа»: задаёте порог, при достижении которого стоимость доставки становится нулевой. Можно комбинировать с ограничением по весу, чтобы бесплатная доставка не действовала на слишком тяжёлые заказы.
Что делать, если доставка по весу считается неправильно?
Проверьте, у всех ли товаров в каталоге заполнено поле веса, учтён ли вес упаковки и не пересекаются ли границы весовых интервалов в профиле - это три самые частые причины некорректного расчёта.
Нужен ли отдельный сервер для интеграции с СДЭК или Яндекс Доставкой?
Нет, коннекторы к перевозчикам работают через API прямо с хостинга, на котором уже размещён магазин: обмен идёт обычными HTTP-запросами с той же площадки, отдельная инфраструктура не требуется.