Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

...

  • Обмен инициируется со стороны клиента (внешней системы).

  • Клиент отправляет свой документ с данными и заполненным полем TimestampFrom, в нем передается время последней успешной синхронизации с сервером. Если это поле = 0, то синхронизация считается начальной и клиент получит полный набор данных с сервера.

  • Сервер обрабатывает полученные данные:

    • получает документ с данными
    • заполняет в нём поле TimestampTo текущей датой 
    • выполняет обновление записей или помечает их как удаленные
    • всем затронутым (обновленным или удаленным) записям присваивается одно и то же значение Timestamp = TimestampTo
  • Сервер формирует набор данных для клиента:

    • получает список записей из всех таблиц изменённых после TimestampFrom (у которых Timestamp >= TimestampFrom)
    • дополняет список записей связанными сущностями (подробнее см. “Выгрузка связанных данных”)
    • производит фильтрацию данных в соответствии с настроенными для каждой таблицы фильтрами (подробнее см. “Фильтрация данных”)
    • исключает из выгрузки объекты, которые пришли со стороны клиента в рамках текущей сессии обмена
    • формирует JSON-файл, сжимает и возвращает клиенту.
  • Клиент обрабатывает полученные данные

    • измененные записи обновляются в БД
    • записи к удалению - удаляются из БД

...

Фильтрация основывается на данных пользователя, авторизованного при подключении к точке входа (см. “Общее описание протокола и точки подключения”)

Фильтры формируются на этапе проектирования структуры данных. Текущие фильтры описаны в разделе “Типовые фильтры”.


Структура файла обмена


Общее описание

...

  • "Id" - уникальный идентификатор сессии обмена. По этому идентификатору также в дальнейшем можно получать информацию о сессии.
  • "TimestampFrom" - начальная граница промежутка времени для получения изменений (см. “Общее описание алгоритма синхронизации”)
  • "TimestampTo" - конечная граница промежутка времени для получения изменений (обычно сюда передается текущее время). Будет установлено в качестве метки времени “Timestamp” для всех объектов, переданных в файле
  • "DeletedEntities"- список удаленных объектов (подробнее см. “Формат выгрузки объекта”)
  • "ChangedEntities"- список измененных объектов (подробнее см. “Формат выгрузки объекта”)
  • "FiltersToApply" - перечень фильтров (не используется и в текущей версии протокола игнорируется)

...

  • Обязательные поля для всех объектов (независимо от типа)

    • "Id" - Идентификатор объекта (в формате GUID)
    • "IsDeleted" - признак удаления объекта (такие объекты будут удалены из БД)
    • "Timestamp" - метка времени изменения объекта
    • "Tablename" - имя таблицы, к которой принадлежит объект (подробнее см. “Описание таблиц и полей”)
    • "SyncFilter" - в текущей версии протокола не используется и игнорируется
  • "Fields" - поля объекта, характерные для каждой таблицы (подробнее см. “Описание таблиц и полей”)


Пример файла выгрузки

Приведенный пример отображает передачу / получение измененных объектов таблиц:

...

Document.Order


НазваниеDocument.Order
НазначениеЗаказ
ОписаниеВ таблице хранятся записи о заказах сделаных в рамках наряда


Список полей:


ПолеОбяз.ТипОписание
Id+GUIDУникальный идентификатор
Number
String (9)Порядковый номер (для сортировки)
DeletionMark+BooleanПризнак пометки на удаление
Status
GUIDИдентификатор перечисления "Статуса Заказа"
Description
String (256)Описание заказа


Document.Order_OrderPayment


НазваниеDocument.Order_OrderPaymentType
НазначениеЗаказ - статус оплаты
ОписаниеПеречень статусов оплаты заказа


Список полей:


ПолеОбяз.ТипОписание
Id+GUIDУникальный идентификатор
LineNumber
IntegerПорядковый номер (для сортировки)
Ref+GUIDИдентификатор Заказа
OrderPaymentType+GUIDИдентификатор "Статус оплаты"
Sum+Decimal (15.2)Сумма по указанному статусу оплаты



...

ПолеОбяз.ТипОписание
Id+GUIDУникальный идентификатор
LineNumber
IntegerПорядковый номер (для сортировки)
Ref+GUIDИдентификатор Заявки (Cheque.Id)
PaymentType+GUIDИдентификатор "Тип оплаты" (Catalog.ListOfPayments)
PaymentAmount+Decimal (15.2)Сумма по указанному Типу оплаты
RRN

String (50)
TransactionId
String (80)Идентификатор эквайринговой транзакции


Document.Cheque_ChequePhoto

...