Сергей Сорокин Обсудить задачу
← Все статьи

· Разбор интеграции

Что происходит с заявкой, если обмен сайта с 1С прервался

Обновлено

В форме заявки Pharmlog клиент указывает габариты, вес и температурный режим грузовых мест. Я добавил сохранение заполненных данных на сайте до отправки в 1С. Если передача прервется, эти данные остаются доступны в кабинете.

Карточка заявки в лотке рядом с разъединенными концами кабеля.
Сохраненная заявка при разрыве соединения. Иллюстрация создана с помощью ИИ.

Заявка в кабинете и заявка в 1С

Клиент может открыть сохраненную заявку в кабинете. Но сама запись на сайте еще не подтверждает, что 1С приняла запрос. В Pharmlog я предусмотрел отдельный статус обмена, который меняется после успешного ответа учетной системы.

При ошибке сайт ставит запрос в очередь. Обработчик очереди повторяет отправку сохраненного запроса, поэтому клиенту не нужно заново заполнять форму ради очередной попытки.

Отправка заявки в Pharmlog при ошибке обмена
  1. Сохранение на сайтеДанные заявки записаны до обращения к 1С.
  2. Отправка в 1ССайт обращается к учетной системе.
  3. При ошибкеЗапрос сохраняется для повторной отправки.
  4. После повторовУспешный ответ меняет статус обмена. Если попытки исчерпаны, запрос остается для разбора.

Что делает обработчик очереди

Обработчик повторяет запросы, когда наступает время следующей попытки. При успешном ответе он записывает полученные из 1С идентификатор и номер заявки, меняет статус обмена и удаляет запрос из очереди.

Если передать запрос не удалось, обработчик сохраняет причину ошибки и назначает следующую попытку. Число попыток ограничено. После исчерпания лимита запрос сохраняется отдельно для разбора ошибки; предусмотрено уведомление.

Повторная отправка использует те же данные. Если 1С отклоняет запрос из-за ошибки в них, ожидание и новая попытка эту ошибку не исправят. Специалисту нужно проверить запрос и ответ 1С.

Если нет ответа, результат пока неизвестен

1С могла создать заявку, а сайт не получил ответ. Если истекло время ожидания (таймаут), результат на стороне 1С остается неизвестным. Новый запрос без проверки может создать дубль.

Поэтому при проектировании обмена стоит согласовать, как 1С узнает повторную отправку. Один из способов описан в Amazon Builders’ Library: передавать один идентификатор во всех попытках создания заявки, а на принимающей стороне связывать повтор с уже выполненной операцией.

Это рекомендация для нового обмена. Чтобы выяснить, защищен ли обмен Pharmlog от дублей, нужно проверить обработку повторных запросов в 1С.

Какие данные можно открыть после отправки

Для просмотра в кабинете я сохраняю отдельную копию заполненной формы, в том числе данные грузовых мест. Из 1С приходят статусы, даты и документы. Плановые даты приема и передачи груза, а также комментарий к перевозке обновляются из 1С и в копии формы. Поэтому она не служит неизменяемым архивом всей заявки.

Что проверить в своем обмене

Попросите разработчика сайта и специалиста по 1С проверить обмен в тестовом окружении. Кроме успешной передачи заявки, проверьте следующие случаи:

  • 1С недоступна: где остается заявка и что клиент видит в кабинете.
  • Связь восстановлена: повторяется ли отправка и меняется ли статус после ответа.
  • 1С приняла запрос, но ответ потерян: как обрабатывается повтор и появляется ли дубль.
  • 1С отклонила данные: где видна причина и кто получает сообщение об ошибке.
  • Попытки исчерпаны: можно ли найти сохраненный запрос и передать его специалисту для разбора.

Начнем с вашей задачи

Расскажите,
что нужно сделать.

Перейти к форме

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

Сергей Сорокин

Сергей СорокинВы напишете лично мне.

Удобнее связаться напрямую?

Адрес, на который можно ответить.
От 10 до 5000 символов. Ссылку на сайт можно добавить здесь.