СДЭК — одна из самых востребованных служб доставки в российском e-commerce, и почти каждый магазин на 1С-Битрикс рано или поздно её подключает. Разберём, как сделать это правильно: от выбора модуля и получения ключей API до расчёта стоимости в корзине и автоматического создания накладных.
Способы подключения: модуль или свой обработчик
1С-Битрикс не содержит встроенной службы СДЭК «из коробки» — доставка подключается через обработчик службы доставки (класс, наследующий Bitrix\Sale\Delivery\Services\Base). На практике его не пишут с нуля, а ставят готовый модуль из Маркетплейса.
- Официальный модуль СДЭК (
cdek.integration) — поддерживается самой службой, работает с API v2.0, умеет расчёт тарифов, виджет ПВЗ и выгрузку заказов. - Модули интеграторов (например,
ipol.sdelivery) — часто гибче в настройке ограничений, наценок и правил округления. - Свой обработчик — оправдан только при нестандартной логике: мультискладовость, собственные тарифные сетки, объединение с другими перевозчиками.
sale. Старые решения под API v1.x официально отключены, и расчёт на них молча возвращает ноль.Договор и ключи API
Для расчёта и выгрузки заказов нужен договор с СДЭК и доступ к API интеграции. В личном кабинете СДЭК (раздел для интеграторов) создаётся пара Account (идентификатор клиента) и Secure password (секретный ключ). По ним модуль получает OAuth-токен на боевом контуре https://api.cdek.ru/v2/.
Пока договор не подписан, тестируйте на демо-контуре https://api.edu.cdek.ru/v2/ с публичными тестовыми ключами — расчёт работает, но реальные заказы туда не уходят.
- Получите
AccountиSecure passwordу менеджера СДЭК. - Впишите их в настройки модуля и выберите контур (боевой/тестовый).
- Нажмите «Проверить соединение» — модуль должен вернуть валидный токен.
Account/Secret.Склад отправления и тарифы
Стоимость СДЭК зависит от города-отправителя, поэтому в настройках указывается адрес склада (пункт отправления) — обычно как код города СДЭК или почтовый индекс. От него считается плечо доставки до города покупателя.
Ключевой параметр — набор разрешённых тарифов. Каждый тариф имеет числовой код и определяет схему «откуда-куда»:
| Код | Тариф | Схема |
|---|---|---|
| 136 / 137 | Посылка склад-склад | ПВЗ → ПВЗ |
| 233 / 234 | Экономичная посылка склад-склад | ПВЗ → ПВЗ |
| 366 / 368 | Посылка склад-дверь | ПВЗ → курьер |
| 138 / 139 | Посылка дверь-дверь | курьер → курьер |
В магазине удобно завести два профиля: один с «складскими» тарифами для выдачи в ПВЗ, второй с «дверными» для курьера. Так покупатель в корзине видит понятный выбор, а не десяток похожих строк.
Вес, габариты и местоположения
СДЭК рассчитывает стоимость по фактическому и объёмному весу, поэтому расчёт корректен только когда у товаров заполнены вес и размеры. В карточке товара это поля Вес и характеристики габаритов; для расчёта объёмного веса модулю нужны длина, ширина и высота.
- Задайте вес по умолчанию для товаров без заполненного веса — иначе API вернёт ошибку и доставка «пропадёт» из корзины.
- Настройте габариты по умолчанию (типовую коробку), если размеры не ведёте в каталоге.
- Проверьте, что включён и загружен модуль
sale.location— СДЭК сопоставляет местоположение покупателя со своим справочником городов по коду или названию.
Виджет пунктов выдачи на оформлении
Для тарифов «склад-склад» и «склад-дверь» покупатель должен выбрать пункт выдачи (ПВЗ). СДЭК предоставляет готовый виджет карты, который встраивается в шаг оформления заказа компонента sale.order.ajax.
Для работы карты понадобится API-ключ Яндекс.Карт (JavaScript API) — виджет рендерит на нём точки ПВЗ и постаматов. Выбранный пункт сохраняется в свойство заказа (код ПВЗ), которое затем уходит в накладную.
- Получите ключ Яндекс.Карт в кабинете разработчика и пропишите его в настройках виджета.
- Убедитесь, что домен магазина добавлен в ограничения ключа, иначе карта не загрузится.
- Проверьте на мобильной вёрстке — виджет должен корректно открываться в модальном окне.
Выгрузка заказов и накладные
После оплаты или подтверждения заказ можно передавать в СДЭК автоматически — модуль создаёт заказ через метод API /v2/orders и возвращает трек-номер. Часть модулей делает это по смене статуса заказа, часть — по кнопке в детальной карточке заказа.
- Статусы. Через вебхуки (
/v2/webhooks) СДЭК присылает изменения статуса посылки, и модуль обновляет заказ — покупатель видит актуальный трекинг. - Печать. Из выгруженного заказа доступна печать квитанции и ШК-этикетки прямо из админки.
- Наложенный платёж. Если используете, передавайте сумму к оплате и признак предмета расчёта корректно — это влияет на возврат средств.
Перед боевым запуском обязательно прогоните полный цикл на тестовом контуре: расчёт в корзине → выбор ПВЗ → оформление → выгрузка → смена статуса.
Итог
Подключение СДЭК к 1С-Битрикс складывается из четырёх слагаемых: правильный модуль, интеграционные ключи API v2.0, заполненные вес и габариты и виджет ПВЗ с ключом Яндекс.Карт. Когда всё это на месте, магазин считает доставку в реальном времени, а заказы уходят в СДЭК без ручного переноса.
Если расчёт «отваливается» на части городов, не проходит выгрузка или нужен нестандартный сценарий с несколькими складами и наценками — мы в B2Bsite настраиваем интеграции доставки под ключ, тестируем полный цикл и берём магазин на поддержку, чтобы обновления модулей и API не ломали оформление заказа.
Частые вопросы
Есть ли встроенная поддержка СДЭК в 1С-Битрикс?
Нет, отдельной службы СДЭК «из коробки» нет. Доставка подключается через обработчик службы доставки — на практике устанавливают готовый модуль из Маркетплейса.
Какие ключи нужны для расчёта СДЭК?
Нужна пара Account и Secure password из личного кабинета интеграции СДЭК. По ним модуль получает OAuth-токен для API v2.0.
Можно ли протестировать без договора со СДЭК?
Да, есть демо-контур api.edu.cdek.ru с тестовыми ключами. Расчёт работает, но реальные заказы туда не передаются.
Почему доставка СДЭК не считается в корзине?
Чаще всего из-за незаполненного веса или габаритов товара, либо несовпадения местоположения покупателя со справочником городов СДЭК. Помогают вес по умолчанию и расчёт по индексу.
Что нужно для карты пунктов выдачи?
Виджет ПВЗ работает на API Яндекс.Карт, поэтому потребуется ключ JavaScript API. Домен магазина нужно добавить в разрешённые для этого ключа.
Как выбрать нужные тарифы?
Тарифы задаются по кодам и определяют схему доставки: 136/137 склад-склад, 366/368 склад-дверь, 138/139 дверь-дверь. Удобно завести отдельные профили под ПВЗ и под курьера.
Передаются ли заказы в СДЭК автоматически?
Да, модуль создаёт заказ через метод API /v2/orders и возвращает трек-номер. Обычно выгрузка привязывается к смене статуса заказа, а статусы обновляются вебхуками.
Почему не удаётся выгрузить заказ по складскому тарифу?
Для тарифов склад-склад и склад-дверь обязателен выбранный пункт выдачи. Сделайте свойство ПВЗ обязательным, иначе накладную сформировать нельзя.
Поможем с настройкой и поддержкой 1С-Битрикс: Управление сайтом
Поможем с настройкой, доработкой и поддержкой 1С-Битрикс: Управление сайтом.