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