DPD подключается к 1С-Битрикс не как встроенная служба доставки, а через отдельный обработчик и веб-сервисы DPD. Разберём весь путь: от договора и клиентских ключей до расчёта тарифа в корзине, подгрузки пунктов выдачи на карту и передачи накладной курьерской службе.
Что даёт интеграция DPD
DPD — курьерская служба с широкой сетью терминалов и пунктов выдачи по России и СНГ. Для интернет-магазина ценность интеграции в том, что стоимость и срок доставки считаются автоматически по реальному прайсу перевозчика, а не задаются вручную «на глаз». Клиент в корзине видит выбор между несколькими продуктами DPD, а менеджер получает готовую заявку без перебивки данных в личный кабинет DPD.
На стороне 1С-Битрикс интеграция закрывает четыре задачи:
- Калькуляция тарифа — расчёт цены по весу, габаритам, городу отправителя и получателя.
- Пункты выдачи — подгрузка терминалов и постаматов DPD с адресами и координатами для выбора на карте.
- Создание заказа у перевозчика — формирование накладной и вызов курьера через API.
- Трекинг — обновление статуса отправления и номера накладной в заказе Битрикс.
Что нужно получить у DPD заранее
Интеграция работает поверх веб-сервисов DPD, доступ к которым выдаётся по договору. Прежде чем что-либо настраивать в админке, у вас на руках должны быть учётные данные из личного кабинета DPD.
| Параметр | Где берётся | Для чего |
|---|---|---|
clientNumber | Номер клиента по договору | Идентификация в каждом запросе к API |
clientKey (пароль) | Личный кабинет DPD, раздел доступа к веб-сервисам | Авторизация запросов |
| Город/пункт отправки | Согласуется с DPD | Расчёт плеча доставки от вашего склада |
| Список тарифов | Условия договора | Какие продукты DPD доступны именно вам |
Веб-сервисы DPD исторически работают по SOAP: отдельные точки для географии (geography), калькулятора (calculator), заказов (order) и отслеживания (tracking). Уточните у менеджера DPD актуальные адреса WSDL и лимиты — тестовый и боевой контуры различаются.
Модуль из Маркетплейса или свой обработчик
Есть два пути. Первый — поставить готовый модуль интеграции DPD из Маркетплейса 1С-Битрикс (Marketplace → Каталог решений). Такой модуль регистрирует свою службу доставки, добавляет страницы настроек с полями для ключей и, как правило, включает подгрузку ПВЗ и создание накладных «из коробки». Это быстрый старт для типового магазина.
Второй путь — собственный обработчик доставки. В новом ядре (модуль sale, D7) служба доставки — это класс-наследник Bitrix\Sale\Delivery\Services\Base, который регистрируется через событие onSaleDeliveryHandlersClassNamesBuildList. Метод calculateConcrete() обращается к калькулятору DPD и возвращает объект CalculationResult с ценой и сроком. Свой обработчик оправдан, когда нужна нестандартная логика: свои коэффициенты, объединение с бесплатной доставкой от суммы, особая упаковка или ограничения по товарам.
- Типовой магазин, стандартные тарифы — берите модуль из Маркетплейса.
- Нестандартные правила расчёта и жёсткая связка с 1С — пишите обработчик.
Магазин → Настройки → Службы доставки (компонент bitrix:sale.delivery). После установки модуля DPD его служба появится в этом списке как отдельный пункт.Настройка тарифов и профилей
Внутри службы DPD настраиваются профили — по одному на каждый продукт перевозчика. В карточке профиля указываются код тарифа DPD, тип доставки (до двери или до ПВЗ) и параметры, влияющие на цену. Ключевой момент — корректная передача веса и габаритов: если у товаров не заполнены свойства WEIGHT, WIDTH, HEIGHT, LENGTH, калькулятор вернёт цену по значениям по умолчанию, и она разойдётся с реальной.
Что стоит настроить помимо базового тарифа:
- Наценку или скидку — процент или фиксированную сумму поверх тарифа DPD, если закладываете упаковку.
- Округление — чтобы в корзине не появлялись копейки.
- Ограничения — по весу, сумме заказа, группам местоположений (компонент ограничений доставки в Битрикс).
- Резервный тариф — фиксированную стоимость на случай, когда API DPD недоступен и калькулятор не ответил.
Наложенный платёж и объявленную ценность передавайте в запрос отдельными полями — DPD считает их как дополнительные услуги, и это влияет на итог.
Пункты выдачи и выбор на карте
Для доставки до ПВЗ Битрикс должен знать список терминалов DPD. Его получают методом географии (getParcelShops) и кэшируют локально — тянуть тысячи точек в каждом расчёте недопустимо. Обычно список обновляют по расписанию через агент или задание в cron, раз в сутки, и складывают в highload-блок или служебную таблицу с координатами.
На оформлении заказа пункты показывают на карте (Яндекс.Карты) в компоненте bitrix:sale.order.ajax. Клиент выбирает терминал, его код сохраняется в свойство заказа и затем уходит в накладную. Важно правильно сопоставить местоположение покупателя с городом DPD: справочник городов перевозчика не совпадает с деревом местоположений Битрикс, поэтому нужна привязка кодов (мэппинг) — вручную для крупных городов или по названию с ручной проверкой спорных случаев.
Передача заказа и отслеживание
Когда заказ подтверждён, накладная создаётся вызовом метода заказов DPD (createOrder): передаются отправитель, получатель, состав, вес, выбранный тариф и пункт выдачи. В ответ приходит номер отправления, который сохраняется в заказ Битрикс и показывается покупателю. Это удобно вешать на смену статуса заказа — например, при переходе в статус «Передан в доставку» через обработчик события OnSaleOrderSaved или OnSaleStatusOrderChange.
Обновление статусов делается фоново: агент раз в несколько часов опрашивает трекинг DPD по активным отправлениям и пишет статус в заказ. Чтобы не превысить лимиты API, опрашивайте только незавершённые заказы и логируйте каждый обмен.
- Логи запросов — сохраняйте тело запроса и ответа DPD, без этого разбор ошибок превращается в гадание.
- Идемпотентность — не создавайте накладную повторно при повторном сохранении заказа; помечайте, что заявка уже ушла.
Отладка, НДС и типовые ошибки
Самая частая проблема — расхождение цены в корзине с прайсом DPD. Причины почти всегда в исходных данных: не заполнен вес товаров, неверно сопоставлен город, не учтён наложенный платёж или в запрос ушёл не тот код тарифа. Начинайте разбор с сырого лога обмена, а не с настроек компонента.
| Симптом | Вероятная причина |
|---|---|
| Доставка «0 ₽» или тариф по умолчанию | Пустой вес/габариты товаров |
| «Направление недоступно» | Город не сопоставлен со справочником DPD |
| Расчёт «висит» и отваливается | Таймаут SOAP, нет резервного тарифа |
| Ошибка авторизации | Неверный clientKey или тестовые ключи на бою |
Отдельно продумайте НДС на услугу доставки: ставка настраивается в самой службе доставки Битрикс, а не приходит от DPD. Если магазин работает с НДС, задайте ставку в настройках службы, иначе в чеке доставка уйдёт без налога.
Итог
Подключение DPD к 1С-Битрикс — это связка из четырёх блоков: авторизация по clientNumber и clientKey, расчёт тарифа калькулятором, подгрузка ПВЗ с кэшированием и мэппингом городов, а также создание накладной с трекингом. Модуль из Маркетплейса закрывает типовой сценарий, собственный обработчик нужен там, где логика расчёта нестандартна. Критично следить за качеством данных о весе и габаритах, сопоставлением местоположений и резервным тарифом на случай недоступности API.
Мы в B2Bsite подключаем DPD и другие службы доставки на 1С-Битрикс под ключ: настраиваем расчёт, карту ПВЗ, автосоздание накладных и обмен статусами, а также связываем доставку с выгрузкой заказов в 1С. Если нужна интеграция без сюрпризов в корзине и в чеке — поможем спроектировать и внедрить её аккуратно.
Частые вопросы
Есть ли DPD во встроенных службах доставки Битрикс?
Нет, в стандартной поставке DPD как готовой службы нет. Её добавляют модулем из Маркетплейса или собственным обработчиком доставки, который обращается к веб-сервисам DPD.
Что нужно получить у DPD для интеграции?
Договор и доступ к веб-сервисам: номер клиента (clientNumber) и ключ-пароль (clientKey) из личного кабинета. Также согласуйте город отправки и список доступных вам тарифов.
Почему стоимость доставки в корзине не совпадает с прайсом DPD?
Чаще всего из-за незаполненного веса и габаритов товаров или неверного сопоставления города с справочником DPD. Разбор всегда начинают с лога запроса и ответа калькулятора.
Как показать пункты выдачи DPD на карте?
Список ПВЗ получают методом географии и кэшируют локально, обновляя по расписанию через агент или cron. На оформлении заказа их выводят на карте, а код выбранного пункта сохраняют в свойство заказа.
Можно ли автоматически создавать накладную у DPD?
Да, накладная создаётся вызовом метода заказов API при смене статуса заказа. В ответ приходит номер отправления, который сохраняется в заказ и используется для отслеживания.
Как обновляются статусы доставки?
Фоновый агент периодически опрашивает трекинг DPD по активным отправлениям и записывает статус в заказ. Чтобы не упереться в лимиты API, опрашивают только незавершённые заказы.
Что будет, если API DPD недоступен во время расчёта?
Без резервного тарифа расчёт зависнет и покупатель не увидит стоимость доставки. Поэтому в настройках профиля задают фиксированную резервную цену на случай таймаута.
Как настроить НДС на доставку DPD?
Ставка НДС задаётся в настройках самой службы доставки в Битрикс, а не приходит от DPD. Если магазин работает с НДС, укажите ставку, иначе доставка попадёт в чек без налога.
Поможем с настройкой и поддержкой 1С-Битрикс: Управление сайтом
Поможем с настройкой, доработкой и поддержкой 1С-Битрикс: Управление сайтом.