Подключение курьерского сервиса Достависта к 1С и работа с заказами
Содержание
Достависта подключается к 1С через её открытый API: 1С по токену отправляет в сервис заказ на доставку, получает его номер и ссылку на отслеживание, а затем принимает обратно статусы — «курьер назначен», «в пути», «выполнен». Отдельной «кнопки Достависта» в типовых конфигурациях нет, обмен делают либо готовым модулем с маркетплейса, либо собственной обработкой на HTTP-запросах.
Разберём оба пути: что завести в справочниках, как устроен обмен по API, как создать заказ
и передать его курьеру, как ловить статусы и закрывать взаиморасчёты. Пути меню приводятся для типовых конфигураций (Управление торговлей, Комплексная автоматизация, ERP) с интерфейсом «Такси».
Что подготовить до подключения
Сначала — учётная запись и токен. Доступ к API выдаётся в личном кабинете Достависты: раздел с настройками интеграции, пункт про API-токен. Токен — это ключ к вашему балансу и заказам, храните его как пароль и не кладите в общедоступный код.
До первого обмена определитесь с тремя вещами:
- 🔑 Способ интеграции. Готовый модуль (внешняя обработка или расширение с маркетплейса/Инфостарта) — если нет своего разработчика. Собственная обработка на HTTP-запросах — если нужен нестандартный сценарий или своя логика адресов.
- 🏢 Юрлицо и баланс. Достависта работает по предоплате с баланса кабинета. Заведите, с какого счёта пополняете и кто контрагент-исполнитель.
- 📦 Что именно отправляем. Один заказ клиента = одна доставка, или несколько точек в одном маршруте. От этого зависит, как собирать тело запроса.
Для теста у Достависты есть демо-режим (sandbox) с отдельным токеном. Отлаживайте обмен на нём, пока не убедитесь, что заказы создаются и статусы приходят. На боевом токене каждый созданный заказ списывает деньги с баланса.
Какие справочники и реквизиты завести в 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С отправляет POST-запрос на создание заказа.
- В ответе приходит номер заказа и статус. Их записывают в документ, документ помечают как «передан в доставку».
Перед боевой отправкой полезно запрашивать предварительный расчёт стоимости — у Достависты есть метод оценки заказа без его создания. Так пользователь видит цену доставки до списания денег.
В теле заказа стоит заполнять не только адрес, но и параметры, от которых зависят цена и успех доставки:
- ⚖️ Вес и габариты. Курьер на самокате и курьер на авто — разный тариф. Если вес не передать, сервис подберёт не тот транспорт, и доставка может сорваться на месте.
- 🕑 Временное окно. Когда клиенту удобно принять. Передавайте интервал, а не точную минуту, — так курьеру проще уложиться.
- 💰 Наложенный платёж. Если курьер собирает деньги с клиента, сумму указывают отдельным полем. Её нельзя путать со стоимостью самой доставки.
- 🧾 Требование вернуть документы. Если нужен подписанный экземпляр накладной обратно, это отдельная услуга «обратная доставка документов».
Не отправляйте один и тот же документ в доставку дважды. Повторное нажатие кнопки создаст второй заказ и спишет деньги ещё раз. Защита простая: если реквизит с номером заказа уже заполнен — блокируйте повторную отправку и показывайте предупреждение.
Ориентир по стоимости: городская курьерская доставка Достависты обходится примерно от 300–500 ₽ за маршрут в зависимости от города, веса и срочности. Это грубый ориентир для планирования, точную цену всегда отдаёт расчёт по конкретному заказу.
Контроль статусов и обновление документов
Заказ живёт своей жизнью: его берёт курьер, он едет, доставляет, иногда отменяет. 1С должна это отражать, иначе менеджер не поймёт, доставлен товар или нет.
Статусы получают двумя способами:
- Опрос по расписанию (polling). Регламентное задание раз в N минут обходит заказы «в работе» и запрашивает их текущий статус по номеру. Просто в реализации, но есть задержка.
- Вебхук (callback). Достависта сама присылает уведомление о смене статуса на ваш адрес. Быстрее, но требует опубликованного HTTP-сервиса 1С, доступного из интернета.
Храните не только последний статус, но и дату его получения. Тогда по заказам, застрявшим в одном статусе слишком долго, можно строить отбор и разбираться вручную.
Названия статусов в API могут отличаться по версии — ориентируйтесь на документацию, а в 1С храните собственный краткий набор состояний, в который раскладываете ответы сервиса.
Возвраты, отмены и нестандартные ситуации
Не каждая доставка заканчивается успехом. Эти ветки нужно продумать до запуска, а не латать потом.
- 🔁 Отмена до назначения курьера. Обычно бесплатна. 1С вызывает метод отмены по номеру заказа, документ возвращается в работу.
- 🚶 Отмена, когда курьер уже выехал. Чаще платная — сервис спишет часть стоимости. Эту сумму нужно отразить как расход, даже если товар не уехал.
- 📦 Возврат товара отправителю. Клиент не принял посылку — курьер везёт её обратно. Это отдельная оплачиваемая услуга; в 1С по такому заказу остаётся расход на доставку без реализации товара.
- ⏳ Недозвон, перенос времени. Статус «отложен» или аналогичный. Решение — связаться с клиентом; автоматизировать тут нечего, но менеджер должен увидеть проблему в списке.
Платная отмена и возврат — это реальные деньги с баланса. Заведите правило: любой отменённый заказ проверяет оператор, чтобы понять, было списание или нет, и отразить его в учёте.
Отдельно обработайте технические сбои обмена: сеть недоступна, токен протух, сервис вернул ошибку. Такой заказ не должен молча «теряться» — помечайте его как требующий повторной отправки и давайте пользователю кнопку «повторить».
Учёт расходов на доставку и сверка с Достависта
Достависта — исполнитель услуг, значит её работа ложится в затраты, а расчёты ведутся по контрагенту.
Деньги на баланс кабинета — это аванс исполнителю. Пополнение отражают как перечисление поставщику:
Если выделять НДС нечего (исполнитель не предъявил налог) — строку с 19 счётом не делайте. Счёт затрат выбирайте по своей учётной политике: у торговли расходы на доставку покупателям — это издержки обращения (44).
Отдельная история — наложенный платёж. Курьер собирает деньги с клиента, Достависта удерживает комиссию за инкассацию и перечисляет остаток на ваш счёт или баланс. В учёте это выручка от покупателя минус услуга сервиса:
Суммы по счёту 57 не должны зависать: каждый собранный платёж обязан закрыться поступлением на счёт. Остаток на 57 в конце месяца — это деньги, которые курьерская служба собрала, но ещё не перечислила.
Для сверки раз в месяц сопоставляйте три источника: списания и поступления в личном кабинете Достависты, закрывающие документы (акт/реестр заказов) и обороты по контрагенту в 1С. Расхождения чаще всего дают платные отмены, возвраты и удержанные комиссии, которые забыли провести.
Если доставку оплачивает покупатель, разделяйте два потока: расход перед Достависта (ваши затраты) и доставка как услуга в чеке клиента (ваша выручка). Складывать их в один документ нельзя — потеряете и затраты, и выручку.