Skip to main content

“real-time” обмен заказами с 1С

2 июня, 2020 (обновлено: 4 августа, 2023)
Просмотров 1294
Section background
Версия: 1.128.0 | Последнее обновление: 10 апреля 2024 | открыть

В рамках обмена заказами, есть так называемая возможность “Режим реального времени”, которая реализуется с обеих сторон. Со стороны 1С, как правило такая возможность есть лишь в дополнительных модулях обмена от команды 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”.

Поделиться: