Особенности загрузки данных через REST API

Последние изменения: 20.01.2021

Отложенное внесение изменений

Обновление данных с помощью REST API всегда имеет отложенное срабатывание. Это значит, что большинство справочников (номенклатура, таблицы) и документы в базе данных на сервере обновляются не мгновенно, а с задержкой (30 секунд). 

Для чего это делается:

  • Для предотвращения мгновенной отправки измененного справочника на мобильное устройство, так как требуется время, чтобы успеть обновить его версию на мобильном устройстве.
  • Для того, чтобы избежать генерации лишнего промежуточного трафика из-за порционности POST-запросов.
  • Относительно справочника номенклатуры это решает проблему лишней нагрузки на сервер по формированию справочника и его индексов, так как данный справочник имеет специфический внутренний формат (используемый для ТСД на Windows CE).

Обновление документа

При загрузке большого числа строк в документе включается режим обновления (BeginUpdate), который завершится автоматически через 30 секунд и документ сохранится на диск. В режиме обновления документ не сохраняется при добавлении каждой строки. Если после загрузки последней строки требуется сразу записать документ на диск, необходимо выполнить запрос EndUpdate. Такая схема предотвращает выполнения события на сервере до завершения загрузки всех строк документа.

Пример:

/api/v1/Docs/ChekKorrekcii('{id}')/EndUpdate

Обновление таблицы и справочника номенклатуры

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

Для перезаписи необходимо вызвать запросы:

/api/v1/Tables/Kontragenty/BeginOverwrite - включить режим перезаписи для таблицы Kontragenty

{Далее необходимо отправить все новые записи}

/api/v1/Tables/Kontragenty/EndOverwrite - завершить режим перезаписи и заменить предыдущую таблицу Kontragenty

Для обновления записей таблицы необходимо вызвать запросы:

/api/v1/Tables/Kontragenty/BeginUpdate - начать обновление таблицы

{Далее необходимо отправить все новые записи}

/api/v1/Tables/Kontragenty/EndUpdate

Для справочника номенклатуры запросы формируются следующим образом:

/api/v1/Products/BeginOverwrite

/api/v1/Products/EndOverwrite

/api/v1/Products/BeginUpdate

/api/v1/Products/EndUpdate