Подключение курьерского сервиса Достависта к 1С и работа с заказами

· 9 мин

Содержание

Достависта подключается к 1С через её открытый API: 1С по токену отправляет в сервис заказ на доставку, получает его номер и ссылку на отслеживание, а затем принимает обратно статусы — «курьер назначен», «в пути», «выполнен». Отдельной «кнопки Достависта» в типовых конфигурациях нет, обмен делают либо готовым модулем с маркетплейса, либо собственной обработкой на HTTP-запросах.

Разберём оба пути: что завести в справочниках, как устроен обмен по API, как создать заказ и передать его курьеру, как ловить статусы и закрывать взаиморасчёты. Пути меню приводятся для типовых конфигураций (Управление торговлей, Комплексная автоматизация, ERP) с интерфейсом «Такси».

Что подготовить до подключения

Сначала — учётная запись и токен. Доступ к API выдаётся в личном кабинете Достависты: раздел с настройками интеграции, пункт про API-токен. Токен — это ключ к вашему балансу и заказам, храните его как пароль и не кладите в общедоступный код.

До первого обмена определитесь с тремя вещами:

  • 🔑 Способ интеграции. Готовый модуль (внешняя обработка или расширение с маркетплейса/Инфостарта) — если нет своего разработчика. Собственная обработка на HTTP-запросах — если нужен нестандартный сценарий или своя логика адресов.
  • 🏢 Юрлицо и баланс. Достависта работает по предоплате с баланса кабинета. Заведите, с какого счёта пополняете и кто контрагент-исполнитель.
  • 📦 Что именно отправляем. Один заказ клиента = одна доставка, или несколько точек в одном маршруте. От этого зависит, как собирать тело запроса.

Для теста у Достависты есть демо-режим (sandbox) с отдельным токеном. Отлаживайте обмен на нём, пока не убедитесь, что заказы создаются и статусы приходят. На боевом токене каждый созданный заказ списывает деньги с баланса.

Перед первым обменом проверьте
Выполнено: 0 / 5

Какие справочники и реквизиты завести в 1С

Чтобы заказы и расходы не висели «в воздухе», сопоставьте сущности Достависты с объектами учёта.

Контрагент. Заведите Достависту как контрагента-исполнителя услуг доставки (Справочники → Контрагенты). По нему пойдут акты и взаиморасчёты.

Способ доставки. Если в конфигурации ведётся доставка (в Управление торговлей и ERP есть подсистема доставки), добавьте способ «Курьер Достависта», чтобы отделять эти отгрузки от самовывоза и собственной логистики.

Параметры подключения. Токен, адрес API и признак «боевой/демо» удобно хранить не в коде, а в отдельном регистре сведений или в константах. Тогда смена токена не потребует правки обработки.

Склад-отправитель и адрес. Точка, откуда забирает курьер, — это адрес склада. Проверьте, что у склада заполнен корректный адрес: он пойдёт в заказ как точка забора.

Адреса в Достависту уходят строкой или координатами. Если в карточке клиента адрес хранится кусками (город, улица, дом в разных полях) — заранее решите, как собирать его в одну строку, иначе курьер приедет не туда.

Как устроен обмен данными по API

Обмен идёт по HTTP: 1С формирует JSON, отправляет POST-запрос на адрес метода и разбирает ответ. В встроенном языке за это отвечают объекты HTTPСоединение, HTTPЗапрос и чтение/запись JSON (ЧтениеJSON, ЗаписьJSON).

Токен передаётся в заголовке запроса. Минимальный скелет создания заказа выглядит так (точные адрес хоста и версию метода берите из актуальной документации API Достависты):

SSL = Новый ЗащищённоеСоединениеOpenSSL;
Соединение = Новый HTTPСоединение("robot.dostavista.ru", 443, , , , 30, SSL);

Запрос = Новый HTTPЗапрос("/api/business/1.4/create-order");
Запрос.Заголовки.Вставить("X-DV-Auth-Token", Токен);
Запрос.Заголовки.Вставить("Content-Type", "application/json");
Запрос.УстановитьТелоИзСтроки(ТелоJSON);

Ответ = Соединение.ВызватьHTTPМетод("POST", Запрос);
ТекстОтвета = Ответ.ПолучитьТелоКакСтроку();

Код ответа 200 — заказ принят, в теле придёт его номер и ссылка на отслеживание. Коды 4xx — ошибка в данных или токене, ответ нужно залогировать и показать пользователю, а не глотать молча.

Главная ручная работа — сопоставление полей. У Достависты свой набор полей заказа, у документа 1С — свой. Вот типовое соответствие:

Сопоставление полей
Адрес склада-отправителя→Первая точка маршрута (забор)
Адрес клиента из заказа→Вторая точка маршрута (доставка)
Контактное лицо и телефон клиента→Получатель в точке
Вес и габариты товара→Параметры посылки
Сумма к оплате при наложенном платеже→Сумма наложенного платежа
Комментарий к доставке→Примечание курьеру
Номер заказа Достависты→Отдельный реквизит документа в 1С

Номер заказа Достависты и ссылку на отслеживание сразу сохраняйте в реквизит документа 1С. Без этого номера вы потом не сможете ни запросить статус, ни отменить доставку.

Создание заказа и передача курьеру

Логику запуска доставки обычно вешают на событие документа — проведение «Реализации» или заказа клиента — либо на отдельную кнопку в форме.

Порядок такой:

  1. Пользователь проводит документ и нажимает кнопку вызова доставки (её добавляют в командной панели формы при доработке).
  2. Обработка собирает тело заказа: точки маршрута, вес, оплату, контакты, желаемое время.
  3. 1С отправляет POST-запрос на создание заказа.
  4. В ответе приходит номер заказа и статус. Их записывают в документ, документ помечают как «передан в доставку».

Перед боевой отправкой полезно запрашивать предварительный расчёт стоимости — у Достависты есть метод оценки заказа без его создания. Так пользователь видит цену доставки до списания денег.

В теле заказа стоит заполнять не только адрес, но и параметры, от которых зависят цена и успех доставки:

  • ⚖️ Вес и габариты. Курьер на самокате и курьер на авто — разный тариф. Если вес не передать, сервис подберёт не тот транспорт, и доставка может сорваться на месте.
  • 🕑 Временное окно. Когда клиенту удобно принять. Передавайте интервал, а не точную минуту, — так курьеру проще уложиться.
  • 💰 Наложенный платёж. Если курьер собирает деньги с клиента, сумму указывают отдельным полем. Её нельзя путать со стоимостью самой доставки.
  • 🧾 Требование вернуть документы. Если нужен подписанный экземпляр накладной обратно, это отдельная услуга «обратная доставка документов».

Не отправляйте один и тот же документ в доставку дважды. Повторное нажатие кнопки создаст второй заказ и спишет деньги ещё раз. Защита простая: если реквизит с номером заказа уже заполнен — блокируйте повторную отправку и показывайте предупреждение.

Ориентир по стоимости: городская курьерская доставка Достависты обходится примерно от 300–500 ₽ за маршрут в зависимости от города, веса и срочности. Это грубый ориентир для планирования, точную цену всегда отдаёт расчёт по конкретному заказу.

Контроль статусов и обновление документов

Заказ живёт своей жизнью: его берёт курьер, он едет, доставляет, иногда отменяет. 1С должна это отражать, иначе менеджер не поймёт, доставлен товар или нет.

Статусы получают двумя способами:

  • Опрос по расписанию (polling). Регламентное задание раз в N минут обходит заказы «в работе» и запрашивает их текущий статус по номеру. Просто в реализации, но есть задержка.
  • Вебхук (callback). Достависта сама присылает уведомление о смене статуса на ваш адрес. Быстрее, но требует опубликованного HTTP-сервиса 1С, доступного из интернета.
Жизненный цикл заказа доставки

Храните не только последний статус, но и дату его получения. Тогда по заказам, застрявшим в одном статусе слишком долго, можно строить отбор и разбираться вручную.

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

Возвраты, отмены и нестандартные ситуации

Не каждая доставка заканчивается успехом. Эти ветки нужно продумать до запуска, а не латать потом.

  • 🔁 Отмена до назначения курьера. Обычно бесплатна. 1С вызывает метод отмены по номеру заказа, документ возвращается в работу.
  • 🚶 Отмена, когда курьер уже выехал. Чаще платная — сервис спишет часть стоимости. Эту сумму нужно отразить как расход, даже если товар не уехал.
  • 📦 Возврат товара отправителю. Клиент не принял посылку — курьер везёт её обратно. Это отдельная оплачиваемая услуга; в 1С по такому заказу остаётся расход на доставку без реализации товара.
  • ⏳ Недозвон, перенос времени. Статус «отложен» или аналогичный. Решение — связаться с клиентом; автоматизировать тут нечего, но менеджер должен увидеть проблему в списке.

Платная отмена и возврат — это реальные деньги с баланса. Заведите правило: любой отменённый заказ проверяет оператор, чтобы понять, было списание или нет, и отразить его в учёте.

Отдельно обработайте технические сбои обмена: сеть недоступна, токен протух, сервис вернул ошибку. Такой заказ не должен молча «теряться» — помечайте его как требующий повторной отправки и давайте пользователю кнопку «повторить».

Учёт расходов на доставку и сверка с Достависта

Достависта — исполнитель услуг, значит её работа ложится в затраты, а расчёты ведутся по контрагенту.

Деньги на баланс кабинета — это аванс исполнителю. Пополнение отражают как перечисление поставщику:

Проводки по операции

Если выделять НДС нечего (исполнитель не предъявил налог) — строку с 19 счётом не делайте. Счёт затрат выбирайте по своей учётной политике: у торговли расходы на доставку покупателям — это издержки обращения (44).

Отдельная история — наложенный платёж. Курьер собирает деньги с клиента, Достависта удерживает комиссию за инкассацию и перечисляет остаток на ваш счёт или баланс. В учёте это выручка от покупателя минус услуга сервиса:

Проводки по операции

Суммы по счёту 57 не должны зависать: каждый собранный платёж обязан закрыться поступлением на счёт. Остаток на 57 в конце месяца — это деньги, которые курьерская служба собрала, но ещё не перечислила.

Для сверки раз в месяц сопоставляйте три источника: списания и поступления в личном кабинете Достависты, закрывающие документы (акт/реестр заказов) и обороты по контрагенту в 1С. Расхождения чаще всего дают платные отмены, возвраты и удержанные комиссии, которые забыли провести.

Если доставку оплачивает покупатель, разделяйте два потока: расход перед Достависта (ваши затраты) и доставка как услуга в чеке клиента (ваша выручка). Складывать их в один документ нельзя — потеряете и затраты, и выручку.

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

Можно ли подключить Достависту без программиста?
Да, если взять готовый модуль с маркетплейса или Инфостарта — он уже умеет создавать заказы и принимать статусы, остаётся вписать токен и настроить сопоставление полей. Своя обработка нужна только под нестандартный сценарий.
Нужен ли опубликованный сервер для получения статусов?
Только если вы хотите вебхуки — тогда у 1С должен быть HTTP-сервис, доступный из интернета. Если достаточно задержки в несколько минут, статусы можно опрашивать регламентным заданием, и внешний доступ не требуется.
Что делать, если заказ создался, а деньги списались дважды?
Значит, документ отправили в доставку повторно. Один из заказов отмените в личном кабинете, спорное списание выносите на сверку. На будущее — блокируйте повторную отправку по заполненному номеру заказа.
Как хранить токен безопасно?
Не в тексте обработки и не в общих модулях, которые видит вся база. Храните в регистре сведений или константе с ограничением прав доступа, а для теста используйте отдельный демо-токен.
Уходит ли в Достависту персональные данные клиента?
Да — имя, телефон и адрес получателя. Это передача данных стороннему оператору, поэтому передавайте только то, что нужно курьеру для доставки, и учитывайте это в своих документах о работе с персональными данными.