Skip to main content

«real-time» обмен заказами с 1С

2 июня, 2020 21:12
Просмотров 136
Section backgroundSection background

В рамках обмена заказами, есть так называемая возможность «Режим реального времени», которая реализуется с обеих сторон. Со стороны 1С, как правило такая возможность есть лишь в дополнительных модулях обмена, хоть и существует она давно (как минимум с 2014 года).

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

Рассмотрим, как это работает

В учетной системе постоянно висит один сеанс, который ждет статус ответа от сервера. На сайте создали или отредактировали заказ — учетная система получает успешный статус ответа от сервера ( код 200), что является сигналом к началу обмена и происходит обычный процесс загрузки заказов.

При авторизации на сайте к адресу точки входа обмена добавляется параметр «?type=listen». Т.е. адрес получается: <АдресСайта> + «?type=listen». Параметр необходим, чтобы сайт знал, что это соединение для режима реального времени.

Сайт может вернуть 2 кода состояния:

  • Если это код 200, значит надо выполнить обмен с сайтом.
  • Если это код 304, то снова послать на сайт запрос с «?type=listen» (интересно, но в документации речь о 302 статусе и адресе переадресации, но по факту, даже в исходном коде битрикса, есть лишь отправка 304 кода, если нет данных)

Со стороны сайта при получении такого запроса все достаточно просто — проверка, если есть что-то для отправки, то сразу возвращаем 200, чтобы произошел обычный процесс загрузки (после которого снова отправится запрос с «?type=listen«), а если нет, то просто ожидание в цикле со sleep или, например, usleep до лимита таймаута или пока нет данных. Если данные появились, то сразу ответ c 200, если лимит по таймауту кончился, то 304. При ответе с 200, также добавляется строка «success».

Поделиться: