...
Обмен инициируется со стороны клиента (внешней системы).
Клиент отправляет свой документ с данными и заполненным полем
TimestampFrom
, в нем передается время последней успешной синхронизации с сервером. Если это поле = 0, то синхронизация считается начальной и клиент получит полный набор данных с сервера.Сервер обрабатывает полученные данные:
- получает документ с данными
- заполняет в нём поле
TimestampTo
текущей датой - выполняет обновление записей или помечает их как удаленные
- всем затронутым (обновленным или удаленным) записям присваивается одно и то же значение
Timestamp
=TimestampTo
Сервер формирует набор данных для клиента:
- получает список записей из всех таблиц изменённых после TimestampFrom (у которых
Timestamp
>=TimestampFrom
) - дополняет список записей связанными сущностями (подробнее см. “Выгрузка связанных данных”)
- производит фильтрацию данных в соответствии с настроенными для каждой таблицы фильтрами (подробнее см. “Фильтрация данных”)
- исключает из выгрузки объекты, которые пришли со стороны клиента в рамках текущей сессии обмена
- формирует JSON-файл, сжимает и возвращает клиенту.
- получает список записей из всех таблиц изменённых после TimestampFrom (у которых
Клиент обрабатывает полученные данные
- измененные записи обновляются в БД
- записи к удалению - удаляются из БД
...
Фильтрация основывается на данных пользователя, авторизованного при подключении к точке входа (см. “Общее описание протокола и точки подключения”)
Фильтры формируются на этапе проектирования структуры данных. Текущие фильтры описаны в разделе “Типовые фильтры”.
Структура файла обмена
Общее описание
...
"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
...