SBIS API3 Загрузка — различия между версиями

Материал из razgovorov.ru
Перейти к: навигация, поиск
 
Строка 28: Строка 28:
 
# Все недостающие объекты должны быть получены и добавлены в документ синхронизации с помощью метода ExtSyncDoc.Write.  
 
# Все недостающие объекты должны быть получены и добавлены в документ синхронизации с помощью метода ExtSyncDoc.Write.  
 
# Повторяем пункты 3-4 до тех пор пока все необходимые данные не будут получены и подготовлены. ExtSyncDoc.Prepare вернет пустой список для получения документов, а количество подготовленных объектов будет равно общему количеству объектов.  
 
# Повторяем пункты 3-4 до тех пор пока все необходимые данные не будут получены и подготовлены. ExtSyncDoc.Prepare вернет пустой список для получения документов, а количество подготовленных объектов будет равно общему количеству объектов.  
# Запускам загрузку ExtSyncDoc.Execute.
+
# Запускам загрузку ExtSyncDoc.Execute. Асинхронный метод по окончании которого в СБИС загрузятся объекты из документа синхронизации. Сам документ синхронизации исполняет функции протокола загрузки и решения конфликтов - в СБИС у него есть соответствующий пользовательский интерфейс.

Текущая версия на 10:16, 5 июня 2019

API3 Предназначено для интеграции СБИС с внешними системами - под интеграцией понимается возможность получать передавать сведений об объектах данных или их изменениях между системами.


С точки зрения API все данные в СБИС разбиты на объекты синхронизации. Т.е. работа со всеми типами данных (справочники, документы, перечисления и показатели) делается через объект синхронизации.


API для объектов синхронизации предоставляет методы: прочитать, обновить, найти, получить список с фильтрацией. Это можно сделать адресуясь по идентификатору внешней системы, идентификатору СБИС или естественным ключам.


Операции пользователей по взаимодействию с внешней системой могут быть инициированы как из СБИС так и из внешней системы.


Существуют три основные операции которые выполняются при помощи API:


Загрузка в СБИС, Выгрузка из СБИС, Синхронизация


Загрузка

В конечном счете задача сводится к загрузке в СБИС списка объектов определенного типа. Сложность заключается, что как правило в составе объектов есть подобъекты количество которых изначально не известно, но без них загрузка не возможна. Например нужно загрузить накладную - у которой подобектами являются контрагент, номенклатура. эти подобъекты нужно создать только если их ещё нет в СБИС. В свою очередь загрузка этих подобъектов выливается в загрузку их подобъектов например для номенклатуры это будут все родители, единицы измерения и т.п.

Алгоритм загрузки выглядит следующим образом:

  1. Начитается новый сеанс загрузки - создается документ синхронизации.
  2. В него с помощью метода ExtSyncDoc.Write загружается список всех первичных объектов подлежащих загрузке или их идентификаторов. например данные накладных которые мы хотим загрузить или их идентификаторы. Для обеспечения наилучшей производительности загружать данные объектами следует пачками по 100-200 штук.
  3. После окончания загрузки над документом синхронизации выполняется команда ExtSyncDoc.Prepare. Данная команда осуществляет проверку загруженных данных, проверяет наличие объектов в СБИС, расставляет очередность загрузки, формирует список недостающих подобъектов. Prepare за одну итерацию проверяет определенное количество объектов и возвращает список объектов которых не хватает для загрузки и количество необработанных объектов. Например для нашего примера потребуется догрузить контрагента с идентификатором 4.
  4. Все недостающие объекты должны быть получены и добавлены в документ синхронизации с помощью метода ExtSyncDoc.Write.
  5. Повторяем пункты 3-4 до тех пор пока все необходимые данные не будут получены и подготовлены. ExtSyncDoc.Prepare вернет пустой список для получения документов, а количество подготовленных объектов будет равно общему количеству объектов.
  6. Запускам загрузку ExtSyncDoc.Execute. Асинхронный метод по окончании которого в СБИС загрузятся объекты из документа синхронизации. Сам документ синхронизации исполняет функции протокола загрузки и решения конфликтов - в СБИС у него есть соответствующий пользовательский интерфейс.