Отложенное внесение изменений
Обновление данных с помощью 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
Пакетная загрузка номенклатуры на сервер REST API
Пакетную загрузку номенклатуры можно реализовать следующим способом:
POST /api/v1/Products/ResetUpdate — сбрасываем процедуру пакетного обновления номенклатуры на сервере
Тело сообщения:
{}
POST /api/v1/Products/BeginUpdate — начинаем процедуру пакетного обновления номенклатуры на сервере
Тело сообщения:
{}
POST /api/v1/Products — Добавляем номенклатуру на сервер двумя пакетами
Пакет 1. Тело сообщения:
{ "value": [ { "id": "1f738be6-0433-4a85-866f-3479f7ec1eda", "name": "Товар1", "barcode": "1001", "basePackingId": "шт", "packings": [ { "id": "шт" } ] }, { "id": "2f738be6-0433-4a85-866f-3479f7ec1eda ", "name": "Товар2", "barcode": "1002", "basePackingId": "шт", "packings": [ { "id": "шт" } ] } ] }
Пакет 2. Тело сообщения:
{ "value": [ { "id": "3f738be6-0433-4a85-866f-3479f7ec1eda ", "name": "Товар3", "barcode": "1003", "basePackingId": "шт", "packings": [ { "id": "шт" } ] }, { "id": "4f738be6-0433-4a85-866f-3479f7ec1eda ", "name": "Товар4", "barcode": "1004", "basePackingId": "шт", "packings": [ { "id": "шт" } ] } ] }
Для тестовых сообщений сформированы сообщения в формате json по базовым полям в количестве 2 единиц в одном пакете
POST /api/v1/Products/EndUpdate — завершаем процедуру пакетного обновления номенклатуры на сервере
Тело сообщения:
{}