Вы находитесь на странице: 1из 84

СБИС COM SDK2 версия 1.2.

2 - пользовательская
документация
Содержание
АННОТАЦИЯ ......................................................................................................................................................... 4
СИСТЕМНЫЕ ТРЕБОВАНИЯ ................................................................................................................................... 4
УСТАНОВКА........................................................................................................................................................... 4
ОБЫЧНАЯ УСТАНОВКА .................................................................................................................................................... 4
РУЧНАЯ УСТАНОВКА ....................................................................................................................................................... 4
АВТОМАТИЧЕСКАЯ (ТИХАЯ) УСТАНОВКА ............................................................................................................................ 4
ОШИБКИ И КОДЫ ВОЗВРАТА ПРОГРАММЫ УСТАНОВКИ ....................................................................................................... 4
СТРУКТУРА ПАПОК ............................................................................................................................................... 5
ПРОВЕРКА РАБОТОСПОСОБНОСТИ ...................................................................................................................... 5
УДАЛЕНИЕ ............................................................................................................................................................ 6
РАБОТА С БИБЛИОТЕКОЙ .................................................................................................................................... 6
ТИПОВАЯ СХЕМА ИНТЕГРАЦИИ......................................................................................................................................... 6
ТЕХНИЧЕСКОЕ ОПИСАНИЕ .................................................................................................................................. 10
АКТУАЛЬНАЯ ВЕРСИЯ ................................................................................................................................................... 10
ФОРМАТ ПЕРЕДАВАЕМЫХ ДАННЫХ ................................................................................................................................ 10
Идентификатор ............................................................................................................................................... 10
Дата и время ..................................................................................................................................................... 11
Строка ................................................................................................................................................................ 11
Объект "НашаОрганизация" ........................................................................................................................... 11
Объект "Контрагент" ..................................................................................................................................... 11
Объект "Файл" .................................................................................................................................................. 12
Объект "Вложение" .......................................................................................................................................... 12
Объект "Сертификат" .................................................................................................................................... 12
Объект "Связи документов" ........................................................................................................................... 13
Объект "Документ" ......................................................................................................................................... 13
Объект "Информация о соединении с сервером" ......................................................................................... 14
Объект "Параметры протоколирования" .................................................................................................... 15
Способы активации ключа сертификата ..................................................................................................... 15
Типы ключей ....................................................................................................................................................... 15
Направления документа .................................................................................................................................. 15
Управление выводом списочных методов ..................................................................................................... 15
Идентификатор участника документооборота ........................................................................................ 16
Идентификатор оператора электронного документооборота ............................................................. 16
Объект Sbis.SimpleObject .................................................................................................................................. 16
ReadLastError .................................................................................................................................................................... 17
ReadLastErrorEx ................................................................................................................................................................. 17
Exists .................................................................................................................................................................................. 17
TypeOf ............................................................................................................................................................................... 17
Clear ................................................................................................................................................................................... 18
Write .................................................................................................................................................................................. 18
WriteObject ....................................................................................................................................................................... 18
WriteObjectList .................................................................................................................................................................. 18
Read ................................................................................................................................................................................... 19
ReadObject ........................................................................................................................................................................ 19
ReadObjectList ................................................................................................................................................................... 19
Объект Sbis.SimpleObjectList ............................................................................................................................ 19
ReadLastError .................................................................................................................................................................... 19
ReadLastErrorEx ................................................................................................................................................................. 20

http://sbis.ru 1
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
Add ..................................................................................................................................................................................... 20
Delete................................................................................................................................................................................. 20
Clear ................................................................................................................................................................................... 20
At ....................................................................................................................................................................................... 21
Count ................................................................................................................................................................................. 21
Объект Sbis.Docflow .......................................................................................................................................... 21
ReadLastError .................................................................................................................................................................... 21
ReadLastErrorEx ................................................................................................................................................................. 22
CreateSimpleObject ........................................................................................................................................................... 22
CreateSimpleObjectList ...................................................................................................................................................... 22
Authenticate ...................................................................................................................................................................... 22
AuthenticateByUserInfo .................................................................................................................................................... 23
AuthenticateByCertificate .................................................................................................................................................. 23
ConfirmAuth ...................................................................................................................................................................... 24
ConfirmAuthByCertificate .................................................................................................................................................. 24
ReadCertificates ................................................................................................................................................................. 24
ReadCertificatesForAuth .................................................................................................................................................... 25
VerifyCertificates ............................................................................................................................................................... 26
WriteConnectionInfo ......................................................................................................................................................... 26
ReadConnectionInfo .......................................................................................................................................................... 27
TerminateSession............................................................................................................................................................... 27
AccountsList ....................................................................................................................................................................... 27
SwitchAccount ................................................................................................................................................................... 28
ReadVersion ....................................................................................................................................................................... 28
WriteAttachment ............................................................................................................................................................... 28
WriteDocument ................................................................................................................................................................. 29
UpdateDocument .............................................................................................................................................................. 30
ReadDocument .................................................................................................................................................................. 31
DeleteDocument ................................................................................................................................................................ 32
EliminateDocument ........................................................................................................................................................... 32
RestoreDocument .............................................................................................................................................................. 33
PrepareAction .................................................................................................................................................................... 33
ExecuteAction .................................................................................................................................................................... 35
ReadServiceStages ............................................................................................................................................................. 36
ReadServiceStagesInfo ....................................................................................................................................................... 37
ReadChanges ..................................................................................................................................................................... 38
ReadDocuments ................................................................................................................................................................. 39
ReadDocumentsByEvents .................................................................................................................................................. 41
ReadOurOrganizations ....................................................................................................................................................... 43
GenerateHTMLFromXML ................................................................................................................................................... 44
ReadDocumentAsHTML ..................................................................................................................................................... 44
ReadContragentInfo........................................................................................................................................................... 44
AcquireCertificateActivation .............................................................................................................................................. 45
ActivateCertificate ............................................................................................................................................................. 46
EnableEmulation ................................................................................................................................................................ 46
ReadCurrentUserInfo ......................................................................................................................................................... 46
LoadBinaryDataFromURI.................................................................................................................................................... 46
LoadDataFromURIToFile .................................................................................................................................................... 47
ProcessServiceStagesEx ..................................................................................................................................................... 48
WriteDocumentEx.............................................................................................................................................................. 49
WriteDocumentsEx ............................................................................................................................................................ 51
ExecuteActionEx ................................................................................................................................................................ 51
CheckSession...................................................................................................................................................................... 53
Объект Sbis.StreamHelper ................................................................................................................................. 53
ReadLastError .................................................................................................................................................................... 53
ReadLastErrorEx ................................................................................................................................................................. 53
Base64ToFile ...................................................................................................................................................................... 54
StringToFile ........................................................................................................................................................................ 54
FileToBase64 ...................................................................................................................................................................... 54
StringToBase64 .................................................................................................................................................................. 54
FileToString ........................................................................................................................................................................ 54
Base64ToString .................................................................................................................................................................. 55
GenerateUUID.................................................................................................................................................................... 55
TransformXSLFile ............................................................................................................................................................... 55
TransformXSL ..................................................................................................................................................................... 56

http://sbis.ru 2
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
ПРОТОКОЛИРОВАНИЕ РАБОТЫ ...................................................................................................................................... 56
Имя и формат файла протокола ................................................................................................................... 56
Пример файла протокола ................................................................................................................................................ 57
Уровни протоколирования .............................................................................................................................. 57
Объект Sbis.Log ................................................................................................................................................. 57
ReadLastError .................................................................................................................................................................... 57
ReadLastErrorEx ................................................................................................................................................................. 58
WriteLogInfo ...................................................................................................................................................................... 58
ReadLogInfo ....................................................................................................................................................................... 58
АЛГОРИТМ АВТОМАТИЧЕСКОГО ВЫБОРА СЕРТИФИКАТА ДЛЯ ПОДПИСАНИЯ .......................................................................... 58
ОТЛАДКА И ЭМУЛЯЦИЯ РАБОТЫ С СЕРВЕРОМ .................................................................................................................. 59
Список отличий эмулятора от "реального" сервера ЭДО .......................................................................... 59
ВЫЗОВ ФУНКЦИЙ И ОБРАБОТКА ОШИБОК ........................................................................................................................ 59
РЕКОМЕНДАЦИИ ПРИ ОБРАБОТКЕ ОШИБОК ..................................................................................................................... 60
СПЕЦИФИКА РАБОТЫ КОМПОНЕНТОВ ............................................................................................................................. 60
СПРАВОЧНИКИ ............................................................................................................................................................ 60
Список типов пакетов документов ............................................................................................................... 60
Список этапов и действий ............................................................................................................................... 61
Список типов документов пакета ................................................................................................................. 63
Список названий допустимых событий ......................................................................................................... 64
Список допустимых направлений пакетов документов ............................................................................. 64
Список кодов состояний пакета документов............................................................................................... 64
Виды связей пакетов документов .................................................................................................................. 65
Список кодов ошибок API-интерфейса ........................................................................................................... 65
ПРИМЕРЫ РЕАЛИЗАЦИИ ОСНОВНЫХ АЛГОРИТМОВ ........................................................................................ 66
УСТАНОВКА ПАРАМЕТРОВ СОЕДИНЕНИЯ С СЕРВЕРОМ ........................................................................................................ 66
ЧТЕНИЕ ПАРАМЕТРОВ СОЕДИНЕНИЯ С СЕРВЕРОМ ............................................................................................................. 66
АУТЕНТИФИКАЦИЯ В ЛИЧНОМ КАБИНЕТЕ ПО СЕРТИФИКАТУ ............................................................................................... 67
АУТЕНТИФИКАЦИЯ В ЛИЧНОМ КАБИНЕТЕ ПО ЛОГИНУ/ПАРОЛЮ .......................................................................................... 67
ДВУХФАКТОРНАЯ АУТЕНТИФИКАЦИЯ В ЛИЧНОМ КАБИНЕТЕ ................................................................................................ 67
ЗАВЕРШЕНИЕ СЕАНСА РАБОТЫ С ЛИЧНЫМ КАБИНЕТОМ ..................................................................................................... 68
ОТПРАВКА ДОКУМЕНТА ................................................................................................................................................ 68
"Интеллектуальная" отправка одного документа с запуском в документооборот ............................ 69
"Интеллектуальная" отправка нескольких документов с запуском в документооборот ................... 70
"Ручная" отправка документа на сервер, подготовка и запуск в документооборот ............................ 71
Отправка на сервер документа без запуска в документооборот ............................................................ 71
Исправление загруженных документов ......................................................................................................... 71
УДАЛЕНИЕ ДОКУМЕНТА ................................................................................................................................................ 72
СВЯЗЫВАНИЕ ДОКУМЕНТОВ .......................................................................................................................................... 73
ОБРАБОТКА ИЗВЕЩЕНИЙ (СЛУЖЕБНЫХ ДОКУМЕНТОВ) ...................................................................................................... 73
УТВЕРЖДЕНИЕ, ОТКЛОНЕНИЕ ВХОДЯЩИХ ДОКУМЕНТОВ (ДЕЙСТВИЯ НАД ДОКУМЕНТАМИ) ..................................................... 74
ПОЛУЧЕНИЕ ВХОДЯЩИХ ДОКУМЕНТОВ ........................................................................................................................... 75
ОБРАБОТКА ИЗМЕНЕНИЙ В ДОКУМЕНТООБОРОТЕ............................................................................................................. 76
ЧТЕНИЕ ИНФОРМАЦИИ О ДОКУМЕНТЕ ............................................................................................................................ 76
РАБОТА С СЕРВЕРНЫМИ СЕРТИФИКАТАМИ....................................................................................................................... 77
СОХРАНЕНИЕ НА ДИСК АРХИВА ДОКУМЕНТА .................................................................................................................... 77
АННУЛИРОВАНИЕ ДОКУМЕНТОВ .................................................................................................................................... 77
РЕШЕНИЕ ЧАСТО ВОЗНИКАЮЩИХ ПРОБЛЕМ ПРИ РАБОТЕ С SDK .................................................................... 81
ОШИБКА АВТОРИЗАЦИИ ПРИ ВЫЗОВЕ RPC-ФУНКЦИИ ....................................................................................................... 81
РЕШЕНИЕ ПРОБЛЕМЫ С АУТЕНТИФИКАЦИЕЙ ПРИ ИСПОЛЬЗОВАНИИ SDK НА НЕСКОЛЬКИХ РАБОЧИХ МЕСТАХ ИЛИ ПРОЦЕССАХ ..... 81
ИСПРАВЛЕНИЕ ПРОБЛЕМЫ ЗАПУСКА SDK (НЕХВАТКА DLL ФАЙЛОВ) ..................................................................................... 82
ИСТОРИЯ ИЗМЕНЕНИЙ ....................................................................................................................................... 82
SDK ВЕРСИЯ 1.1.......................................................................................................................................................... 82
SDK ВЕРСИЯ 1.1.1....................................................................................................................................................... 82
SDK ВЕРСИЯ 1.1.2....................................................................................................................................................... 83
SDK ВЕРСИЯ 1.1.3....................................................................................................................................................... 83

http://sbis.ru 3
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
SDK ВЕРСИЯ 1.1.3.1.................................................................................................................................................... 83
SDK ВЕРСИЯ 1.1.4....................................................................................................................................................... 83
SDK ВЕРСИЯ 1.1.5....................................................................................................................................................... 83
SDK ВЕРСИЯ 1.1.6....................................................................................................................................................... 83
SDK ВЕРСИЯ 1.1.7....................................................................................................................................................... 83
SDK ВЕРСИЯ 1.1.8....................................................................................................................................................... 83
SDK ВЕРСИЯ 1.1.9....................................................................................................................................................... 83
SDK ВЕРСИЯ 1.1.10..................................................................................................................................................... 83
SDK ВЕРСИЯ 1.1.11..................................................................................................................................................... 83
SDK ВЕРСИЯ 1.1.11.1.................................................................................................................................................. 83
SDK ВЕРСИЯ 1.1.12..................................................................................................................................................... 84
SDK ВЕРСИЯ 1.1.12.1.................................................................................................................................................. 84
SDK ВЕРСИЯ 1.2.0....................................................................................................................................................... 84
SDK ВЕРСИЯ 1.2.1....................................................................................................................................................... 84
SDK ВЕРСИЯ 1.2.2....................................................................................................................................................... 84

Аннотация
Настоящий документ является описанием набора COM компонентов (версия 2.0) для интеграции
решений на базе Microsoft Windows с личным кабинетом online.sbis.ru в части документооборота.

Системные требования
Минимальные требования:
 Microsoft Windows XP SP3, центральный процессор 1 ГГц и выше, размер оперативной
памяти – 2 Гб и более;
 Internet Explorer версии 7.0 или выше;
 Для подписания на стороне клиента требуется СКЗИ КриптоПро CSP (полный список
совместимых криптопровайдеров доступен здесь).
 Библиотеку MSXML версии 4 или 6 (входит в стандартную поставку Windows XP SP3 и
выше).

Установка
Обычная установка
Для установки компонентов с выдачей запросов пользователю необходимо запустить
установочный файл "sbis-setup-sdk.exe" и следовать подсказкам системы.

Ручная установка
Для ручной установки необходимо отменить регистрацию и удалить предыдущие версии
компонентов, распаковать архив Sbis3SDK2.zip с дистрибутивом в папку установки на локальном
жёстком диске или скопировать файлы reg.bat, Sbis3SDK.dll, unreg.bat, выполнить reg.bat.

Автоматическая (тихая) установка


Для автоматической (тихой) установки компонентов необходимо выполнить установочный файл с
ключом командной строки "/verysilent":
sbis-setup-sdk.exe /verysilent

Ошибки и коды возврата программы установки


Код Описание

http://sbis.ru 4
СБИС COM SDK2 версия 1.2.2 - пользовательская документация

Код Описание

0 Установка успешно завершена

1 Установка не инициализировалась

2 Пользователь нажал "Отмена" до начала установки или выбрал "Нет" в окне "Эта
программа установит..."

3 Фатальная ошибка при подготовке перехода к следующей фазе установки


(например, из-за отображения предустановочных страниц мастера во время самой
установки). Подобное случается редко, в основном из-за нехватки памяти или
ресурсов системы.

4 Фатальная ошибка в процессе установки


Обратите внимание: к этим ошибкам не относится диалог "Прервать-Повторить-
Пропустить". В случае, если пользователь при этом выберет "Прервать", будет
возвращён код возврата 5.

5 Пользователь нажал "Отменить" во время установки или выбрал "Прервать" в


диалоге "Прервать-Повторить-Пропустить"

6 Установка внезапно прервана отладчиком

Структура папок
По умолчанию при установке компонентов используется следующая папка:
"C:\Program Files (x86)\SBIS3 SDK2" для 64-х битовой версии Windows,
"C:\Program Files\SBIS3 SDK2" для 32-х битовой версии.
После установки создаются подпапки:
 "Library" - основные библиотеки.
 "Samples" – примеры использования.
 "Документация" – настоящее описание.

Проверка работоспособности
Для проверки следует:
 запустить браузер Internet Explorer, в настройках безопасности разрешить выполнение
JavaScript и компонентов COM;
 открыть тестовую страничку из папки Sample\JS\Sbis3SDK sample page.html;
 ввести данные вашего личного кабинета (логин/пароль) или данные сертификата для
входа;
 установить носитель с ключом ЭП (для входа по сертификату);
 подключиться к серверу (нажать кнопку "Docflow_Authenticate" для аутентификации по
логину/паролю", при этом не должно возникнуть сообщений об ошибке. Для входа по
сертификату в поле Аутентификация.Сертификат.Отпечаток впечатать отпечаток
сертификата. Для получения списка сертификатов, допускающих аутентификацию –
щелкнуть "Docflow_ReadCertificatesForAuth";
 нажать кнопку "Docflow_ReadChanges" – при наличии документов в вашем личном кабинете
на экране отобразится их список.

http://sbis.ru 5
СБИС COM SDK2 версия 1.2.2 - пользовательская документация

Удаление
Для удаления компонентов необходимо:
 выйти из всех программ, использующих компоненты COM;
 приостановить действие антивирусной программы;
 щёлкнуть на элементе "Установка и удаление программ" ("Удаление программы" для
Windows Vista/7) в "Панели управления", выбрать "SBIS3 SDK", нажать "Удалить",
подтвердить действие. При необходимости выполнить перезагрузку компьютера.
Для ручного удаления необходимо запустить файл unreg.bat из подпапки Library папки установки
компоненты.
После удаления в реестре не должно остаться ключей вида:
HKEY_CLASSES_ROOT\SBIS.Docflow
HKEY_CLASSES_ROOT\SBIS.SimpleObject
HKEY_CLASSES_ROOT\SBIS.SimpleObjectList
HKEY_CLASSES_ROOT\SBIS.StreamHelper

Работа с библиотекой
SDK представляет собой набор компонентов, обеспечивающий формирование запросов к серверу
ЭДО, интерпретацию ответов и инкапсуляцию работы с СКЗИ.
Форматы данных и схема работы в большинстве случаев совпадают с описанной для
"программного интерфейса СБИС ЭДО версии 2", доступной в отдельном документе на
http://help.sbis.ru/exchange/integration. Реализация некоторых функций дополняет результаты,
получаемые с сервера (например, в список сертификатов для подписания добавляется информация
о подходящих локальных сертификатах).

Типовая схема интеграции


Интеграция со СБИС ЭДО с помощью СБИС SDK, как правило, включает несколько типовых
действий или их комбинации:
1. инициализация COM компоненты:
a. создание одного или нескольких экземпляров компоненты;
b. установка параметров логирования;
c. передача параметров подключения к сети Интернет;
2. аутентификация в личном кабинете:
a. по сертификату;
b. по логину/паролю;
3. отправка исходящих документов;
4. циклические действия:
a. обработка извещений (служебных документов);
b. получение входящих документов;
c. обработка (утверждение/отклонение) входящих документов;
d. сохранение архива;
e. синхронизация документов;
5. завершение сеанса работы с личным кабинетом;
6. завершение работы с компонентами, выгрузка из памяти.
Рекомендуется:
 аутентификацию производить один раз перед началом работы или в случае отсутствия
запросов к серверу более 24 часов;
 отправку документов выполнять по мере необходимости;
 обработку служебных этапов вести непрерывно, в независимом от прочих асинхронном
процессе (при большом документообороте – в нескольких процессах) с небольшими
паузами 1…5 минут в запросах при отсутствии этапов для обработки;

http://sbis.ru 6
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
 получение входящих, обработку изменений в документообороте, пополнение архива вести
непрерывно в асинхронном режиме с небольшими паузами 1…5 минут при отсутствии
изменений.

http://sbis.ru 7
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
Схема взаимодействия в общем виде:

http://sbis.ru 8
СБИС COM SDK2 версия 1.2.2 - пользовательская документация

Начало

Инициализация ActiveX
docflow = new ActiveXObject( "SBIS.Docflow" )
компоненты

Установка параметров
docflow.WriteLogInfo(...)
логирования

Установка параметров соединения


docflow.SetConnectionInfo(...)
с сервером

Аутентификация в личном docflow.ReadCertificatesForAuth


docflow.Authenticate
кабинете docflow.AuthenticateByCertificate

Отправка исходящих docflow.WriteDocumentEx


docflow.WriteDocumentsEx
документов

Цикл

Обработка извещений docflow.ProcessServiceStagesEx

Цикл
Получение docflow.ReadChanges
входящих документов, docflow.ReadDocument
пополнение архива, docflow.LoadBinaryDataFromURI
синхронизация изменений docflow.LoadDataFromURIToFile

Цикл

Обработка входящих
в вашей учётной системе
Цикл

Утверждение/отклонение docflow.ExecuteActionEx

Работа с реестрами и списками


Docflow.ReadDocuments
документов,
Docflow.ReadDocumentsByEvents
Синхронизация документов

Завершение сеанса работы


docflow.TerminateSession
с личным кабинетом

Завершение работы с
компонентой

Конец

http://sbis.ru 9
СБИС COM SDK2 версия 1.2.2 - пользовательская документация

Для наглядности все действия расположены "одно за другим", на самом деле последовательность
операций (за исключением аутентификации и завершения сеанса) может быть любой. Кроме того,
допускается параллельное выполнение операций.
Рекомендуемое ограничение на число одновременных подключений к серверу: не более 20.
Более подробно указанные типовые действия описаны в разделе "Примеры реализации основных
алгоритмов".

Техническое описание
Все интерфейсы и свойства объектов представлены в формате МIDL (Microsoft Interface Definition
Language) - текстовый язык описания интерфейсов, разработанный корпорацией Microsoft.

Актуальная версия
Для того чтобы узнать номер актуальной версии SDK, необходимо перейти по адресу:
https://update.sbis.ru/sbis_edo_sdk/version.txt

Формат передаваемых данных


Для передачи информации в параметрах запросов и ответах используются три базовых типа
данных: строка, объект и массив объектов.
Строка описывается ключом ("key") и значением ("value").
Объект описывается набором (массивом) пар "ключ" - "значение", где в качестве "значение" может
выступать строка, объект или массив объектов.
Массив объектов – набор однотипных объектов.

Идентификатор
Для адресации документов, вложений, редакции документа используется понятие
"идентификатор".
Для входящего документа идентификатор генерируется сервером при получении документа по
стандарту UUID (см. http://ru.wikipedia.org/wiki/UUID). Это 16-байтный (128-битный) номер,
разделённый символами "-" ("тире") по маске "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx", где "x" –
шестнадцатеричная цифра (строчная "a".."f").
Пример идентификатора входящего документа:
"73e95d38-8952-4692-a70a-443448849bf1"

Идентификатор исходящего документа – произвольная текстовая строка (в дополнение к


ограничениям, описанных в подразделе "Строка", максимальная длина не должна превышать 100
символов), генерируется пользователем. При этом обязанность пользователя обеспечивать
уникальность идентификаторов для новых документов. Указание идентификатора существующего
документа при, например, отправке приведёт к аннулированию существующего созданию новой
редакций существующего.
Пример идентификатора исходящего документа:
"СчетФактураВыданный:917ba5b8-904b-11e2-aeb2-00304876fef3"

Идентификатор вложения документа - текстовая строка в формате UUID (описание см. выше).
Допускается указание пользователем идентификаторов вложений при записи в составе исходящего
документа, при этом должна обеспечиваться уникальность идентификаторов для всех
существующих вложений в схеме данных. Для входящих документов идентификаторы вложений
назначаются сервером также в формате UUID.
Пример идентификатора вложения входящего или исходящего документа:
"73e95d38-8952-4692-a70a-443448849bf1"

http://sbis.ru 10
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
Идентификаторы документов и вложений не передаются от отправителя к получателю.
В качестве дополнительного реквизита (не передаваемого при документообороте со стороны на
сторону) в объекте "Документ" введено поле "Редакция.ИдентификаторИС", которое может
содержать произвольную строку (с учётом ограничений на передаваемые значения, см. описание
типа "Строка") для каждой редакции.
Внимание! После назначения идентификаторов на исходящий документ и вложения
рекомендуется сохранить в вашей учётной системе. При повторных отправках следует
использовать сохранённые идентификаторы для правильной адресации и исключения появления
лишних дубликатов документов и/или вложений.

Дата и время
Сервер online.sbis.ru работает по московскому времени.
Обязанность клиента правильно преобразовать отправляемые и получаемые данные о дате и
времени в соответствие со своим часовым поясом.
Формат строк, содержащих дату: "ДД.ММ.ГГГГ". Пример: "31.12.2013".
Формат строк, содержащих время: "ЧЧ.ММ.СС". Пример: "23.59.59".
Формат строк, содержащих дату и время: "ДД.ММ.ГГГГ ЧЧ.ММ.СС". Пример: "31.12.2013 23.59.59".

Строка
Строка - произвольный набор символов с длиной до 250 символов (если не оговорено особо).
Символы, недопустимые для передачи в JSON-RPC запросе (см. стандарт RFC 4627) и XML,
необходимо исключить или "экранировать".
Все значения зависят от регистра.

Объект "НашаОрганизация"
Содержит информацию о "Нашей организации".
Объект "НашаОрганизация":
 "СвЮЛ": объект
o "ИНН": строка, 10 символов
o "КПП": строка, 9 символов
o "КодФилиала", строка
o "Название": строка, название организации
o "КодСтраны": строка, уникальный идентификатор кода страны в формате цифровой ISO 3166-1
 "СвФЛ": объект
o "ИНН": строка, 12 символов
o "Фамилия": строка
o "Имя": строка
o "Отчество": строка

Элементы "СвЮЛ" и "СвФЛ" являются взаимоисключающими.

Объект "Контрагент"
Содержит информацию о контрагенте.
"Контрагент": объект:
 "СвЮЛ": объект
o "ИНН": строка, 10 символов
o "КПП": строка, 9 символов
o "КодФилиала", строка
o "Название": строка, название организации
o "КодСтраны": строка, уникальный идентификатор кода страны в формате цифровой ISO 3166-1
 "СвФЛ": объект
o "ИНН" : строка, 12 символов
o "Фамилия": строка
o "Имя": строка
o "Отчество": строка

http://sbis.ru 11
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
 "Подразделение": объект
o "Идентификатор": строка, код подразделения на стороне контрагента
 "Телефон": строка
 "Email": строка

Элементы "СвЮЛ" и "СвФЛ" являются взаимоисключающими.

Объект "Файл"
Содержит информацию о бинарных данных - файле (страницы вложения или ЭП).
"Файл": объект:
 "Имя": строка, имя файла
 "Ссылка": строка, ссылка для скачивания бинарных данных HTTP GET запросом
 "ДвоичныеДанные": строка, используется для отправки содержимого бинарных данных на сервер, переведённых в
кодировку Base64.

Объект "Вложение"
Содержит информацию о вложении документа.
"Вложение": объект:
 "Идентификатор": строка, описание и формат см. в разделе "Идентификатор", используется для адресации вложения
 "Тип": строка, название типа формализованного документа
 "Название": строка, название документа, в случае отсутствия берётся из тела формализованного документа, пустое
для неформализованного
 "Удален": строка "Да"/"Нет", флаг удаления документа
 "УдаленКонтрагентом": строка "Да"/"Нет", флаг удаления вложения документа получателем для внешнего
документооборота
 "Модифицирован": строка "Да"/"Нет", флаг изменения вложения документа и необходимости обновления в учётной
системе (взводится, как правило, после модификации в результате подготовки к этапу документооборота, когда
меняется, например, подписант или проставляется идентификатор участника документооборота)
 "Служебный": строка, значение "Да" - признак служебного вложения, "Нет" – первичного
 "Дата": строка, извлекается из тела формализованного вложения, дата загрузки для неформализованного документа
 "Номер": строка, извлекается из тела формализованного вложения, пустое для неформализованного документа
 "Сумма": строка, извлекается из тела формализованного вложения, пустое для неформализованного документа
 "ВерсияФормата": строка, информация о версии формата формализованного документа
 "Направление": строка, указывает направление конкретного вложения документа (т.е. это может быть "входящее"
вложение "исходящего" документа, например, "подтверждение даты получения" от оператора)
 "Редакция": объект
o "ДатаВремя": дата и время создания редакции
o "Номер": число целое, номер редакции по порядку (исходная версия имеет редакцию "1")
 "СсылкаНаHTML": строка, ссылка для скачивания данных HTML представления (допустимо только для
формализованный документов из 1-й страницы, для прочих вариантов пуста)
 "Файл": объект
o …
 "Подпись": массив объектов
o "Сертификат": объект, реквизиты владельца сертификата ЭП
 "ФИО": строка, подписант
 "Должность": строка
 "ИНН": строка
 "Название": строка, название организации
 "Отпечаток": строка, отпечаток
 "Квалифицированный": строка "Да"/"Нет"
 "ДействителенС": дата и время
 "ДействителенПо": дата и время

o "Файл": объект
 …

Объект "Сертификат"
Содержит информацию о сертификате ЭП, локальном или расположенном на сервере.
"Сертификат": объект:
 "ФИО": строка
 "Должность": строка
 "ИНН": строка
 "Название": строка
 "КодСтраны": строка, уникальный идентификатор кода страны в формате цифровой Alpha-2 ISO 3166-1

http://sbis.ru 12
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
 "Отпечаток": строка (без пробелов в верхнем регистре)
 "Квалифицированный": строка "Да"/"Нет"
 "ДействителенС": дата и время
 "ДействителенПо": дата и время
 "Ключ": объект
o "Активирован": строка "Да"/"Нет" (имеет смысл только для серверных сертификатов)
o "СпособАктивации": строка (имеет смысл только для серверных сертификатов)
o "Тип": строка, описание и возможные значения см. в разделе "Типы ключей"
Поле "Отпечаток" должно передаваться на сервер в верхнем регистре без пробелов.

Объект "Связи документов"


Описывает тип связи, документ и сумму.
Объект "Связи документов":
 "Документ": объект
o "Идентификатор": строка
o "Дата": строка в формате "ДД.ММ.ГГГГ"
o "Номер": строка
o "Тип": строка
 "ВидСвязи": строка (см. раздел "Связывание документов" и справочник "Виды связей документов")
 "Сумма": строка

Объект "Документ"
За редким исключением основной единицей передаваемых в параметрах запросов к серверу и
получаемых в качестве ответа есть объект "Документ", который подробно описана ниже.
Объект "Документ":
 "Идентификатор": строка, описание и формат см. в разделе "Идентификатор", используется для адресации
документа, не передаётся от участника документооборота к участнику
 "Дата": строка в формате "ДД.ММ.ГГГГ", используется при сортировке и фильтрации в реестрах документов на
сайте online.sbis.ru
 "Номер": строка, номер документа, произвольное значение
 "Сумма": строка, сумма документа
 "Название": строка, название документа, формируется автоматически при загрузке или получении
 "Примечание": строка, комментарий к документу, произвольное значение
 "ДатаВремяСоздания": строка в формате "ДД.ММ.ГГГГ ЧЧ.ММ.СС", содержит дату и время записи первой редакции
документа в личном кабинете
 "Удален": строка "Да"/"Нет", флаг удаления документа
 "Тип": строка, указывает общий тип документа (см. справочник допустимых значений ниже)
 "Направление": строка, задаёт направление документа (см. справочник направлений документа)
 "СсылкаДляНашаОрганизация": строка, содержит ссылку, переход по которой приведёт к отображению карточки
документа в личном кабинете нашей организации (для входа в личный кабинет может потребоваться
аутентификация)
 "СсылкаДляКонтрагент": строка, содержит ссылку, переход по которой приведёт к отображению карточки
документа в личном кабинете контрагента (для входа в личный кабинет требуется сертификат). При наличии
действительного сертификата ЭП при открытии данной ссылки в случае отсутствия у контрагента личного
кабинета производится автоматическая регистрация кабинета контрагента, подключение электронного
документооборота и отображение документа
 "СсылкаНаАрхив": строка, содержит ссылку для получения архива последней редакции документа (всех вложений
и ЭП в виде zip архива).
 "Состояние": объект, состояние документа
o "Код": число, числовое состояние документа (составить справочник кодов состояние документа)
o "Название": строка, текстовое состояние документа ("Отправлен", "Доставлен", "Удален контрагентом" и
т.п.).
o "Комментарий": строка, комментарий к текущему состоянию
 "Редакция": объект, информация о редакции документа
o "Идентификатор": строка
o "ПримечаниеИС": строка, произвольное примечание информационной системы
o "ДатаВремя": строка в формате "ДД.ММ.ГГГГ ЧЧ.ММ.СС", дата и время создания редакции
 "Регламент": объект
o "Идентификатор": строка, идентификатор регламента (техническая информация)
o "Название": строка, название регламента
 "ДокументОснование": массив объектов
o "Документ": объект
 "Идентификатор": строка
 "Дата": строка в формате "ДД.ММ.ГГГГ"
 "Номер": строка
 "Тип": строка
o "ВидСвязи": строка (см. справочник связей документов)

http://sbis.ru 13
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
o "Сумма": строка
 "ДокументСледствие": массив объектов
o "Документ": объект
 "Идентификатор": строка
o "ВидСвязи": строка (см. справочник связей документов)
o "Сумма": строка
 "НашаОрганизация": объект, описывает "нашу организацию" по документу
o …
 "Контрагент": объект, описывает контрагента по документу
o …
 "Подразделение": объект
o "Название": строка, название ответственного подразделения по документу
o "Идентификатор": строка, код ответственного подразделения по документу
 "Ответственный": объект, информация об ответственном по документу
o "Фамилия": строка
o "Имя": строка
o "Отчество": строка
o "Идентификатор": строка, табельный номер (идентификатор)
 "Автор": объект, информация об авторе документа
o "Фамилия": строка
o "Имя": строка
o "Отчество": строка
o "Идентификатор": строка, табельный номер (идентификатор)
 "Вложение": массив объектов, содержит отправленные, полученные, первичные и служебные вложения по
текущему документу:
o …
 "Событие": массив объектов, содержит информацию об изменениях в документообороте (отправка, получени
первичных или служебных вложений по каждой редакции, удалении, аннулировании и т.д.)
o "ДатаВремя": дата и время фиксации (завершения) события
o "Название": строка, описание события (см. справочник)
o "Идентификатор": строка, уникальный идентификатор события
o "Комментарий": строка, комментарий, оставленный пользователем или системой, может быть пустым
o "Вложение": массив объектов, описание совпадает с Документ->Вложение, ассоциированных с текущим
сообытием (список полученных или отправленных первичных вложений, служебный документ или
документы):
 …
 "Этап": массив объектов, описывает возможные действия над документами, документооборот по которым не
завершён:
o "Название": строка, название этапа (пример: "Отправка", "Утверждение")
o "Идентификатор": строка, может отсуствовать
o "Служебный": строка "Да"/"Нет"
o "Вложение": массив объектов, описание совпадает с разделом "Документ->Вложение"
 …
o "Действие": массив объектов
 "Название": строка, список допустимых значений см. в разделе "Список этапов и действий" (пример
"Отправить", "Утвердить", "Отклонить")
 "ТребуетПодписания": строка "Да"/"Нет". "Да" означает требование регламента осуществить
подписание перед завершением этапа, т.е. указать информацию о подписанте при выполнении
подготовки к действию действия по этапу
 "ТребуетКомментария": строка "Да"/"Нет", "Да" означает требование регламента указать непустой
комментарий при выполнении подготовки к действию действия по этапу
 "Сертификат": массив объектов, описывает информацию о подписанте (организация, ФИО,
должность) или сертификат, который будет использоваться при подписании на стороне сервера:
 …

Столь значительный объём информации, как правило, лишь возвращается сервером. Для отправки
в качестве входящего параметра передаётся лишь малая, обязательная часть структуры
"Документ". Набор обязательных полей документирован в описании каждой команды.
В ответных данных массивы с одним объектом передаются как массивы.
Для упрощения подготовки запроса на сервер вместо массива с единичным объектом допускается
передавать объект (например, вместо массива объектов "Вложение" передать объект "Вложение").
Поле Документ.Идентификатор используется для адресации последней редакции документа,
Документ.Редакция.Идентификатор – конкретной редакции документа.

Объект "Информация о соединении с сервером"


Содержит информацию о параметрах соединения с сервером online.sbis.ru.
 "АдресСервера": строка, по умолчанию https://online.sbis.ru/, изменять не рекомендуется.

http://sbis.ru 14
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
 "ТаймаутСервера": строка, время ожидания ответа на запрос, мс. При превышении установленного интервала
возвращается ошибка. Значение по умолчанию: "60000".
 "ИдентификаторСессии": строка, идентификатор сессии обмена данными
 "ОпределятьПроксиАвтоматически": строка "Да" или "Нет", при значении "Да" параметры настройки доступа к сети
интернет берутся из настроек операционной системы, при значении "Нет" – из параметров "АдресПроксиСервера",
"ЛогинПроксиСервера", "ПарольПроксиСервера". Значение по умолчанию: "Да".
 "АдресПроксиСервера": строка, по умолчанию пустая
 "ЛогинПроксиСервера": строка, по умолчанию пустая
 "ПарольПроксиСервера": строка, по умолчанию пустая
 "ИнформацияОПриложении": строка, содержащая информацию о клиенте пользователя. Допускается использование
латинских букв любого регистра, цифр, пробелов, табуляции и символов: («_»; «/»; «\»; «.»; «,»). Длина ограничена
50 символами. Может отсутствовать

Объект "Параметры протоколирования"


Содержит информацию о параметрах протоколирования компонентов SDK.
 "Папка": строка, путь для создания файлов протокола.
 "Уровень": строка, задаёт объём протоколируемых действий (значение от "1" до "9").

Способы активации ключа сертификата


Тип данных, используемый при возврате информации о статусе активированности ключа ЭП,
хранящегося на сервере.
Перечисляемое "СпособАктивации" может иметь одно из следующих значений:
 "Активирован";
 "СтатическийКод";
 "ВременныйКод".
Значения перечисляемого являются регистрозависимыми.

Типы ключей
Тип данных, описывающий тип ключа ЭП.
Перечисляемое "Тип" может иметь одно из следующих значений:
 "Серверный";
 "Клиентский".
Значения перечисляемого являются регистрозависимыми.

Направления документа
Тип данных, задаёт направление документа.
Перечисляемое "Направление" может иметь одно из следующих значений:
 "Входящий";
 "Исходящий".
Значения перечисляемого являются регистрозависимыми.

Управление выводом списочных методов


Выдача результата работы списочных методов разбивается на "страницы" (например, список из
1000 документов выдаётся 40 отдельными запросами по 25 документов), для управления вводится
дополнительный объект данных "Навигация", на входе описывающий номер страницы, число
записей на странице, флаг варианта информирования о наличии страниц после запрошенной:
 Объект "Фильтр":
 …
 "Навигация": объект
o "РазмерСтраницы": строка, задаёт число записей, которые будут возвращены.
o "Страница": строка, задаёт номер страницы, с которой будет осуществлена выборка, нумерация страниц
от 0 (для первой страницы), при указании значения "-1" возвращается последняя страница и
информация об общем числе записей.

http://sbis.ru 15
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
o "ВернутьРазмерСписка": строка "Да"/"Нет".

Значение параметра "РазмерСтраницы" находится в диапазоне от 1 до 200, если в описании метода


не указано иное значение, то подразумевается 25.
Значение параметра "Страница" исчисляется от нуля для самой первой страницы, по умолчанию
подразумевается 0.

Для команды ReadChanges используется «упрощенный» вариант объекта «Навигация»,


где на входе указывается только число записей на странице, значение параметра
«РазмерСтраницы« находится в диапазоне от 1 до 50, по умолчанию — 25.
Если параметр "Навигация.ВернутьРазмерСписка" существует и имеет значение "Да", в результат
будет включено поле "Навигация.РазмерСписка", который будет содержать общее число записей
по фильтру на момент запроса. Рекомендуется пользоваться с осторожностью, т.к. это заставляет
дважды запрашивать сервер (в два раза увеличивает накладные расходы).
Результат дополняется объектом "Навигация":
 … (результат выполнения – объект, массив объектов)
 "Навигация": объект:
o "РазмерСтраницы": строка, указывает число записей на странице, возвращённой в качестве результата
o "Страница": строка, указывает номер страницы, с которой осуществлена выборка
o "ЕстьЕще": строка "Да"/"Нет"
o "РазмерСписка": строка, содержит общее число записей в выборке, присутствует при передаче "Да" в
качестве значения входного параметра "Навигация.ВернутьРазмерСписка"

Идентификатор участника документооборота


Формат некоторых формализованных вложений подразумевает использование идентификатора
участника электронного документооборота. Данным идентификатором обладают контрагенты,
подключенные к электронному документообороту или контрагенты, которым отправлено
приглашение на подключение к электронному документообороту. Если контрагент намеренно
отказался от участия в электронном документообороте, у него отсутствует идентификатор
участника.
Программный интерфейс спроектирован таким образом, чтобы пользователь интерфейса не
задумывался о наличии или специфике использования идентификатора участника электронного
документооборота.
Важно! Категорически не рекомендуется фиксировать идентификатор участника
электронного документооборота в вашей информационной системе или каким-либо
иным образом использовать его. Мы оставляем за собой без уведомления право менять
формат и значения идентификаторов участников документооборота.
Для адресации контрагента-ЮЛ следует использовать пару ИНН+КПП, контрагента-ФЛ – ИНН.

Идентификатор оператора электронного документооборота


Идентификатор оператора электронного документооборота, назначенный Федеральной налоговой
службой ООО "Компания "Тензор" - "2BE" (см. http://ereport.sbis.ru/uc).
Программный интерфейс спроектирован таким образом, чтобы пользователь интерфейса не
задумывался о наличии или специфике использования идентификатора оператора электронного
документооборота.
Категорически не рекомендуется фиксировать в вашей учётной системе или каким-либо иным
образом использовать идентификатор оператора электронного документооборота.

Объект Sbis.SimpleObject
Объект-контейнер для хранения строк, других объектов Sbis.SimpleObject, массивов
Sbis.SimpleObjectList. Надстройка над структурой данных "Объект" (см. описание программного
интерфейса).

http://sbis.ru 16
СБИС COM SDK2 версия 1.2.2 - пользовательская документация

ReadLastError
Назначение: получить текст ошибки после вызова любой функции объекта (отличной от
ReadLastErrorEx).
Объявление:
HRESULT ReadLastError( [out, retval] BSTR *value_out );

Входные параметры
Отсутствуют.

Результат работы
 value_out – строка с текстом ошибки, пустая, если ошибки не было.

ReadLastErrorEx
Назначение: получить текст ошибки после вызова любой функции объекта.
Объявление:
HRESULT ReadLastErrorEx( [out, retval] ISimpleObject **value_out );

Входные параметры
Отсутствуют.

Результат работы
 value_out – объект с расширенным описанием ошибки, пустой, если ошибки не было, структура описана в разделе
"Вызов функций и обработка ошибок".

Exists
Назначение: проверить существование у объекта элемента "ключ-значение" по имени ключа.
Объявление:
HRESULT Exists( [in] BSTR key_in, [out, retval] long *result_out );

Входные параметры
 key_in – строка с именем ключа.

Результат работы
 result_out – 0, если ключа с именем не существует, любое иное значение – существует.

TypeOf
Назначение: Получить название типа значения элемента по ключу.
Объявление:
HRESULT TypeOf( [in] BSTR key_in, [out, retval] BSTR *value_out );

Входные параметры
 key_in – строка с именем ключа.

Результат работы
 value_out – строка с возможными значениями: "строка", "объект", "массив объектов".

Кроме приведённых, все прочие значения названия типа следует игнорировать, элемент с таким
типом не использовать.

http://sbis.ru 17
СБИС COM SDK2 версия 1.2.2 - пользовательская документация

Clear
Назначение: очистить все сохранённые элементы "ключ-значение".
Объявление:
HRESULT Clear( [out, retval] long *result_out );

Входные параметры
Отсутствуют.

Результат работы
 result_out – всегда 0.

Write
Назначение: записать значение-строку по ключу.
Объявление:
HRESULT Write( [in] BSTR key_in, [in] BSTR value_in, [out, retval] long *result_out );

Входные параметры
 key_in – строка с именем ключа.
 value_in – строка со значением ключа.

Результат работы
 result_out – 0 в случае ошибки, любое иное значение – успех.

WriteObject
Назначение: Записать значение-объект по ключу.
Объявление:
HRESULT WriteObject( [in] BSTR key_in, [in] ISimpleObject *value_in, [out, retval] long
*result_out );

Входные параметры
 key_in – строка с именем ключа.
 value_in – объект со значением ключа.

Результат работы
 result_out – 0 в случае ошибки, любое иное значение – успех.

WriteObjectList
Назначение: записать значение-массив объектов по ключу.
Объявление:
HRESULT WriteObjectList( [in] BSTR key_in, [in] ISimpleObjectList *value_in, [out, retval]
long *result_out );

Входные параметры
 key_in – строка с именем ключа.
 value_in – массив объектов с именем ключа.

Результат работы
 result_out – 0 в случае ошибки, любое иное значение – успех.

http://sbis.ru 18
СБИС COM SDK2 версия 1.2.2 - пользовательская документация

Read
Назначение: прочитать значение-строку по ключу.
Объявление:
HRESULT Read( [in] BSTR key_in, [out, retval] BSTR *value_out );

Входные параметры
 key_in – строка с именем ключа.

Результат работы
 value_out – строка по ключу.

В случае получения пустого значения следует вызвать функцию ReadLastError, если она вернёт
пустое значение, это будет означать, что переданная строка на самом деле пуста, иное следует
трактовать как ошибку чтения значения.

ReadObject
Назначение: прочитать значение-объект по ключу.
Объявление:
HRESULT ReadObject( [in] BSTR key_in, [out, retval] ISimpleObject **value_out );

Входные параметры
 key_in – строка с именем ключа.

Результат работы
 value_out – объект по ключу.

Возврат пустого результата (NULL) означает ошибку, необходимо вызвать


ReadLastError/ReadLastErrorEx для определения причины.

ReadObjectList
Назначение: прочитать значение-массив объектов по ключу.
Объявление:
HRESULT ReadObjectList( [in] BSTR key_in, [out, retval] ISimpleObjectList **value_out );

Входные параметры
 key_in – строка с именем ключа.

Результат работы
 value_out – массив объектов по ключу.

Возврат пустого результата (NULL) означает ошибку, необходимо вызвать


ReadLastError/ReadLastErrorEx для определения причины.

Объект Sbis.SimpleObjectList
Объект-контейнер массива объектов Sbis.SimpleObject. Надстройка над структурой данных "Массив
объектов" (см. описание программного интерфейса).
Обеспечивает работу с массивом объектов Sbis.SimpleObject

ReadLastError
Назначение: получить текст ошибки, возникшей после предыдущего вызова функции объекта.

http://sbis.ru 19
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
Объявление:
HRESULT ReadLastError( [out, retval] BSTR *value_out );

Входные параметры
Отсутствуют.

Результат работы
 value_out – текст сообщение об ошибке.

ReadLastErrorEx
Назначение: получить объект с расширенным описанием ошибки, возникшей после предыдущего
вызова функции объекта.
Объявление:
HRESULT ReadLastErrorEx( [out, retval] ISimpleObject **value_out );

Входные параметры
Отсутствуют.

Результат работы
 объект SimpleObject, структура описана в разделе "Вызов функций и обработка ошибок".

Add
Назначение: добавление элемента в массив.
Объявление:
HRESULT Add( [in] ISimpleObject *value_in, [out, retval] long *result_out );

Входные параметры
 value_in – объект для добавления.

Результат работы
 result_out – 0 – ошибка, иное значение – успех.

Delete
Назначение: удаление элемента массива по номеру.
Объявление:
HRESULT Delete( [in] long item_index_in, [out, retval] long *result_out );

Входные параметры
 item_index_in – номер элемента массива для удаления, нумераци от 0 до N-1, где N – число элементов массива

Результат работы
 result_out – 0 – ошибка, иное значение – успех.

Clear
Назначение: очистка массива.
Объявление:
HRESULT Clear( [out, retval] long *result_out );

http://sbis.ru 20
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
Входные параметры
Отсутствуют.

Результат работы
 result_out – 0 – ошибка, иное значение – успех.

At
Назначение: получить элемент массива по номеру.
Объявление:
HRESULT At( [in] long item_index_in, [out, retval] ISimpleObject **value_out );

Входные параметры
 item_index_in – номер элемента массива для удаления, нумераци от 0 до N-1, где N – число элементов массива

Результат работы
 value_out – объект.

В случае ошибки будет возвращено пустое значение, для детализации ошибки необходимо вызвать
ReadLastError/ReadLastErrorEx.

Count
Назначение: получение числа элементов массива.

Входные параметры
Отсутствуют.

Результат работы
 число элементов в массиве.

В случае получения нулевого значения следует вызвать ReadLastError, при этом получение пустого
значения означает успешное чтение числа элементов массива, непустое содержит описание
ошибки.

Объект Sbis.Docflow
"Ядро" SDK, обеспечивающее отправку запросов, интерпретацию ответов. Методы на входе имеет
как правило объект Sbis.SimpleObject, на выходе – строку, объект Sbis.SimpleObject или
Sbis.SimpleObjectList.
Протоколирование работы объекта описано в разделе "Протоколирование".

ReadLastError
Назначение: получить текст ошибки, возникшей после предыдущего вызова функции объекта.
Объявление:
HRESULT ReadLastError( [out, retval] BSTR *value_out );

Входные параметры
Отсутствуют.

Результат работы
 value_out – строка, идентификатор сессии

http://sbis.ru 21
СБИС COM SDK2 версия 1.2.2 - пользовательская документация

ReadLastErrorEx
Назначение: получить объект с расширенным описанием ошибки, возникшей после предыдущего
вызова функции объекта.
Объявление:
HRESULT ReadLastErrorEx( [out, retval] ISimpleObject **value_out );

Входные параметры
Отсутствуют.

Результат работы
 value_out - объект SimpleObject, структура описана в разделе "Вызов функций и обработка ошибок".

CreateSimpleObject
Назначение: создать экземпляр объекта SimpleObject.
Объявление:
HRESULT CreateSimpleObject( [out, retval] ISimpleObject **new_obj_out );

Входные параметры
Отсутствуют.

Результат работы
 new_obj_out – пустой объект "SimpleObject"

CreateSimpleObjectList
Назначение: создать экземпляр объекта SimpleObjectList.
Объявление:
HRESULT CreateSimpleObjectList( [out, retval] ISimpleObjectList **new_list_out );

Входные параметры
Отсутствуют.

Результат работы
 new_list_out – пустой объект "SimpleObjectList"

Authenticate
Назначение: аутентификация в личном кабинете по логину/паролю.
Аналог в программном интерфейсе СБИС (API):
 СБИС.Аутентифицировать.
Объявление:
HRESULT Authenticate( [in] BSTR auth_login_in, [in] BSTR auth_password_in, [out, retval] long
*result_out );

Входные параметры
 auth_login_in – строка с логином
 auth_password_in – строка с паролем

Результат работы
 result_out – число 1 в случае успеха, 0 в случае ошибки.

http://sbis.ru 22
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
В случае ошибки необходимо вызвать ReadLastError/ReadLastErrorEx для уточнения причины и
текста сообщения.

AuthenticateByUserInfo
Назначение: аутентификация по информации о пользователе в личном кабинете.
Аналог в программном интерфейсе СБИС (API):
 СБИС.Аутентифицировать.
Объявление:
HRESULT AuthenticateByUserInfo( [in] ISimpleObject *user_info_in, [out, retval] long
*result_out );

Входные параметры
user_info_in: объект SimpleObject с полями:
 "Логин": строка
 "Пароль": строка
 "НомерАккаунта": строка (необязательный параметр)

Необходимо передать как минимум “Логин” и “Пароль” для аутентификации, если есть
необходимость, то можно указать необязательный параметр “НомерАккаунта”. Если параметр
“НомерАккаунта” не указан и у данного пользователя есть несколько аккаунтов, то при
аутентификации будет выбран первый попавшийся аккаунт.

Результат работы
 result_out – число 1 в случае успеха, 0 в случае ошибки.

В случае ошибки необходимо вызвать ReadLastError/ReadLastErrorEx для уточнения причины и


текста сообщения.

AuthenticateByCertificate
Назначение: аутентификация по сертификату в личном кабинете.
Аналог в программном интерфейсе СБИС (API):
 СБИС.АутентифицироватьПоСертификату.
Объявление:
HRESULT AuthenticateByCertificate( [in] ISimpleObject *certificate_info_in, [out, retval] long
*result_out );

Входные параметры
certificate_info_in: объект SimpleObject с полями:
 "ФИО": строка
 "ИНН": строка
 "Отпечаток": строка

Необходимо передать какой-либо один или нескольких описанных реквизитов в качестве фильтра.
Если под переданный фильтр подходят несколько сертификатов, будет использован первый из
найденных.
В зависимости от установленного СКЗИ и его настроек, если для доступа к закрытой части ключа
требуется пароль, на экран будет выведено диалоговое окно.

Результат работы
 result_out – число 1 в случае успеха, 0 в случае ошибки.

В случае ошибки необходимо вызвать ReadLastError/ReadLastErrorEx для уточнения причины и


текста сообщения.
Для уточнения сертификата или сертификатов, допускающих аутентификацию, рекомендуется

http://sbis.ru 23
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
воспользоваться методом docflow.ReadCertificatesForAuth().

ConfirmAuth
Назначение: подтверждение входа в личном кабинете по логину/паролю. Используется для
двухфакторной аутентификации.
Аналог в программном интерфейсе СБИС (API):
 СБИС.ПодтвердитьВход.
Объявление:
HRESULT ConfirmAuth( [in] BSTR code, [out, retval] long *result_out );

Входные параметры
 code – строка с кодом подтверждения из СМС

Результат работы
 result_out – число 1 в случае успеха, 0 в случае ошибки.

В случае ошибки необходимо вызвать ReadLastError/ReadLastErrorEx для уточнения причины и


текста сообщения.

ConfirmAuthByCertificate
Назначение: подтверждение входа в личном кабинете по сертификату. Используется для
двухфакторной аутентификации.
Аналог в программном интерфейсе СБИС (API):
 СБИС.ПодтвердитьВход.
Объявление:
HRESULT ConfirmAuthByCertificate( [in] BSTR code, ISimpleObject *certificate_info_in, [out,
retval] long *result_out );

Входные параметры
 code – строка с кодом подтверждения из СМС
 certificate_info_in – объект SimpleObject с полями:
o "ФИО": строка
o "ИНН": строка
o "Отпечаток": строка

Необходимо передать какой-либо один или нескольких описанных реквизитов в качестве фильтра.
Если под переданный фильтр подходят несколько сертификатов, будет использован первый из
найденных.
В зависимости от установленного СКЗИ и его настроек, если для доступа к закрытой части ключа
требуется пароль, на экран будет выведено диалоговое окно.

Результат работы
 result_out – число 1 в случае успеха, 0 в случае ошибки.

В случае ошибки необходимо вызвать ReadLastError/ReadLastErrorEx для уточнения причины и


текста сообщения.

ReadCertificates
Назначение: получение списка серверных и/или клиентских сертификатов.
Аналог в программном интерфейсе СБИС (API):
 СБИС.СписокСертификатов (возвращает информацию только о серверных сертификатах).

http://sbis.ru 24
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
Объявление:
HRESULT ReadCertificates( [in] ISimpleObject *filter_in, [out, retval] ISimpleObject
**cert_list_out );

Входные параметры
filter_in: объект SimpleObject с полями:
 "Сертификат": объект
o "ИНН": строка, ИНН организации, которой выдан сертификат
o "ФИО": строка
o "Должность": строка
o "Название": строка, название организации
o "Отпечаток": строка, отпечаток сертификата
o "СерийныйНомер": строка, серийный номер
o "Квалифицированный": строка "Да"/"Нет"
o "Ключ": объект
 "Тип": строка, описание и возможные значения см. в разделе "Типы ключей"

Для получения только локальных сертификатов и исключения каких-либо запросов к серверу


необходимо указать "Клиентский" в качестве "Фильтр.Ключ.Тип".

Результат работы
cert_list_out: массив объектов "Сертификат":
 "ФИО": строка
 "Должность": строка
 "ИНН": строка
 "Название": строка
 "Отпечаток": строка
 "СерийныйНомер": строка, серийный номер
 "Квалифицированный": строка "Да"/"Нет"
 "ДействителенС": строка в формате "ДД.ММ.ГГГГ ЧЧ.ММ.СС"
 "ДействителенПо": строка в формате "ДД.ММ.ГГГГ ЧЧ.ММ.СС"
 "Ключ": объект
o "Активирован": строка "Да"/"Нет" (имеет смысл только для серверных сертификатов)
o "СпособАктивации": строка, описание и возможные значения см. в разделе "Способы активации ключа
сертификата" (имеет смысл только для серверных сертификатов)
o "Тип": строка, описание и возможные значения см. в разделе "Типы ключей"

ReadCertificatesForAuth
Назначение: получение информации о возможности аутентификации по локальным сертификатам
ЭП. По переданному фильтру функция строит список локальных сертификатов, отравляет на
сервер, получает результат, в котором указывается информация о возможности входа по
сертификату или причина невозможности.
Аналог в программном интерфейсе СБИС (API):
 СБИС.СписокСертификатовДляАутентификации (возвращает информацию только о
серверных сертификатах).
Объявление:
HRESULT ReadCertificatesForAuth( [in] ISimpleObject *filter_in, [out, retval]
ISimpleObjectList **cert_list_out );

Входные параметры
filter_in: объект SimpleObject с полями:
 "Сертификат": объект
o "ИНН": строка, ИНН организации, которой выдан сертификат
o "ФИО": строка
o "Отпечаток": строка, отпечаток сертификата
o "Должность": строка

Допускается передать один или несколько реквизитов в качестве фильтра (пример: "ФИО" и/или
"ИНН", "Отпечаток" и т.д.). Если передан пустой объект, фильтрации не производится,
проверяются все доступные сертификаты.

http://sbis.ru 25
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
Результат работы
cert_list_out: объект с полями:
 "Сертификат" массив объектов с полями:
o "Аутентификация": объект
 "Зарегистрирован": строка "Да"/"Нет"
 "Комментарий": строка с описанием значения "Нет" в поле "Зарегистрирован".
o "ФИО": строка
o "Должность": строка
o "ИНН": строка
o "Название": строка
o "Отпечаток": строка
o "Квалифицированный": строка "Да"/"Нет"
o "ДействителенС": строка в формате "ДД.ММ.ГГГГ ЧЧ.ММ.СС"
o "ДействителенПо": строка в формате "ДД.ММ.ГГГГ ЧЧ.ММ.СС"

VerifyCertificates
Назначение: возвращает список клиентских сертификатов на носителе и информацию об их
состоянии (действительности).
Аналог в программном интерфейсе СБИС (API):
 СБИС.ПроверитьСертификаты
Объявление:
HRESULT VerifyCertificates( [in] ISimpleObject *filter_in, [out, retval] ISimpleObject
**cert_list_out );

Входные параметры
filter_in: объект SimpleObject с полями:
 "Сертификат": объект
o "ИНН": строка, ИНН организации, которой выдан сертификат
o "ФИО": строка
o "Отпечаток": строка, отпечаток сертификата
o "Должность": строка

Допускается передать один или несколько реквизитов в качестве фильтра (пример: "ФИО" и/или
"ИНН", "Отпечаток" и т.д.). Если передан пустой объект, фильтрации не производится,
проверяются все сертификаты на носителе.

Результат работы
cert_list_out: массив объектов "Сертификат":
 "ФИО": строка
 "Должность": строка
 "ИНН": строка
 "Название": строка
 "Отпечаток": строка
 "СерийныйНомер": строка, серийный номер
 "Квалифицированный": строка "Да"/"Нет"
 "ДействителенС": строка в формате "ДД.ММ.ГГГГ ЧЧ.ММ.СС"
 "ДействителенПо": строка в формате "ДД.ММ.ГГГГ ЧЧ.ММ.СС"
 "Ключ": объект
o "Активирован": строка "Да"/"Нет" (имеет смысл только для серверных сертификатов)
o "СпособАктивации": строка, описание и возможные значения см. в разделе "Способы активации ключа
сертификата" (имеет смысл только для серверных сертификатов)
o "Тип": строка, описание и возможные значения см. в разделе "Типы ключей"
 "Состояние": объект:
o "Код": строка
o "Комментарий": строка с описанием состояния сертификата

WriteConnectionInfo
Назначение: назначение параметров соединения с сервером.
Объявление:
HRESULT WriteConnectionInfo( [in] ISimpleObject *connection_info_in, [out, retval] long

http://sbis.ru 26
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
*result_out );

Входные параметры
connection_info_in: SimpleObject, объект "Информация о соединении с сервером".

Результат работы
 result_out – число 1 в случае успеха, 0 в случае ошибки.

В случае ошибки необходимо вызвать ReadLastError/ReadLastErrorEx для уточнения причины и


текста сообщения.
Компонент по умолчанию настроен на полностью автоматическое подключение. Если по каким-
либо причинам подключение не производится, следует проверить возможность доступа к серверу
https://online.sbis.ru/ из Internet Explorer, проверить настройки прокси-сервера, воспользоваться
помощью сайта http://help.sbis.ru/ или службы технической поддержки.

ReadConnectionInfo
Назначение: чтение параметров соединения с сервером.
Объявление:
HRESULT ReadConnectionInfo( [out, retval] ISimpleObject **result_out );

Входные параметры
Отсутствуют.

Результат работы
result_out: объект SimpleObject с полями:
 "АдресСервера": строка
 "ТаймаутСервера": строка, время ожидания ответа на запрос, мс
 "ИдентификаторСессии": строка, идентификатор сессии обмена данными, может отсутствовать или быть пустым при
отсутствии аутентификации
 "ОпределятьПроксиАвтоматически": строка "Да" или "Нет
 "АдресПроксиСервера": строка, может отсутствовать, если не задавалась
 "ЛогинПроксиСервера": строка, может отсутствовать, если не задавалась
 "ИнформацияОПриложении": строка, содержащая информацию о клиенте пользователя. Допускается использование
латинских букв любого регистра, цифр, пробелов, табуляции и символов: («_»; «/»; «\»; «.»; «,»). Длина ограничена
50 символами. Может отсутствовать

Следует обратить внимание, что пароли доступа к личному кабинету и прокси-серверу не


возвращаются.

TerminateSession
Назначение: прекращение сеанса обмена данными.
Объявление:
HRESULT TerminateSession( [out, retval] long *result_out );

Входные параметры
Отсутствуют.

Результат работы
 result_out – число 1 в случае успеха, 0 в случае ошибки.

В случае ошибки необходимо вызвать ReadLastError/ReadLastErrorEx для уточнения причины и


текста сообщения.

AccountsList
Назначение: возвращение данных по всем аккаунтам, доступных текущему пользователю.

http://sbis.ru 27
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
Аналог в программном интерфейсе СБИС (API):
 СБИС.СписокАккаунтов
Объявление:
HRESULT AccountsList( [out, retval] ISimpleObject **accounts_list_out );

Входные параметры
Отсутствуют.

Результат работы
accounts_list_out: объект SimpleObject с полями:
 "Список": массив объектов
o "НазваниеАккаунта": строка
o "НомерАккаунта": строка, идентификатор аккаунта в облаке

В случае если для пользователя не найдено ни одного аккаунта, возвращается пустой список.

SwitchAccount
Назначение: выполняет аутентификацию для текущего пользователя в аккаунт, который указан в
параметрах. Возвращает новый идентификатор сессии.
Аналог в программном интерфейсе СБИС (API):
 СБИС.ПереключитьАккаунт
Объявление:
HRESULT SwitchAccount( [in] ISimpleObject *param_in, [out, retval] long *result_out );

Входные параметры
param_in: объект SimpleObject с полями:
 " Параметр": объект
o "НомерАккаунта": строка

Посмотреть номер аккаунта можно в личном кабинете или лицензионном договоре, а также
воспользоваться методом AccountsList().

Результат работы
 result_out – число 1 в случае успеха, 0 в случае ошибки.

ReadVersion
Назначение: чтение информации о версии компоненты.
Аналог в программном интерфейсе СБИС (API):
 СБИС.ИнформацияОВерсии.
Объявление:
HRESULT ReadVersion( [out, retval] BSTR *vers_out );

Входные параметры
Отсутствуют.

Результат работы
 vers_out – строка, информация о версии компоненты.

WriteAttachment
Назначение: добавляет вложение к существующему документу. Если вложения уже добавлены, они

http://sbis.ru 28
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
будут заменены на новые.
Аналог в программном интерфейсе СБИС (API):
 СБИС.ЗаписатьВложение.
Объявление:
HRESULT WriteAttachment( [in] ISimpleObject *document_in, [out, retval] ISimpleObject
**document_out );

Входные параметры
document_in - объект "Документ":
 "Идентификатор"*: строка (обязательный параметр), описание и формат см. в разделе "Идентификатор", используется
для адресации документов
 "Редакция":
o "Идентификатор"*: строка
o "ПримечениеИС": строка
 "Вложение"*: массив объектов
o "Идентификатор": строка, описание и формат см. в разделе "Идентификатор", используется для адресации
вложений
o "Тип": строка, название типа формализованного вложения
o "Подтип": строка, название подтипа формализованного вложения
o "ВерсияФормата": строка, определяется по содержимому формализованного вложения
o "ПодверсияФормата": строка, определяется по содержимому формализованного вложения
o "Название": строка, название вложения, в случае отсутствия берётся из тела формализованного вложения,
пустое для неформализованного вложения
o "Удален": строка "Да"/"Нет", флаг удаления вложения
o "Служебный": строка, значение "Да" - признак служебного документа-вложения, "Нет" – первичного
o "Файл": объект
 "Имя": строка, имя файла
 "ДвоичныеДанные": строка (в кодировке BASE64), используется для отправки содержимого
бинарных данных на сервер
o "Подпись": массив объектов
 "Файл": объект
 "Имя": строка, совпадает с именем файла вложения, к которому относится, дополненная
строкой ".p7s"
 "ДвоичныеДанные": строка (в кодировке BASE64) , используется для отправки
содержимого бинарных данных на cервер

Результат работы
document_out – объект "Документ", отражает текущее состояние документа.
В случае ошибки будет возвращено пустое значение, необходимо вызвать
ReadLastError/ReadLastErrorEx для уточнения причины и текста сообщения.

WriteDocument
Назначение: производит создание или обновление документа на сервере, связывание документов.
Аналог в программном интерфейсе СБИС (API):
 СБИС.ЗаписатьДокумент (с одним входным параметром).
Объявление:
HRESULT WriteDocument( [in] ISimpleObject *document_in, [out, retval] ISimpleObject
**document_out );

Входные параметры
document_in - объект "Документ":
 "Идентификатор"*: строка (обязательный параметр), описание и формат см. в разделе "Идентификатор", используется
для адресации документов
 "Редакция":
o "Идентификатор"*: строка
o "ПримечениеИС": строка
 "Дата": строка в формате "ДД.ММ.ГГГГ", используется при сортировке и фильтрации в реестрах пакетов документов на
сайте online.sbis.ru
 "Номер": строка, номер пакета документов, произвольное значение

http://sbis.ru 29
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
 "Примечание": строка, комментарий к пакету документов, произвольное значение
 "Тип": строка, указывает общий тип пакета документов (см. справочник допустимых значений ниже)
 "ДокументОснование": массив объектов, служит для связывания с документами-основаниями
o "Документ": объект
 "Идентификатор": строка
 "Дата": строка в формате "ДД.ММ.ГГГГ".
 "Номер": строка.
 "Тип": строка.
o "ВидСвязи": строка (см. справочник "Виды связей документов")
 "Регламент": объект
o "Идентификатор": строка
o "Название": строка
 "НашаОрганизация": объект, описывает нашу организацию по пакету документов
o …
 "Контрагент": объект
o …
 "Исполнитель" объект:
o …
 "Подразделение": объект
o …
 "Ответственный": объект
o …
 "Автор": объект:
o …
 "Вложение": массив объектов
o "Идентификатор": строка, описание и формат см. в разделе "Идентификатор", используется для адресации
вложений
o "Тип": строка, название типа формализованного вложения
o "Подтип": строка, название подтипа формализованного вложения
o "ВерсияФормата": строка, определяется по содержимому формализованного вложения
o "ПодверсияФормата": строка, определяется по содержимому формализованного вложения
o "Название": строка, название вложения, в случае отсутствия берётся из тела формализованного вложения,
пустое для неформализованного вложения
o "Удален": строка "Да"/"Нет", флаг удаления вложения
o "Служебный": строка, значение "Да" - признак служебного документа-вложения, "Нет" – первичного
o "Файл": объект
 "Имя": строка, имя файла
 "ДвоичныеДанные": строка (в кодировке BASE64), используется для отправки содержимого
бинарных данных на сервер
o "Подпись": массив объектов
 "Файл": объект
 "Имя": строка, совпадает с именем файла вложения, к которому относится, дополненная
строкой ".p7s"
 "ДвоичныеДанные": строка (в кодировке BASE64) , используется для отправки
содержимого бинарных данных на cервер

Указание идентификатора документа (Документ.Идентификатор) или идентификатора редакции


(Документ.Редакция.Идентификатор) является обязательным. Рекомендуется указывать
идентификаторы на первичных вложениях.
Для связывания существующих документов необходимо при вызове передать идентификатор
документа, массив "ДокументОснование" и/или "ДокументСледствие".

Результат работы
document_out – объект "Документ", отражает текущее состояние документа.
В случае ошибки будет возвращено пустое значение, необходимо вызвать
ReadLastError/ReadLastErrorEx для уточнения причины и текста сообщения.
В случае отсутствия идентификаторов у документа и/или вложения при отправке они
автоматически назначается и возвращается пользователю при успешном выполнении команды.

UpdateDocument
Назначение: Производит обновление реквизитов или вложений существующего документа.
Аналог в программном интерфейсе СБИС (API):
 СБИС.ЗаписатьДокумент (с двумя входными параметром)

http://sbis.ru 30
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
Объявление:
HRESULT UpdateDocument( [in] ISimpleObject *addressing_in, [in] ISimpleObject *document_in,
[out, retval] ISimpleObject **document_out );

Входные параметры
"addressing_in": объект для адресации изменяемого документа:
 "Идентификатор"*: строка, идентификатор адресуемого документа
 "Редакция": объект
a. "Идентификатор"*: строка, идентификатор адресуемой редакции документа

document_in - объект "Документ", содержит изменяемые данные.

Результат работы
document_out – объект "Документ".
Внимание!
 Указание Адресация.Документ.Идентификатор или
Адресация.Документ.Редакция.Идентификатор является обязательным.
Если документ адресуется по идентификатору (Документ.Идентификатор):
 для исходящих документов будет изменена информация последней редакции (если она не
отправлена), или создана новая редакция;
 для входящих документов можно изменить только "Документ.Идентификатор",
"Документ.Редакция.Идентификатор" и "Документ.Редакция.ПримечаниеИС"
Если документ адресуется по идентификатору редакции (Документ.Редакция.Идентификатор):
 для последней редакции логика работы совпадает с предыдущим пунктом (т.к. сам
документ фактически адресует последнюю редакцию);
 для не последней редакции можно изменить только "Документ.Редакция.Идентификатор" и
"Документ.Редакция.ПримечаниеИС".

ReadDocument
Назначение: чтение подробной информации о документе (карточка, вложения, электронные
подписи, события, текущее состояние).
Аналог в программном интерфейсе СБИС (API):
 СБИС.ПрочитатьДокумент.
Объявление:
HRESULT ReadDocument( [in] ISimpleObject *document_in, [out, retval] ISimpleObject
**document_out );

Входные параметры
document_in - объект "Документ":
 "Идентификатор"*: строка, идентификатор адресуемого документа
 "Редакция": объект
a. "Идентификатор"*: строка, идентификатор адресуемой редакции документа

Внимание!
 Указание Документ.Идентификатор или Документ.Редакция.Идентификатор является
обязательным.

Результат работы
document_out – объект "Документ", отражает текущее состояние документа (последнюю редакцию)
при адресации по Документ.Идентификатор или состояние редакции при адресации по
Документ.Редакция.Идентификатор.
В случае ошибки будет возвращено пустое значение, необходимо вызвать

http://sbis.ru 31
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
ReadLastError/ReadLastErrorEx для уточнения причины и текста сообщения.
Внимание!
В случае чтения документа с многостраничным вложением данные, возвращаемые по ссылке
"Документ.Вложение.Файл.Ссылка", содержат zip-архив со следующего содержания:
 Файлы страниц. Имена файлов не изменяются, и сохраняются в архив "как есть". Если
происходит коллизия имён файлов, к имени дописывается "(1)", "(2)", и т.д.
 Файл "description.xml" с описанием вложения. Задаёт порядок нумерации страниц. Имеет
формат:
<?xml version="1.0" encoding="WINDOWS-1251"?>
<ОписаниеВложения>
<Страница Имя="page1.jpg" Номер="1" />
<Страница Имя="page1(1).jpg" Номер="2" />
<Страница Имя="page2.jpg" Номер="3" />

</ОписаниеВложения>

Так же при чтении ссылки из "Документ.Вложение.Подпись.Файл.Ссылка" возвращается zip архив с


подписями под страницами вложения. Архив содержит только файлы подписей. Имя подписи
строится следующим образом:
 берётся имя файла подписанной страницы;
 если это не единственная подпись под файлом, дописывается номер подписи (нумерация с
единицы);
 дописывается расширение .p7s.
Например, для архива страниц выше, в архиве подписей могли быть файлы: "page1.jpg.p7s",
"page1.jpg.2.p7s", "page1.jpg.3.p7s", "page1(1).jpg.p7s", "page2.jpg.p7s".

DeleteDocument
Назначение: удаление документа (с возможностью в дальнейшем его восстановить).
Аналог в программном интерфейсе СБИС (API):
 СБИС.УдалитьДокумент.
Объявление:
HRESULT DeleteDocument( [in] ISimpleObject *document_in, [out, retval] long *result_out );

Входные параметры
document_in - объект "Документ":
 "Идентификатор"*: строка, идентификатор адресуемого документа
 "Редакция": объект
a. "Идентификатор"*: строка, идентификатор адресуемой редакции документа

Внимание!
 Указание Документ.Идентификатор или Документ.Редакция.Идентификатор является
обязательным.

Результат работы
 result_out – число 1 в случае успеха, 0 в случае ошибки.

В случае ошибки необходимо вызвать ReadLastError/ReadLastErrorEx для уточнения причины и


текста сообщения.
Внимание! При адресации по идентификатору редакции документа будут удалены все редакции
данного документа.

EliminateDocument
Назначение: удаление документа (без возможности в дальнейшем его восстановить).

http://sbis.ru 32
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
Аналог в программном интерфейсе СБИС (API):
 СБИС.УничтожитьДокумент.
Объявление:
HRESULT EliminateDocument( [in] ISimpleObject *document_in, [out, retval] long *result_out );

Входные параметры
document_in - объект "Документ":
 "Идентификатор"*: строка, идентификатор адресуемого документа
 "Редакция": объект
a. "Идентификатор"*: строка, идентификатор адресуемой редакции документа

Внимание!
 Указание Документ.Идентификатор или Документ.Редакция.Идентификатор является
обязательным.

Результат работы
 result_out – число 1 в случае успеха, 0 в случае ошибки.

В случае ошибки необходимо вызвать ReadLastError/ReadLastErrorEx для уточнения причины и


текста сообщения.
Внимание! Перед тем как окончательно уничтожить документ с помощью метода EliminateDocument
документ необходимо удалить через вызов метода DeleteDocument.
Внимание! При адресации по идентификатору редакции документа будут удалены все редакции
данного документа.

RestoreDocument
Назначение: восстановление ранее удаленного документа
Аналог в программном интерфейсе СБИС (API):
 СБИС.ВосстановитьДокумент.
Объявление:
HRESULT RestoreDocument( [in] ISimpleObject *document_in, [out, retval] long *result_out );

Входные параметры
document_in - объект "Документ":
 "Идентификатор"*: строка, идентификатор адресуемого документа
 "Редакция": объект
a. "Идентификатор"*: строка, идентификатор адресуемой редакции документа

Внимание!
 Указание Документ.Идентификатор или Документ.Редакция.Идентификатор является
обязательным.

Результат работы
 result_out – число 1 в случае успеха, 0 в случае ошибки.

В случае ошибки необходимо вызвать ReadLastError/ReadLastErrorEx для уточнения причины и


текста сообщения.
Внимание! При адресации по идентификатору редакции документа будут восстановлены все
редакции данного документа.

PrepareAction
Назначение: подготовка действия этапа. Пример: подготовить действие "Отправить" этапа
"Отправка" или действие "Утвердить" этапа "Утверждение".

http://sbis.ru 33
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
В результате подготовки сервер внесёт изменения в документы, требующие регламентного
указания подписанта, идентификаторы участников документооборота, имена файлов.
Аналог в программном интерфейсе СБИС (API):
 СБИС.ПодготовитьДействие.
Объявление:
HRESULT PrepareAction( [in] ISimpleObject *document_in, [out, retval] ISimpleObject
**document_out );

Входные параметры
document_in - объект "Документ":
 "Идентификатор"*: строка
 "Редакция":
o "Идентификатор"*: строка
 "Этап": массив объектов
o "Название": строка
o "Идентификатор"*: строка
o "Действие": массив объектов
 "Название"*: строка
 "Комментарий*": строка, обязательна не для всех действий
 "Сертификат": объект, содержит информацию о сертификате для подписания:
 "ФИО": строка
 "Должность": строка
 "ИНН": строка
 "Название": строка
 "Отпечаток": строка

При отправке не обязательно указывать название этапа "Название" и


На этапе "Отправка" документа на сервер следует указать "Этап.Название", для всех прочих этапов
необходимо указать "Этап.Идентификатор".
Для документов, требующих подписания, необходимо в поле "Сертификат" указать реквизиты
сертификата, которым будет произведено подписание.

Результат работы
document_out – объект "Документ":
 "Идентификатор": строка
 "Редакция": объект, информация о редакции документа
o "Идентификатор": строка
o …
 "Направление": строка
 "НашаОрганизация": объект
o …
 "Контрагент": объект "Контрагент"
o …
 "Подразделение": объект "Подразделение"
o …
 "Ответственный": объект "Ответственный"
o …
 "Этап": массив объектов
o "Название": строка
o "Идентификатор": строка
o "Служебный": строка "Да"/"Нет"
o "Действие": массив объектов
 "Название": строка"
 "Сертификат": массив объектов "Сертификат", подходящих для подписания
 …
 "ТребуетПодписания": строка "Да"/"Нет"
 "ТребуетКомментария": строка "Да"/"Нет"
o "Вложение": массив объектов
 "Идентификатор": строка
 "Модифицирован": строка "Да"/"Нет". Модифицированные при подготовке файлы содержат "Да".
 "Служебный": строка, значение "Да"/"Нет"
 "Файл": объект "Файл":
 …

http://sbis.ru 34
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
В случае ошибки будет возвращено пустое значение, необходимо вызвать
ReadLastError/ReadLastErrorEx для уточнения причины и текста сообщения.
Для изменённых файлов будет установлен атрибут "Документ.Вложение.Модифицирован" в
значение "Да" и переданы ссылки на скачивание. Модифицированные документы при
необходимости следует скачать, сохранить в вашей отчётной системе и/или подписать, передать
сгенерированные ЭП на вход функций ExecuteAction.

ExecuteAction
Назначение: выполнить действия этапа (пример: выполнить действие "Отправить" этапа
"Отправка" или действие "Утвердить" этапа "Утверждение").
Аналог в программном интерфейсе СБИС (API):
 СБИС.ВыполнитьДействие.
Варианты вызова:
 сформировать ЭП самостоятельно, в этом случае в передать в элемента
Документ.Вложение.Подписи тела ЭП.
 указать сертификат для подписания, причём допускается указывать как клиентский, так и
активированный серверный сертификат.
 совмещенный из двух предыдущих вариантов: часть документов подписать самостоятельно,
часть – оставить на подписание серверу, указав реквизиты активированного сертификата.
Объявление:
HRESULT ExecuteAction( [in] ISimpleObject *document_in, [out, retval] ISimpleObject
**document_out );

Входные параметры
document_in - объект "Документ":
 "Идентификатор"*: строка
 "Редакция":
o "Идентификатор"*: строка
 "Редакция":
o "Идентификатор"*: строка
 "Этап"*: объект
o "Название"*: строка
o "Идентификатор"*: строка
o "Исполнитель": объект
 "Фамилия": строка.
 "Имя": строка.
 "Отчество": строка.
 "Идентификатор": строка, табельный номер (идентификатор).
o "Подразделение": объект
 "Название": строка, название подразделения
 "Идентификатор": строка, код подразделения
o "Действие"*: объект
 "Название"*: строка
 "Комментарий"*: строка, обязательна, если требуется указать комментарий
 "Сертификат"*: объект, передать для случая автоматического подписания
 "ФИО": строка
 "Должность": строка
 "ИНН": строка
 "Название": строка
 "Отпечаток": строка
o "Вложение": массив объектов, передать для случая автоматического подписания
 "Идентификатор": строка
 "Файл": объект
 "Имя": строка
 "ДвоичныеДанные": строка в кодировке Base64
 "Подпись": объект
 "Файл": объект
o "Имя": строка
o "ДвоичныеДанные": строка

http://sbis.ru 35
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
Результат работы
document_out – объект "Документ":
 "Идентификатор": строка
 "Направление": строка
 "СсылкаДляНашаОрганизация": строка
 "СсылкаДляКонтрагент": строка
 "НашаОрганизация": объект
o …
 "Контрагент": объект
o …
 "Подразделение": объект
o …
 "Ответственный": объект
o …
 "Состояние": объект
o …
 "Событие": массив объектов
o "ДатаВремя": строка в формате "ДД.ММ.ГГГГ ЧЧ.ММ.СС"
o "Название": строка
o "Идентификатор": строка
o "Комментарий": строка
o "Вложение": массив объектов, ассоциированных с событием по выполненному действию этапа
 …
 "Этап": массив объектов:
o "Название": строка
o "Идентификатор": строка
o …
o "Действие": массив объектов
 "Название": строка
 …

Внимание!
 В случае если выполняется некое действие, требующее подписания вложений документа и
у обрабатываемого документа есть зашифрованные вложения без соответствующей
подписи, то данные вложения не будут подписаны и пользователь получит ошибку,
поскольку для данного типа вложений пользователь должен сам приложить свою подпись
 Передавать результат работы функции PrepareAction в качестве входного значения
функции ExecuteAction не допускается, т.к. элементы "Этап", "Этап.Действие",
"Этап.Действие.Сертификат" должны быть объектами, а не массивами объектов.

ReadServiceStages
Назначение: запрос списка служебных этапов, требующих обязательной обработки (например,
подписание уведомлений о получении документа).
Аналог в программном интерфейсе СБИС (API):
 СБИС.СписокСлужебныхЭтапов.
Объявление:
HRESULT ReadServiceStages( [in] ISimpleObject *filter_in, [out, retval] ISimpleObject
**documents_and_navigation_out );

Входные параметры
filter_in: объект с условиями фильтрации:
 "НашаОрганизация": объект
o "СвЮЛ"
 "ИНН": строка
 "КПП": строка
 "КодФилиала": строка
o "СвФЛ"
 "ИНН": строка
 "Навигация": объект
o "РазмерСтраницы": строка, (число целое, задаёт число записей, которые будут возвращены, допустимые
значения: от "1" до "20")

Рекомендуется делать запросы по каждой организации индивидуально.

http://sbis.ru 36
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
В случае отсутствия фильтра выдаются документы по всем "Нашим организациям".

Результат работы
documents_and_navigation_out: объект:
 "Документ": массив объектов
o "Идентификатор": строка
o "Редакция": объект, информация о редакции документа
 "Идентификатор": строка
 …
o "Направление": строка
o "НашаОрганизация": объект
 …
o "Контрагент": объект
 …
o "Подразделение": объект
 …
o "Ответственный": объект
 …
o "Этап": массив объектов, содержит допустимые этапы:
 "Название": строка
 "Идентификатор": строка
 "Служебный": строка "Да"/"Нет"
 "Действие": массив объектов, содержит информацию действиях этапа
 …
 "Сертификат": массив объектов "Сертификат", допускающих использование при
подписании документов:
o …
 "Навигация": объект:
o "РазмерСтраницы": строка (число целое, указывает размер запрошенной выборки).
o "ЕстьЕще": строка "Да"/"Нет" (признак наличия последующих записей)

Возвращённый массив содержит список документов, по которым необходимо выполнить действие


служебного этапа (как правило, это "Обработать служебное").
Возвращённые функцией документы на 60 секунд блокируются от возврата иным
клиентам (пользователям web-кабинета, иным пользователям программного интерфейса), за
указанное время необходимо их обработать.
Варианта дальнейших действий:
1. вызвать интеллектуальную функцию ProcessServiceStagesEx(), которая в многопотоковом
режиме автоматически обработает порцию служебных документов;
2. для каждого элемента списка:
a. вызвать интеллектуальную функцию ExecuteActionEx(), которая обработает один
элемент списка;
b. осуществить подготовку к действию – вызвать PrepareAction(), затем – выполнение
действия ExecuteAction().

ReadServiceStagesInfo
Назначение: получение информации о необработанных служебных документах по всем или одной
"Нашей организации".
Аналог в программном интерфейсе СБИС (API):
 СБИС.ИнформацияОСлужебныхЭтапах
Объявление:
HRESULT ReadServiceStagesInfo( [in] ISimpleObject *filter_in, [out, retval] ISimpleObject
**result_out );

Входные параметры
filter_in: объект с условиями фильтрации:
 "НашаОрганизация": объект
o "СвЮЛ"
 "ИНН": строка
 "КПП": строка

http://sbis.ru 37
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
 "КодФилиала": строка, не обязательно
o "СвФЛ"
 "ИНН": строка
 "Навигация": объект:
o …

Результат работы
result_out: объект:
 "ЧислоНеобработанныхЭтапов": строка, содержит число необработанных на настоящий момент служебных
документов для текущего пользователя. Не включает отложенные для обработки и заблокированные документы
для иных пользователей.

Возвращаемое командой количество необработанных извещений о получении является


ориентировочным. Сразу после получения результатов запроса, значение необработанных этапов
может измениться.

ReadChanges
Назначение: запрос списка событий по документообороту "нашей организации" за определённый
период времени. Возврат информации осуществляется страницами, за форматирование отвечает
параметр "Навигация". В список вложений документа у события попадают как вложения,
связанные с этим событием (у них будет заполнена ссылка), так и вложения, которые с этим
событием не связаны, а по ним только были приложены подписи (у файлов таких вложений НЕ
будет заполнена ссылка).
Аналог в программном интерфейсе СБИС (API):
 СБИС.СписокИзменений.
Объявление:
HRESULT ReadChanges( [in] ISimpleObject *filter_in, [out, retval] ISimpleObject
**documents_and_navigation_out );

Входные параметры
filter_in – объект с описанием фильтра:
 "ИдентификаторСобытия": строка
 "ДатаВремяС": строка в формате "ДД.ММ.ГГГГ ЧЧ.ММ.СС"
 "ДатаВремяПо": строка в формате "ДД.ММ.ГГГГ ЧЧ.ММ.СС"
 "Тип": строка, тип документа
 "НашаОрганизация": объект
o "СвЮЛ": объект
 "ИНН": строка
 "КПП": строка
 "КодФилиала": строка
o "СвФЛ": объект
 "ИНН": строка
 "ПолныйСертификатЭП": строка "Да"/"Нет"
 "Навигация": объект
o "РазмерСтраницы": строка, задаёт число записей, которые будут возвращены

Результат работы
documents_and_navigation_out: объект:
 "Документ": массив объектов:
o "Идентификатор": строка
o "Дата": строка в формате "ДД.ММ.ГГГГ"
o "Номер": строка
o "Сумма": строка
o "Название": строка
o "Примечание": строка
o "ДатаВремяСоздания": строка в формате "ДД.ММ.ГГГГ ЧЧ.ММ.СС"
o "Удален": строка "Да"/"Нет"
o "Тип": строка (см. справочник)
o "Состояние": объект:
 "Код": строка (см. справочник "Состояния документа")

http://sbis.ru 38
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
 "Название": строка
 "Примечание": строка (комментарий при отклонении, текст ошибки и др.)
o "Редакция": объект, информация о редакции документа
 "Идентификатор": строка
 …
o "Направление": строка
o "СсылкаДляКонтрагент": строка
o "СсылкаДляНашаОрганизация": строка
o "СсылкаНаPDF": строка
o "СсылкаНаАрхив": строка
o "НашаОрганизация": объект
 …
o "Контрагент": объект
 …
o "Ответственный": объект
 …
o "Событие": массив объектов
 "ДатаВремя": строка в формате "ДД.ММ.ГГГГ ЧЧ.ММ.СС"
 "Название": строка
 "Идентификатор": строка
 "ПолныйСертификатЭП": строка "Да"/"Нет"
 "Комментарий": строка
 "Вложение": массив объектов
 "Название": строка
 "Служебный": строка "Да"/"Нет"
 "Идентификатор": строка
 "Дата": строка в формате "ДД.ММ.ГГГГ"
 "Номер": строка
 "Сумма": строка
 "Направление": строка
 "Тип": строка
 "Подтип": строка
 "ВерсияФормата": строка
 "Редакция": объект:
o "ДатаВремя": строка в формате "ДД.ММ.ГГГГ ЧЧ.ММ.СС"
o "Номер": строка, номер редакции (нумерация с 1)
 "Файл": объект
o "Имя": строка
o "Ссылка": строка (пустая у вложений, которые были в документе и по ним
только приложены подписи)
 "Подпись": массив объектов
o "Сертификат": объект
 "ФИО": строка
 "Должность": строка
 "ИНН": строка
 "Название": строка
 "Отпечаток": строка
o "Файл": массив объектов
 "Имя": строка
 "Ссылка": строка
 "Навигация": объект:
o "РазмерСтраницы": строка (число целое, указывает размер запрошенной выборки)
o "ЕстьЕще": строка "Да"/"Нет.

При первом запросе идентификатор события указывать не обязательно.


В случае отсутствия фильтра по "нашей организации" возвращаются события для всех "наших
организаций".
При отсутствии параметра "ДатаВремяС" берётся дата и время с самого первого
зарегистрированного в системе события.
При отсутствии параметра "ДатаВремяПо" берётся текущая дата и время запроса (на сервере).
Описание возможных событий см. в разделе "Список названий допустимых событий".
Входящий документ следует определять и фиксировать в своей учётной системе по получении
события с названием "Получение".

ReadDocuments
Назначение: возвращает список документов по условию фильтрации. Список сортируется по дате
документа, включает только информацию о вложениях последней редакции. Возврат информации

http://sbis.ru 39
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
осуществляется страницами, за форматирование отвечает параметр "Навигация".
Аналог в программном интерфейсе СБИС (API):
 СБИС.СписокДокументов.
Объявление:
HRESULT ReadDocuments( [in] ISimpleObject *filter_in, [out, retval] ISimpleObject
**documents_and_navigation_out );

Входные параметры
filter_in: объект SimpleObject:
 "ДатаС": строка в формате "ДД.ММ.ГГГГ"
 "ДатаПо": строка в формате "ДД.ММ.ГГГГ"
 "Маска": строка
 "ТолькоСПользовательскимИдентификатором": строка "Да"/"Нет" ("Да" – возвращаются документы, у которых не
пустой "ПользовательскийИдентификатор", "Нет" - только с пустым значением поля
"ПользовательскийИдентификатор", при отсутствии - все документы, т.е. с любым значением поля
"ПользовательскийИдентификатор")
 "Тип"*: строка, обязательный
 "Состояние": строка (текстовое состояние документа, описание см. ниже)
 "НашаОрганизация": объект
o …
 "Контрагент": объект
o …
 "Подразделение": объект
o …
 "Ответственный": объект
o …
 "Навигация": объект:
o …

Результат работы
documents_and_navigation_out: объект:
 "Документ": массив объектов
o "Идентификатор": строка
o "Редакция":
 "Идентификатор"*: строка
o "Дата": строка
o "Номер": строка
o "Сумма": строка
o "Название": строка
o "Примечание": строка
o "ДатаВремяСоздания": строка
o "Удален": строка "Да"/"Нет"
o "Тип": строка
o "Направление": строка
o "СсылкаДляНашаОрганизация": строка
o "СсылкаДляКонтрагент": строка
o "СсылкаНаАрхив": строка
o "Состояние": объект:
 "Код": строка
 "Название": строка
o "Регламент": объект:
 "Название": строка
 "Идентификатор": строка
o "НашаОрганизация": объект:
 …
o "Контрагент": объект:
 …
o "Подразделение": объект:
 …
o "Ответственный": объект:
 …
o "Вложение": массив объектов (только первичные документы, только последних редакций, служебные не
возвращаются, удалённые не возвращаются):
 "Идентификатор": строка
 "Название": строка
 "Дата": дата
 "Номер": строка

http://sbis.ru 40
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
 "Сумма": строка
 "Тип": строка
 "ВерсияФормата": строка
o "Этап": массив объектов
 "Название": строка
 "Идентификатор": строка
 "Действие": массив объектов
 "Название": строка
 "Навигация": объект
o …

Поле "Состояние" входного фильтра может содержать как значения из перечисляемого "Состояния
документа", так и специфичные для метода СБИС.СписокДокументов значения:
 Неотправленные (только для исходящих)
 Недоставленные (только для исходящих)
 Не получен ответ (только для исходящих)
 Утвержденные
 Отклоненные
 С ошибками
 Требующие ответа (только для входящих)
 Незакрепленные
 Удаленные
Если указано значение, которое помечено как "только для входящих/исходящих", то при
отсутствии указания направления в фильтре оно будет назначено автоматически. Если же
направление явно указано, и оно не совпадает с разрешённым направлением указанного
состояния, будет возвращена ошибка.
Удалённые документы возвращаются только при указании фильтра "Удаленные".

ReadDocumentsByEvents
Назначение: возвращает список документов по условию фильтрации. Список сортируется по дате
документа, включает только информацию о вложениях последней редакции. Возврат информации
осуществляется страницами, за форматирование отвечает параметр "Навигация".
Аналог в программном интерфейсе СБИС (API):
 СБИС.СписокДокументовПоСобытиям.
Объявление:
HRESULT ReadDocumentsByEvents( [in] ISimpleObject *filter_in, [out, retval] ISimpleObject
**result_out );

Входные параметры
filter_in: объект SimpleObject:
 "ДатаС": строка в формате "ДД.ММ.ГГГГ"
 "ДатаПо": строка в формате "ДД.ММ.ГГГГ"
 "Маска": строка
 "ТипРеестра"*: строка-перечисляемое (Возможные значения указаны ниже), обязательное значение
 "ТипВложения": строка (типы первичных вложений указываются через запятую для фильтрации выборки)
 "Состояние": строка (текстовое состояние документа, описание см. ниже)
 "Маска": строка (фильтр по полю "Документ.Примечание", "Документ.Номер")
 "НашаОрганизация": объект
o …
 "Контрагент": объект
o …
 "Подразделение": объект
o …
 "Ответственный": объект
o …
 "Навигация": объект:
o …

http://sbis.ru 41
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
Результат работы
documents_and_navigation_out: объект:
 "Реестр": массив объектов
o "ДатаВремя": строка, дата и время
o "Состояние": объект:
 "Код": число
 "Название": строка
o "Документ": массив объектов:
 "Идентификатор": строка
 "Редакция": объект, информация о редакции документа
 "Идентификатор": строка
 …
 "Дата": строка
 "Номер": строка
 "Сумма": строка
 "Название": строка
 "Примечание": строка
 "ДатаВремяСоздания": строка
 "Удален": строка "Да"/"Нет"
 "Тип": строка
 "Направление": строка
 "СсылкаДляНашаОрганизация": строка
 "СсылкаДляКонтрагент": строка
 "СсылкаНаАрхив": строка
 "Состояние": объект:
 …
 "Регламент": объект:
 …
 "НашаОрганизация": объект:
 …
 "Контрагент": объект:
 …
 "Подразделение": объект:
 …
 "Ответственный": объект:
 …
 "Вложение": массив объектов (только первичные документы, только последних редакций,
служебные не возвращаются, удалённые не возвращаются):
 "Идентификатор": строка
 "Название": строка
 "Дата": дата
 "Номер": строка
 "Сумма": строка
 "Тип": строка
 "ВерсияФормата": строка
 "Этап": массив объектов:
 "Название": строка
 "Идентификатор": строка
 "Действие": массив объектов:
o "Название": строка
 "Навигация": объект
o …

Возвращаемое значение представляет собой массив объектов, каждый из которых отражает одну
запись в реестре документов личного кабинета.
Каждая запись в реестре описывается датой/временем, состоянием, и документами,
представляющими эту запись.

Типы реестра
"ТипРеестра" – перечисляемое, возможные значения следующие:
 "Входящие"
 "Отправленные"
 "Ответы контрагента"

Состояние
Поле "Состояние" входного фильтра может содержать как значения из перечисляемого "Состояния
документа", так и специфичные для метода "ЭДО.РеестрДокументов" значения, которые зависят от
http://sbis.ru 42
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
типа реестра.
Входящие:
 "Требующие ответа"
 "Утвержденные"
 "Отклоненные"
 "С ошибками"
 "Незакрепленные"
 "Удаленные"
 "Удалено контрагентом"
Отправленные, ответы контрагента:
 "Внутренняя обработка"
 "Недоставленные"
 "Не получен ответ"
 "Утвержденные"
 "Отклоненные"
 "С ошибками"
 "Незакрепленные"
 "Удаленные"
 "Удалено контрагентом"
 "Черновики"

ReadOurOrganizations
Назначение: получение списка "Наших организаций", статуса подключения к документообороту.
Аналог в программном интерфейсе СБИС (API):
 СБИС.СписокНашихОрганизаций.
Объявление:
HRESULT ReadOurOrganizations( [in] ISimpleObject *filter_in, [out, retval] ISimpleObject
**organizations_and_navigation_out );

Входные параметры
filter_in: объект с условиями фильтрации:
 "НашаОрганизация": объект
o "СвЮЛ"
 "ИНН": строка
 "КПП": строка
 "КодФилиала": строка, не обязательно
o "СвФЛ"
 "ИНН": строка
o "ДокументооборотПодключен": строка "Да"/"Нет". "Да" означает наличие подключенного
абонентского ящика и указывает на возможность обмена документами с контрагентами
 "Навигация": объект
o …

Результат работы
organizations_and_navigation_out: объект:
 "НашаОрганизация": массив объектов:
o "СвЮЛ": объект
 "ИНН": строка, 10 символов
 "КПП": строка, 9 символов
 "КодФилиала": строка
 "Название": строка, название организации
o "СвФЛ": объект
 "ИНН": строка, 12 символов
 "Фамилия": строка
 "Имя": строка
 "Отчество": строка
o "ДокументооборотПодключен": строка "Да"/"Нет", индикатор подключенного А/Я для ЭДО

http://sbis.ru 43
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
 "Навигация": массив объектов
o …

Внимание! Организация с неподключенным документооборотом


("НашаОрганизация.ДокументооборотПодключен" = "Нет") не может пользоваться электронным
документооборотом с контрагентами.

GenerateHTMLFromXML
Назначение: получение HTML представления произвольного формализованного XML документа-
вложения.
Аналог в программном интерфейсе СБИС (API):
 СБИС.СформироватьHTMLИзXML.
Объявление:
HRESULT GenerateHTMLFromXML( [in] ISimpleObject *param_in, [out, retval] ISimpleObject
**result_out );

Входные параметры
param_in: объект:
 "XML": строка с содержимым XML вложения.

Результат работы
result_out: объект:
 "HTML": строка с HTML представлением.

В случае, если формат документа не поддерживается сервером или формализованный XML


документ содержит ошибки, будет возвращена ошибка (пустое значение результата).

ReadDocumentAsHTML
Назначение: получение HTML представления формализованного документа.
Аналог в программном интерфейсе СБИС (API):
 СБИС.СформироватьHTMLИзXML.
Объявление:
HRESULT ReadDocumentAsHTML( [in] ISimpleObject *param_in, [out, retval] ISimpleObject
**result_out );

Входные параметры
param_in: объект:
 "Идентификатор"*: строка, описание и формат см. в разделе "Идентификатор", используется для адресации
документа
 "Вложение"*: массив объектов
o "Идентификатор"*: строка, описание и формат см. в разделе "Идентификатор", используется для адресации
вложения

Результат работы
result_out: объект:
o "HTML": строка с HTML представлением.

Если формат документа не поддерживается сервером или формализованный XML документ


содержит ошибки, будет возвращена ошибка (пустое значение результата).

ReadContragentInfo
Назначение: чтение информации о контрагенте, в т.ч. идентификатора участника
документооборота.

http://sbis.ru 44
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
Аналог в программном интерфейсе СБИС (API):
 СБИС.ИнформацияОКонтрагенте.
Объявление:
HRESULT ReadContragentInfo( [in] ISimpleObject *value_in, [out, retval] ISimpleObject
**value_out );

Входные параметры
filter_in: объект SimpleObject ("Контрагент"):
 "СвЮЛ"*: объект
o "ИНН"*: строка, 10 символов
o "КПП"*: строка, 9 символов
o "КодФилиала": строка
o "Название"*: строка, название организации
 "СвФЛ"*: объект
o "ИНН"*: строка, 12 символов
o "Фамилия"*: строка
o "Имя"*: строка
o "Отчество"*: строка

Результат работы
value_out: объект SimpleObject ("Контрагент"):
 "СвЮЛ": объект
o "ИНН": строка, 10 символов
o "КПП": строка, 9 символов
o "Название": строка, название организации
 "СвФЛ": объект
o "ИНН": строка, 12 символов
o "Фамилия": строка
o "Имя": строка
o "Отчество": строка
 "Телефон": строка
 "Email": строка
 "Идентификатор": строка – идентификатор участника документооборота, может быть пустым.

В случае если контрагент намеренно отказался от обмена электронными документами, поле


"Идентификатор" будет пустым. Подробнее см. раздел "Идентификатор участника электронного
документооборота".

AcquireCertificateActivation
Назначение: запрос активация серверного ключа ЭП.
Аналог в программном интерфейсе СБИС (API):
 СБИС.ПолучитьКодАктивацииСертификата.
Ключ ЭП, хранящийся на сервере и защищённый кодом активации, требует выполнения процедуры
активации (отправки кода доступа).
Объявление:
HRESULT AcquireCertificateActivation( [in] ISimpleObject *certificate_info_in, [out, retval]
long *result_out );

Входные параметры
certificate_info_in: объект "Сертификат":
 "Отпечаток": строка, отпечаток сертификата

Результат работы
result_out – 0 – ошибка, иное значение – успех.

http://sbis.ru 45
СБИС COM SDK2 версия 1.2.2 - пользовательская документация

ActivateCertificate
Назначение: активация защищённого кодом активации серверного ключа ЭП.
Аналог в программном интерфейсе СБИС (API):
 СБИС.АктивироватьСертификат.
Объявление:
HRESULT ActivateCertificate( [in] ISimpleObject *certificate_info_in, [out, retval] long
*result_out );

Входные параметры
certificate_info_in: объект "Сертификат":
 "Отпечаток": строка, отпечаток сертификата для активации
 "КодАктивации": строка, код для активации

Результат работы
result_out – 0 – ошибка, иное значение – успех.

EnableEmulation
Назначение: переключить компоненту в режим частичной эмуляции сервера (не требует
подключения к Интернет).
Более подробное описание работы в режиме эмуляции, отличия от реального сервера даны в
соответствующем разделе.
Объявление:
HRESULT EnableEmulation( [out, retval] long *result_out);

Входные параметры
Отсутствуют.

Результат работы
result_out – 0 – ошибка, иное значение – успех.

ReadCurrentUserInfo
Назначение: получить ФИО текущего аутентифицированного пользователя.
Аналог в программном интерфейсе СБИС (API):
 СБИС.ИнформацияОТекущемПользователе.
Объявление:
HRESULT ReadCurrentUserInfo( [out, retval] ISimpleObject **user_info );

Входные параметры
Отсутствуют.

Результат работы
user_info – объект:
 "Пользователь": объект:"
o "Фамилия": строка
o "Имя": строка
o "Отчество": строка

LoadBinaryDataFromURI
Назначение: получить бинарные данные по ссылке на сервере.

http://sbis.ru 46
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
При получении данных по ссылке сервера, мы можем получить исключение с кодом «00000000-
0000-0000-0000-1AA0000F1002», оповещающее о том, что файл находится в процессе генерации.
В таком случае необходимо подождать и обратиться ещё раз. По умолчанию поведение метода
следующее: пауза между попытками скачать файл составляет 500 мс, а количество попыток равно
5.
При необходимости пользователь может изменить эти параметры. Для того, чтобы поменять
количетсво попыток загрузки и таймаут между запросами, необходимо вызвать метод
WriteConnectionInfo(…) и указать параметры «ТаймаутПопытокЗагрузки» и
«КоличествоПопытокЗагрузки». Пример ниже иллюстрирует данную процедуру:
// Создание объекта доступа к СБИС ЭДО
var docflow = new ActiveXObject( "SBIS.Docflow" );

var connectionInfo = docflow.CreateSimpleObject();

connectionInfo.Write( "КоличествоПопытокЗагрузки", 10 )
connectionInfo.Write( "ТаймаутПопытокЗагрузки", 2000 ) //Значение указывается в МС

docflow.WriteConnectionInfo( connectionInfo )

Стоит отметить, что данные параметры также действительны и для метода LoadDataFromURIToFile.

Объявление:
HRESULT LoadBinaryDataFromURI( [in] BSTR uri_in, [out, retval] BSTR *string_out );

Входные параметры
 "uri_in": строка, ссылка для чтения (к примеру, значение из поля "Документ.Вложение.СсылкаНаHTML")

Результат работы
 "string_out": строка, содержит бинарные данные в кодировке Base64.

В случае получения пустого значения следует прочитать значение ReadLastError(). Пустое значение
означает, что результат вызова LoadBinaryDataFromURI() действительно пуст, иначе содержит
информацию об ошибке.

LoadDataFromURIToFile
Назначение: получить бинарные данные по ссылке на сервере и сохранить в файл.
Объявление:
HRESULT LoadDataFromURIToFile( [in] BSTR uri_in, [in] BSTR filename_in, [out, retval] long
*result_out );

При получении данных по ссылке сервера, мы можем получить исключение с кодом «00000000-
0000-0000-0000-1AA0000F1002», оповещающее о том, что файл находится в процессе генерации.
В таком случае необходимо подождать и обратиться ещё раз. По умолчанию поведение метода
следующее: пауза между попытками скачать файл составляет 500 мс, а количество попыток равно
5.
При необходимости пользователь может изменить эти параметры. Для того, чтобы поменять
количетсво попыток загрузки и таймаут между запросами, необходимо вызвать метод
WriteConnectionInfo(…) и указать параметры «ТаймаутПопытокЗагрузки» и
«КоличествоПопытокЗагрузки». Пример ниже иллюстрирует данную процедуру:
// Создание объекта доступа к СБИС ЭДО
var docflow = new ActiveXObject( "SBIS.Docflow" );

var connectionInfo = docflow.CreateSimpleObject();

connectionInfo.Write( "КоличествоПопытокЗагрузки", 10 )
connectionInfo.Write( "ТаймаутПопытокЗагрузки", 2000 ) //Значение указывается в МС
docflow.WriteConnectionInfo( connectionInfo )

http://sbis.ru 47
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
Входные параметры
 "uri_in": строка, ссылка для чтения (к примеру, значение из поля "Документ.Вложение.СсылкаНаHTML")
 "filename_in": строка, путь и имя файла для сохранения.

Результат работы
result_out – 0 – ошибка, иное значение – успех.

ProcessServiceStagesEx
Назначение: интеллектуальная обработка служебных документов в несколько параллельных
потоков.
Внутри вызова проверяется необходимость подписания служебных документов по фильтру,
выбирается подписант, вызываются функции подготовки, выполняется действия "Обработать
служебное", возвращается флаг наличия необработанных служебных документов (это означает
необходимость повторного вызова функции).
Рекомендуется вызывать функцию для каждой "нашей организации" и передавать информацию о
сертификате для подписания документов (клиентском или серверном).
Для ускорения функция выполняет обработку в несколько параллельных потоков, число которых
подстраивается автоматически.
Объявление:
HRESULT ProcessServiceStagesEx( [in] ISimpleObject *param_in, [out, retval] ISimpleObject
**result_out );

Входные параметры
param_in: объект:
 "НашаОрганизация": объект
o "СвЮЛ": объект
 "ИНН": строка, 10 символов
 "КПП": строка, 9 символов
 "КодФилиала": строка
o "СвФЛ": объект
 "ИНН": строка, 12 символов
o "Сертификат": объект, может отсутствовать. Содержит информацию для поиска сертификата для
подписания служебных документов:
 "ФИО": строка
 "ИНН": строка
 "Отпечаток": строка

Результат работы
В случае если обращений к серверу не было, в качестве результата будет возвращён пустой
объект. Детализировать ошибку можно путём вызова ReadLastError/ReadLastErrorEx.
В случае если хотя бы один поток начал работать, функция вернёт непустой результат со
статистикой успешно обработанных документов и списком ошибок:
result_out: объект:
 "ЕстьНеобработанныеЭтапы": строка "Да"/"Нет", индикатор необходимости повторить вызов
 "ОбработаноЭтапов": строка, содержит число успешно обработанных служебных документов
 "СписокОшибок": массив объектов, со структурой, аналогичной результату вывода ф-и ReadLastErrorEx():
o "Функция": имя функции, в которой произошла ошибка, может отсутствовать
o "Описание", строка из пользовательской части сообщения
o "ОписаниеРасширенное": строка из расширенной части сообщения об ошибке
o "Код": строка, код ошибки
o "Класс": строка, код ошибки, присутствует для некоторых ошибок, произошедших при обработке запроса
на сервере, справочник см. в справочнике "Классы ошибок"

Если на входе указан сертификат, пытается использовать его для подписания (если
несколько - выбирается согласно описанию в разделе "Алгоритм автоматического выбора
сертификата для подписания").
Если "НашаОрганизация" не указана, обрабатываются документы всех организаций.

http://sbis.ru 48
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
Если сертификат не указан, выбирает подходящий по алгоритму из раздела "Алгоритм
автоматического выбора сертификата для подписания".
Если при работе хоть одного потока обработки произошла ошибка, поток останавливается, число
обработанных им служебных этапов не учитывается. Поле "СписокОшибок" содержит информацию
обо всех ошибках. Информация о первой ошибке копируется в значение, возвращаемое функциями
ReadLastError/ ReadLastErrorEx.

WriteDocumentEx
Назначение: интеллектуальная загрузка документа на сервер и запуск в документооборот.
Алгоритм работы:
1. отправляет документ на сервер, в ответ получает список серверных сертификатов;
2. выбирает подходящий сертификат среди доступных локальных и серверных;
3. если нет подходящих сертификатов, возвращает пустое значение, в этом случае для
детализации ошибки следует вызывать ReadLastError()/ReadLastErrorEx();
4. если есть подходящий сертификат:
a. осуществляет подготовку к запуску в документооборот (при
необходимости - указывает идентификаторы участников документооборота,
подписанта, переименовывает вложения);
b. подписывает документы клиентским или серверным ключом ЭП;
c. запускает в документооборот.
Алгоритм выбора сертификата:
1. по переданному фильтру (если присутствует)
2. подходящий под ИНН организации;
3. квалифицированный*;
4. активированный серверный;
5. локальный.
* 'Для международного ЭДО есть особенности, см. Международный документооборот и
Неквалифицированная подпись.'
Если локальный сертификат защищён паролем, на экране может быть отображено диалоговое окно
ввода пароля (интерфейс зависит установленного СКЗИ).
Объявление:
HRESULT WriteDocumentEx( [in] ISimpleObject *document_in, [out, retval] ISimpleObject
**document_out );

Входные параметры
document_in - объект "Документ":
 "Идентификатор"*: строка, указывать обязательно
 "Редакция":
o "Идентификатор": строка
 "Дата": строка
 "Номер": строка
 "Примечание": строка
 "Тип": строка
 "ДокументОснование": массив объектов
o "Документ": объект
 "Идентификатор": строка
o "ВидСвязи": строка (см. справочник "Виды связей документов")
o "Сумма": строка
 "ДокументСледствие": массив объектов
o "Документ": объект
 "Идентификатор": строка
o "ВидСвязи": строка (см. справочник "Виды связей документов")
o "Сумма": строка
 "Регламент": объект
o "Идентификатор": строка
 "НашаОрганизация": объект
o …

http://sbis.ru 49
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
 "Контрагент": объект
o …
 "Подразделение": объект
o …
 "Ответственный": объект
o …
 "Вложение"*: массив объектов, не должен быть пустым
o "Идентификатор": строка
o "Удален": строка "Да"/"Нет"
o "Служебный": строка "Да"/"Нет"
o "Файл": объект
 "Имя": строка, имя файла
 "ДвоичныеДанные": строка, используется для отправки содержимого бинарных данных на сервер
o "Подпись": массив объектов
 "Файл": объект
 "Имя": строка, совпадает с именем файла вложения, к которому относится, дополненная
строкой ".p7s"
 "ДвоичныеДанные": строка, используется для отправки содержимого бинарных данных на
cервер
 "Этап": объект
o "Название": строка
o "Идентификатор": строка
o "Служебный": строка "Да"/"Нет"
o "Действие": массив объектов
 "Название": строка
 "ТребуетПодписания": строка "Да"/"Нет"
 "ТребуетКомментария": строка "Да"/"Нет"
 "Сертификат": массив объектов
 …

Результат работы
document_out – объект "Документ":
 "Идентификатор": строка
 "Редакция": объект, информация о редакции документа:
o "Идентификатор": строка
o …
 "Направление": строка
 "НашаОрганизация": объект
o …
 "Контрагент": объект
o …
 "Подразделение": объект
o …
 "Ответственный": объект
o …
 "Состояние": объект
o …
 "Событие": массив объектов, ассоциированных с выполненным действием
o "ДатаВремя": дата и время
o "Название": строка
o "Идентификатор": строка
o "Комментарий": строка
o "Вложение": массив объектов, ассоциированных с событием
 …

В случае если произошла ошибка, будет возвращено пустое значение, в этом случае для уточнения
ошибки следует вызвать ReadLastError()/ReadLastErrorEx().
Документ, отправка которого завершилась ошибкой, фиксируется на сервере в состоянии
"Ошибка".
Внимание!
 В случае если у отправляемого документа есть зашифрованные вложения без
соответствующей подписи, то данные вложения не будут подписаны и пользователь
получит ошибку, поскольку для данного типа вложений пользователь должен сам
приложить свою подпись
 В случае, если по регламенту документооборота, используемому при запуске в
документооборот есть только один этап и у него одно действие, то указывать поля
"Документ.Этап" и "Документ.Этап.Действие" и не обязательно.

http://sbis.ru 50
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
 Адресация этапа происходит только по полю "Название" ("Идентификатор" игнорируется).

WriteDocumentsEx
Назначение: загрузка массива документов на сервер и запуск в документооборот. Запуск
осуществляется асинхронно, в несколько потоков. Для каждого отправляемого документа
возвращается или состояние документооборота после отправки, или информация об ошибке.
Объявление:
HRESULT WriteDocumentsEx( [in] ISimpleObject *param_in, [out, retval] ISimpleObject
**result_out );

Входные параметры
param_in: объект:
 "Документ": массив объектов "Документ":
o "Идентификатор"*: строка, временно обязательный для связи с черновиком, не запущенным в
документооборот.
o "Редакция":
 "Идентификатор": строка
 "ПримечаниеИС": строка
o …
o "Вложение"*: объект, не должен быть пустым
 …

Результат работы
result_out: объект:
"Реестр": массив объектов:
 "Документ": объект, непустой в случае успешной отправки и пустой при ошибке, совпадает с результатом работы
функции WriteDocumentEx():
o "Идентификатор": строка
o "Редакция":
 "Идентификатор": строка
 …
o …
 "Ошибка": объект, пустой в случае успеха отправки документа, при ошибке формат аналогичен результату вызова
ReadLastErrorEx():
o "Функция": имя функции, в которой произошла ошибка, может отсутствовать
o "Описание", строка из пользовательской части сообщения
o "ОписаниеРасширенное": строка из расширенной части сообщения об ошибке
o "Код": строка, код ошибки
o "Класс": строка, код ошибки, присутствует для некоторых ошибок, произошедших при обработке запроса
на сервере, справочник см. в справочнике "Классы ошибок"

В случае если обращений к серверу не было, в качестве результата будет возвращён пустой
объект. Детализировать ошибку можно путём вызова ReadLastError/ReadLastErrorEx.
В случае если документ был отправлен на сервер и запущен в документооборот, поле "Документ"
будет содержать ответ сервера, поле "Ошибка" будет пустым. При ошибке – наоборот, "Документ"
будет пустой, а "Ошибка" - содержать описание. Число и порядок элементов в выходном массиве
"Реестр" совпадает с числом и порядком элементов входного массива "Документ".
Общая функция ReadLastError/ReadLastErrorEx возвращает информацию о первой случившейся
ошибке, либо служить индикатором отсутствия ошибок.
Алгоритм работы совпадает с алгоритмом работы функции WriteDocumentEx().
Рекомендуется подавать на вход функции не более 100 документов.

ExecuteActionEx
Назначение: подготовка и выполнение действия этапа документооборота (например, действие
"Утвердить" или "Отклонить" этапа "Утверждение") с автоматическим выполнением всех
необходимых действий.

http://sbis.ru 51
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
Объявление:
HRESULT ExecuteActionEx( [in] ISimpleObject *document_in, [out, retval] ISimpleObject
**document_out );

Входные параметры
document_in - объект "Документ":
 "Идентификатор"*: строка
 "Редакция":
o "Идентификатор": строка
 "Этап"*: объект
o "Название": строка, обязательный для этапа "Отправка", необязательный для всех прочих
o "Идентификатор": строка, обязательный для всех этапов, кроме "Отправка"
o "Действие"*: объект
 "Название"*: строка
 "Сертификат"*: объект, информация о сертификате, который следует использовать при
подписании
 "ФИО": строка
 "Должность": строка
 "ИНН": строка
 "Название": строка
 "Отпечаток": строка

Результат работы
document_out – объект "Документ":
 "Идентификатор": строка
 "Редакция": объект, информация о редакции документа:
o "Идентификатор": строка
o …
 "Направление": строка
 "НашаОрганизация": объект
o …
 "Контрагент": объект
o …
 "Подразделение": объект
o …
 "Ответственный": объект
o …
 "Состояние": объект
o …
 "Событие": массив объектов
o "ДатаВремя": дата и время
o "Название": строка
o "Идентификатор": строка
o "Комментарий": строка
o "Вложение": массив объектов, ассоциированных с событием по выполненному действию этапа
 …

Алгоритм работы функции


1. читает с сервера документ по идентификатору;
2. выбирает подходящий сертификат:
a. если переданы реквизиты сертификата – по указанным реквизитам;
b. полностью автоматически;
3. подготавливает и выполняет запрошенное действие этапа.
Алгоритм работы клиента с функцией:
1. указать идентификатор документа;
2. указать идентификатор действия и название этапа;
3. указать реквизиты сертификата для подписания (не обязательно);
4. вызвать метод.
В случае если произошла ошибка, будет возвращено пустое значение, в этом случае для уточнения
ошибки следует вызвать ReadLastError()/ReadLastErrorEx().

http://sbis.ru 52
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
Внимание!
 В случае если выполняется некое действие, требующее подписания вложений документа и
у обрабатываемого документа есть зашифрованные вложения без соответствующей
подписи, то данные вложения не будут подписаны и пользователь получит ошибку,
поскольку для данного типа вложений пользователь должен сам приложить свою подпись
 Адресация этапа происходит только по полю "Название" ("Идентификатор" игнорируется).

CheckSession
Назначение: проверка актуальности используемой сессии.
Объявление:
HRESULT CheckSession( [out, retval] long *result_out );

Входные параметры
Отсутствуют.

Результат работы
 result_out – число "1" в случае актуальной сессии, 0 в случае, если сессия недействительна.

В случае ошибки необходимо вызвать ReadLastError/ReadLastErrorEx для уточнения причины и


текста сообщения.

Объект Sbis.StreamHelper
Объект-надстройка для упрощения работы с файловой системой, кодирования/декодирования
данных в/из кодировки Base64.
Общее замечание: в случае получения пустого строкового значения следует вызвать
ReadLastError() и если полученное значение пустое, это означает, что от вызова Base64ToString()
действительно возвращено действительно пустое значение иначе содержит описание ошибки.

ReadLastError
Назначение: получить текст ошибки после вызова любой функции объекта (отличной от
ReadLastErrorEx).
Объявление:
HRESULT ReadLastError( [out, retval] BSTR *err );

Входные параметры
Отсутствуют.

Результат работы
 err – строка с текстом ошибки, пустая, если ошибки не было.

ReadLastErrorEx
Назначение: получить текст ошибки после вызова любой функции объекта.
Объявление:
HRESULT ReadLastErrorEx( [out, retval] ISimpleObject **value_out );

Входные параметры
Отсутствуют.

Результат работы
 value_out – объект с расширенным описанием ошибки, пустой, если ошибки не было, структура описана в разделе
"Вызов функций и обработка ошибок".

http://sbis.ru 53
СБИС COM SDK2 версия 1.2.2 - пользовательская документация

Base64ToFile
Назначение: декодирование строки из кодировки Base64 и запись в файл.
Объявление:
HRESULT Base64ToFile( [in] BSTR base64_string, [in] BSTR file_path, [out, retval] long
*result_out );

Входные параметры
 base64_string: строка, закодированная в Base64
 file_path: строка, имя и путь к файлу

Результат работы
 result_out: 0 в случае ошибки, любое иное значение – успех.

StringToFile
Назначение: записать файл.
Объявление:
HRESULT StringToFile( [in] BSTR plain_string , [in] BSTR file_path, [out, retval] long
*result_out );

Входные параметры
 plain_string: строка для записи в файл
 file_path: строка, путь и имя файла

Результат работы
 result_out: 0 в случае ошибки, любое иное значение – успех.

FileToBase64
Назначение: возврат содержимого файла, переведённого в кодировку Base64.
Объявление:
HRESULT FileToBase64( [in] BSTR file_path, [out, retval] BSTR* base64_string );

Входные параметры
 file_path: строка, путь и имя файла

Результат работы
 base64_string: содержимое файла, закодированное в Base64

StringToBase64
Назначение: кодирование строки в кодировку Base64.
Объявление:
HRESULT StringToBase64( [in] BSTR plain_string , [out, retval] BSTR* base64_string );

Входные параметры
 plain_string: строка для кодирования

Результат работы
 base64_string: строка, закодированная в Base64

FileToString
Назначение: чтение и возврат содержимого файла с диска.

http://sbis.ru 54
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
Объявление:
HRESULT FileToString( [in] BSTR file_path, [out, retval] BSTR* plain_string );

Входные параметры
 file_path: путь и имя файла

Результат работы
 plain_string: строка, содержимое файла

Base64ToString
Назначение: декодирование строки в кодировке Base64.
Объявление:
HRESULT Base64ToString( [in] BSTR base64_string, [out, retval] BSTR* plain_string );

Входные параметры
 base64_string: строка в кодировке Base64

Результат работы
 plain_string: строка, бинарные данные после конвертирования из Base64.

GenerateUUID
Назначение: генерация UUID.
Объявление:
HRESULT GenerateUUID( [out, retval] BSTR* uuid_string );

Входные параметры
Отсутствуют.

Результат работы
 uuid_string: строка со сгенерированным UUID.

Пример сгенерированного UUID:


24403058-b8f5-4efd-89f9-b2ccccb56dc8

TransformXSLFile
Назначение: применение XSL преобразования (XSLT версия 1.0) к данным из файла.
Объявление:
HRESULT TransformXSLFile( [in] BSTR xml_file_in, [in] BSTR xslt_file_in, [in] BSTR
result_xml_file_in, [in] ISimpleObject *params_in, [out, retval] long *result_out );

Входные параметры
 xml_file_in: строка
 xslt_file_in: строка
 result_xml_file_in: строка
 params_in: SimpleObject с параметрами преобразования вида "имя": "значение"

Результат работы
 result_out – 0 ошибка, иное значение - успех.

Если в результате преобразования возвращена ошибка, уточнить причину можно вызвав


ReadLastError/ ReadLastErrorEx.

http://sbis.ru 55
СБИС COM SDK2 версия 1.2.2 - пользовательская документация

TransformXSL
Назначение: применение XSL преобразования (XSLT версия 1.0) к данным в памяти
Объявление:
HRESULT TransformXSL( [in] BSTR xml_str_in, [in] BSTR xslt_str_in,[in] ISimpleObject
*params_in, [out, retval] BSTR *result_str_out );

Входные параметры
 xml_str_in: строка
 xslt_str_in: строка
 params_in: SimpleObject с параметрами преобразования вида "имя": "значение"

Результат работы
 result_str_out: строка c результатом преобразования

Если в результате преобразования возникла ошибка, уточнить причину можно вызвав


ReadLastError/ ReadLastErrorEx.

Протоколирование работы
Для удобства отладки и анализа ошибок реализована возможность ведения файлового лога.
По умолчанию протоколирование отключено, для включения необходимо создать экземпляр
объекта Sbis.Log и установить параметры протоколирования путём вызова метода WriteLogInfo() и
передачей объекта "Параметры протоколирования":
 "Папка": строка, обязательный параметр при первом вызове, должна содержит полный
путь для папки, в которой будут создаваться файлы протокола;
 "Уровень": строка, необязательный параметр, задаёт условия и объем информации,
выводимой в протокол. По умолчанию используется уровень 2, см. таблицу ниже.
Пароли в параметрах/результатах вызова в лог не сохраняются (заменяются на восемь символов
"звёздочка").
Важно!
 Невозможность записи в файл лога никаким образом не влияет на работу компоненты.
Заранее проверяйте правильность пути, доступность папки на создание и запись в файл.
 Установка папки для ведения протокола допускается только один раз, последующие
вызовы позволяют только изменить уровень логирования.
 Все объекты, созданные из загруженного экземпляра DLL с COM компонентами, пользуются
одной общей настройкой параметров ведения протокола.
 Установка папки протоколирования допускается только единовременно после создания
объекта.
Отключение протоколирования осуществляется передачей "0" в качестве значения параметра
"Уровень".

Имя и формат файла протокола


Имя файлов протоколирования имеет формат:
 "SbisSDK_ГГГГММДД.log", где ГГГГ-год, ММ-месяц, ДД-день.
В случае если файл протокола достигает размера 2 Гб, создаётся новый файл в формате:
 "SbisSDK_ГГГГММДД_N.log", где NN-номер файла от единицы.
Поля одной строки лога:
1. дата/время с максимальной точностью в формате ГГГГ.ММ.ДД ЧЧ:ММ:СС.МММ;
2. имя объекта (всегда "docflow:");
3. код экземпляра потока внутри объекта;
4. тип сообщения ("Info:", "Warning:", "Error:");
5. текст сообщения.

http://sbis.ru 56
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
Используемая кодировка: Win1251.
Все поля разделяются символом табуляции, в конце строки - CR+LF.

Пример файла протокола


10:13:13.659 docflow:29e8 Message: Docflow::ReadServiceStagesInfo() Start
10:13:13.659 docflow:29e8 Message: Docflow::ReadServiceStagesInfo() Param:
"{}";
10:13:14.232 docflow:29e8 Message: Docflow::ReadServiceStagesInfo() Result:
"{"_ВремяРаботыМетода":"0.572 c.","ЧислоНеобработанныхЭтапов":"1000"}";
10:13:14.232 docflow:29e8 Message: Docflow::ReadServiceStagesInfo() Finish

Уровни протоколирования
Действие Уроверь логирования

1 2 3..4 5..9

Начало вызова Нет Нет Нет Да Да


метода

Окончание Нет Нет Нет Да Да


вызове метода

Входные Нет Нет Нет Нет Да


параметры
вызова

Результат Нет Нет Нет Нет Да


работы при
отсутствии
ошибки

Ошибка при Нет Да (без Да Да Да


вызове параметров (+параметры
вызова) вызова)

Освобождение Нет Да Да Да Да
объекта

Информация об Нет Да Да Да Да
идентификаторе
сессии

Объект Sbis.Log
ReadLastError
Назначение: получить текст ошибки после вызова любой функции объекта (отличной от
ReadLastErrorEx).
Объявление:
HRESULT ReadLastError( [out, retval] BSTR *err );

Входные параметры
Отсутствуют.

Результат работы
 err – строка с текстом ошибки, пустая, если ошибки не было.

http://sbis.ru 57
СБИС COM SDK2 версия 1.2.2 - пользовательская документация

ReadLastErrorEx
Назначение: получить текст ошибки после вызова любой функции объекта.
Объявление:
HRESULT ReadLastErrorEx( [out, retval] ISimpleObject **value_out );

WriteLogInfo
Назначение: установка параметров ведения протокола (логирования) для всех компонентов SDK,
запись в протокол информации о параметрах протоколирования.
Объявление:
HRESULT WriteLogInfo( [in] ISimpleObject *log_info_in, [out, retval] long *result_out );

Входные параметры
 log_info_in: SimpleObject, объект "Параметры протоколирования".

Результат работы
 result_out: 0 в случае ошибки, любое другое значение - успех.

Уточнить ошибку можно путём вызова GetLastError()/GetLastErrorEx().

ReadLogInfo
Назначение: чтение параметров ведения протокола (логирования).
Объявление:
HRESULT ReadLogInfo( [out, retval] ISimpleObject **result_out );

Входные параметры
Отсутствуют.

Результат работы
 result_out – SimpleObject, объект "Параметры протоколирования".

Алгоритм автоматического выбора сертификата для


подписания
При необходимости подписания внутри "интеллектуальных" функций, алгоритм автоматического
выбора сертификата следующий:
1. локальные:
a. действительные;
b. квалифицированные*;
c. совпадающие с ИНН организации;
d. совпадающие по ФИО с ФИО текущего аутентифицированного пользователя;
2. серверные:
a. действительные
b. активированные;
c. квалифицированные*;
d. совпадающие с ИНН организации;
e. совпадающие по ФИО с ФИО текущего аутентифицированного пользователя;
f. доверенные текущему аутентифицированному пользователю;
* 'Для международного ЭДО есть особенности, см. Международный документооборот и
Неквалифицированная подпись.'
В случае если выбранный локальный сертификат защищён паролем, пользователю будет выдано
диалоговое окно запроса пароля (окно выдаёт СКЗИ, хранящая контейнер с закрытой частью
ключа) либо возвращена ошибка (при работе в качестве службы Windows).

http://sbis.ru 58
СБИС COM SDK2 версия 1.2.2 - пользовательская документация

Отладка и эмуляция работы с сервером


Набор компонентов позволяет частично эмулировать общение с сервером ЭДО. Режим включается
единожды после создания объекта Sbis.Docflow путём вызова метода EnableEmulation(), пример:
// Создание объекта доступа к СБИС ЭДО
var docflow = new ActiveXObject( "SBIS.Docflow" );

// Включение эмуляции
docflow.EnableEmulation( );
// Все дальнейшие действия производятся с эмулируемым сервером ЭДО

// Аутентификации
docflow.Authenticate( "пароль", "логин" );

// Получение списка служебных этапов


var documentList = docflow.ReadServiceStages( docflow.CreateSimpleObject() );

Для нормальной работы эмулятора необходимо наличие на компьютере СКЗИ с хотя-бы одним
ключом (необходимо для имитации генерации ответных документов от оператора ЭДО).
При создании документа с использованием эмулятора в его реквизиты дописываются
дополнительные данные (дата создания, номер, этап и т.д.) и он сохраняется в эмуляторе, при
этом также генерируются события и связанные с ними служебные документы-вложения. Все
служебные документы-вложения, генерируемые эмулятором, являются фиктивными заглушками с
фиксированной и одинаковой для всех служебных документов-вложений структурой, для
подписания используется первый закрытый ключ, которым подписывались отправляемые
документы.
При получении документов с использованием эмулятора, вложения документа передаются через
тег "ДвоичныеДанные" (в "штатном" режиме получение осуществляется путём HTTP GET запросов
к серверу).
Важной особенностью эмулятора является тот факт что все генерируемые эмулятором данные
(документы, вложения, события и т.д) генерируются одновременно и для отправителя и для
получателя, т.е. эмулируется работа отправителя и получателя в одном личном кабинете.

Список отличий эмулятора от "реального" сервера ЭДО


1. Получатель документа автоматически считается членом схемы данных отравителя.
2. Все служебные документы-вложения, генерируемые эмулятором, являются фиктивными
"заглушками" с фиксированной и одинаковой для всех служебных документов структурой.
3. Запрос кода активации серверного сертификата не эмулируется, для активации любого
серверного сертификата используется фиксированный код "0123".
4. Ссылки на файлы вложений являются фиктивными и ссылаются на online.sbis.ru,
соответственно метод получения файлов по URI не эмулируется.
5. Фильтрация событий по дате/времени при получении списка изменений не
поддерживаются.
6. Постраничный вывод списочных методов не поддерживаются.
7. При каждой отправке документа для контрагентов генерируются новые идентификаторы.
8. Отсутствует поддержка функций многопотоковой отправки документов.
9. Обработка служебных документов осуществляется в один поток.

Вызов функций и обработка ошибок


В случае успешного выполнения вызова функция возвращает непустой (отличный от null)
результат, исключение - функции, возвращающие строки, об этом ниже.
Каждый экземпляр компонента экспортирует функции ReadLastError() и ReadLastErrorEx(),
позволяющие после выполнения любой команды проверить наличие/отсутствие ошибки.
В случае если ошибки не было, ReadLastError() вернёт пустую строку, а ReadLastErrorEx() –пустой
объект.
В случае возникновения ошибки ReadLastError() возвращает описание ошибки,
ReadLastErrorEx() - объект следующей структуры:
http://sbis.ru 59
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
Объект "Ошибка":
 "Функция": имя функции, в которой произошла ошибка, может отсутствовать
 "Описание", строка из пользовательской части сообщения
 "ОписаниеРасширенное": строка из расширенной части сообщения об ошибке
 "Код": строка, код ошибки
 "Класс": строка, код ошибки, присутствует для некоторых ошибок, произошедших при обработке запроса на
сервере, справочник см. в справочнике "Классы ошибок"

Пример вызова функции, возвращающей объект:


var doc_out = docflow.ReadDocument( doc_in );
if( doc_out )
alert( "Документ успешно прочитан" );
else
alert( doc_out.ReadLastError() );

Для строкового поля возврат пустого значения может означать как успех, так и ошибку, поэтому
чёткой дифференциации необходимо дополнительно вызвать ReadLastError(). Если действительно
прочитано пустое строковое значение, результат вызова ReadLastError() тоже будет пустой
строкой.
Пример вызова функции, возвращающей строку:
var number = doc_out.Read( "Номер" );

if( number )
alert( "Номер: " + number );
else
{
if ( doc_out.ReadLastError() )
alert( "Ошибка чтения значения" );
else
alert( "Номер пуст" );
}

Некоторые вызовы могут работать по иной схеме, это указано в детальном описании функции.

Рекомендации при обработке ошибок


 При получении единичной нефатальной* ошибки — сделать паузу на 3-5 секунд и повторить
запрос.
 При повторном получении ряда нефатальных* ошибок на один и тот-же запрос в период
дольше пяти минут приостановить запросы на 15 минут. При последующем повторении
ошибок рекомендуем зайти в браузере на заглавную страницу online.sbis.ru и, при отсутствии
профилактических или регламентных работ, трактовать ошибку как фатальную* и обратиться
в техническую поддержку.

* Ознакомиться со справочником ошибок можно тут

Специфика работы компонентов


COM компоненты СБИС SDK инкапсулируют работу с СКЗИ, что вносит следующую специфику:
 все функции, возвращающие список серверных сертификатов, дополняются списком
локальных сертификатов, подходящих для выполнения операции;
 при указании локального сертификата в параметрах запроса внутри компонентов
производятся все необходимые операции (запрос документов с сервера, формирование
электронных подписей, отправка бинарных данных с ЭП на сервер).

Справочники
Список типов пакетов документов
Тип документа Описание Направление

НакладнаяИсх Накладная Исходящий

http://sbis.ru 60
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
Тип документа Описание Направление
НакладнаяВх Входящий
АктСверИсх Исходящий
Акт сверки
АктСверВх Входящий
ДоговорИсх Исходящий
Договор
ДоговорВх Входящий
ФактураИсх Исходящий
Счёт-фактура
ФактураВх Входящий
АктВрИсх Исходящий
Акт выполненных работ
АктВрВх Входящий
КоррИсх Исходящий
Корреспонденция
КоррВх Входящий
СчетИсх Исходящий
Счёт
СчетВх Входящий
ЗаказИсх Исходящий
Заказ
ЗаказВх Входящий
ДокОтгрИсх Исходящий
Документ отгрузки
ДокОтгрВх Входящий

Список этапов и действий


Тип документа Этап Действие
Отправка Отправить
Утвердить
Утверждение
Отклонить
Извещение о получении
ДокОтгрИсх
(Фактуры, накладные,
акты) Извещение о получении Подтверждения даты отправки
Обработать служебное
Извещение о получении подтверждения даты получения
извещения о получении документов
Извещение о получении Уведомления о приеме
Извещение о получении Уведомления об уточнении

Тип пакета
Этап Действие
документов
Отправка Отправить
Утвердить
Утверждение
Отклонить
Извещение о получении
НакладнаяИсх
(Накладные) Извещение о получении Подтверждения даты отправки
Обработать служебное
Извещение о получении подтверждения даты получения
извещения о получении документов
Извещение о получении Уведомления о приеме
Извещение о получении Уведомления об уточнении

Тип документа Этап Действие

АктСверИсх Отправка Отправить


(Акты сверки) Утвердить Утвердить

http://sbis.ru 61
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
Тип документа Этап Действие
Отклонить
Переназначить
Извещение о получении
Извещение о получении Уведомления о приеме Обработать служебное
Извещение о получении Уведомления об уточнении

Тип документа Этап Действие


Отправка Отправить
Утвердить
Утвердить Отклонить
ДоговорИсх
(Договоры) Переназначить
Извещение о получении
Извещение о получении Уведомления о приеме Обработать служебное
Извещение о получении Уведомления об уточнении

Тип документа Этап Действие


Отправка Отправить
Утвердить
Утверждение
Отклонить
Извещение о получении
ФактураИсх
(Фактуры) Извещение о получении Подтверждения даты отправки
Обработать служебное
Извещение о получении подтверждения даты получения
извещения о получении документов
Извещение о получении Уведомления о приеме
Извещение о получении Уведомления об уточнении

Тип документа Этап Действие


Отправка Отправить
Утвердить
Утверждение
Отклонить
Извещение о получении
АктВрИсх
(Акты выполненных
работ) Извещение о получении Подтверждения даты отправки
Обработать служебное
Извещение о получении подтверждения даты получения
извещения о получении документов
Извещение о получении Уведомления о приеме
Извещение о получении Уведомления об уточнении

Тип документа Этап Действие


Отправка Отправить
Утвердить
Утверждение
Отклонить
СчетИсх Извещение о получении
(Счета)

Извещение о получении Подтверждения даты отправки Обработать служебное

Извещение о получении подтверждения даты получения


извещения о получении документов

http://sbis.ru 62
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
Тип документа Этап Действие
Извещение о получении Уведомления о приеме
Извещение о получении Уведомления об уточнении

Тип документа Этап Действие

КоррИсх Отправка Отправить


(Корреспонденция) Обработать служебное
Извещение о получении

Тип документа Этап Действие


Отправка Отправить
Утвердить
Утверждение Отклонить
Переназначить
Извещение о получении
ЗаказИсх
(Заказы поставщикам)
Извещение о получении Подтверждения даты отправки
Обработать служебное
Извещение о получении подтверждения даты получения
извещения о получении документов
Извещение о получении Уведомления о приеме
Извещение о получении Уведомления об уточнении

Тип документа Этап Действие


Отправка Отправить
Уточнить
На проверку
Выполнить
Решено
Переназначить
Выполнено
Проверить
РекламацияИсх Не выполнено
(Рекламации исходящие) Выполнено
Уточнить
Выполнить
Уведомить отправителя
Уведомить
Заверить
Извещение о получении
Извещение о получении Уведомления о приеме Обработать служебное
Извещение о получении Уведомления об уточнении

Список типов документов пакета


Возможные значения поля "Пакет.Документ.Тип":
 Первичные документы:
o "СчФктр" (Счет-фактура)
o "счФактКор" (Счет-фактура корректировочный)
o "ЭДОНакл" (Товарная накладная)
o "АктВР" (Акт выполненных работ)
o "АктВРКор" (Акт выполненных работ корректировочный)
o "АктСвер" (Акт сверки взаиморасчетов)
o "АктПП" (Акт приема-передачи неисключительных прав)
o "АктЗаказ" (Акт (титул заказчика))
o "НаклПокуп" (Товарная накладная (титул покупателя))
o "ЭДОСч" (Счет)

http://sbis.ru 63
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
o "Договор" (Договор)
o "УпдДоп" (Передаточный документ)
o "УпдСчфДоп" (Счет-фактура + передаточный документ)
o "УкдДис" (Корректировочный документ)
o "УкдКсчфДис" (Корректировочный счет-фактура + корректировочный документ)
o "УпдСчфДопПокуп" (Счет-фактура и передаточный документ (титул покупателя))
o "УпдДопПокуп" (Передаточный документ (титул покупателя))
o "УкдДисПокуп" (Корректировочный документ (титул покупателя))
o "УкдКсчфДисПокуп" (Корректировочный счет-фактура и корректировочный
документ (титул покупателя))
 Служебные документы:
o "ИзвПолуч" (Извещение о получении)
o "ПодтвДатОтпр" (Подтверждение даты отправки оператором)
o "ПодтвДатПол" (Подтверждение даты получения оператором)
o "УведПрием" (Уведомление о приеме)
o "УведУточ" (Уведомление о требовании уточнений)
Значения перечисляемого являются регистрозависимыми.

Список названий допустимых событий


 "Отправка"
 "Подтверждение даты отправки"
 "Извещение о получении Подтверждения даты отправки"
 "Подтверждение даты получения"
 "Извещение о получении Подтверждения даты получения"
 "Получение"
 "Извещение о получении"
 "Подтверждение даты получения извещения о получении документов"
 "Извещение о получении подтверждения даты получения извещения о получении
документов"
 "Уведомление о приеме"
 "Извещение о получении Уведомления о приеме"
 "Уведомление об уточнении"
 "Извещение о получении Уведомления об уточнении"
 "Удаление вложений из документа"
 "Уведомление об удалении на стороне отправителя"
 "Уведомление об удалении на стороне получателя"
Примечание: мы оставляем за собой право расширять этот список. При получении событий с
названием, отсутствующим в данном списке, рекомендуется их игнорировать.

Список допустимых направлений пакетов документов


Название Описание

Входящий Входящие пакеты документов


Исходящий Исходящие пакеты документов

Список кодов состояний пакета документов


Для исходящих Для входящих
Код Название
пакетов документов пакетов документов
Исходящий документ не отправлен, Состояние не используется
0 Документ редактируется находится в состоянии
редактирования
Состояние не используется Новый документ или новая редакция
1 Есть документ по документу поступила в кабинет
получателя
При отправке документа получателю Состояние не используется
2 Отослано приглашение отправлено приглашение, т.к.
получатель на момент отправки не

http://sbis.ru 64
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
Для исходящих Для входящих
Код Название
пакетов документов пакетов документов
был подключен к системе
online.sbis.ru
Документ отправлен получателю, Состояние не используется
3 Отправлен получатель подключен к системе
online.sbis.ru
Документ доставлен получателю, от Состояние не используется
4 Доставлен получателя получено подписанное
извещение о получении
От получателя получены подписанные Документы подписаны, подписанные
7 Выполнение завершено успешно
документы документы отосланы отправителю
От получателя получено уведомление Документы не подписаны,
Выполнение завершено с
9 о требовании уточнений, документы получателю отослано уведомление о
проблемами
не подписаны требовании уточнений
Исходящий документ удален в Входящий документ удален в
кабинете отправителя. Получателю кабинете получателя. Отправителю
19 Отозван мной
документа отправлено уведомление документа отправлено уведомление
об аннулировании документа об удалении документа
Документ удален в кабинете Документ удален в кабинете
20 Удален контрагентом получателя. Получено уведомление отправителя. Получено уведомление
об удалении документа об удалении документа

Виды связей пакетов документов


Перечисляемое "ВидСвязи" связанных пакетов документов может иметь одно из следующих
значений:
 "Обычная связь"
 "Оплата"
 "Переслать"
 "Корректировка"
 "Фактура"
 "Передача отчетности в банк"
 "Отгрузка"
Значения перечисляемого являются регистрозависимыми.

Список кодов ошибок API-интерфейса


Расширенные коды ошибок внешнего API-интерфейса СБИС имеют вид:

 00000000-0000-0000-0000-1XXXXXXXXXXX, где X — шестнадцатиричное значение (0..9, А..F).


 00000000-0000-0000-0000-100000000000 — ошибка общего вида, не имеющая
классификации. Как правило, фатальная.
Фатальные ошибки — не подразумевают исправление. При повторной отправке запроса без
изменения его тела имеют вид — 00000000-0000-0000-0000-1FAXXXXXXXXX.Символы «FA» в коде
означают «fatal».

 00000000-0000-0000-0000-1FA00001XXXX — фатальные ошибки входных параметров.


 00000000-0000-0000-0000-1FA00002XXXX — ошибки, которые связаны с криптографией.
 00000000-0000-0000-0000-1FA00003XXXX — ошибки модуля работы с формализованными
документами.
 00000000-0000-0000-0000-1FA00004XXXX — ошибки запуска в документооборот.
 00000000-0000-0000-0000-1FA0000FXXXX — ошибки форматно-логического контроля.
 00000000-0000-0000-0000-1FA000001000 — код фатальной ошибки при аутентификации.
 00000000-0000-0000-0000-1FA000001001 — ошибка аутентификации. Возникает если
данные в полях «Логин»/«Пароль» не указаны или указаны неверно.
 00000000-0000-0000-0000-1FA000001002 — код фатальной ошибки аутентификации.
Возникает, когда для дальнейшей работы требуется подтверждение действий от
пользователя.

http://sbis.ru 65
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
 00000000-0000-0000-0000-1FA0000A0001 — «невозможно выполнить преобразование».
Возникает при попытке получить архив,PDF-файл, PDF или HTML-представление документа,
имеющее вложение с испорченным или недоспустимым содержимым.
Нефатальные ошибки — подразумевают исправление. При повторной отправке запроса
изменения тела запроса не требуется.
 00000000-0000-0000-0000-1AAXXXXXXXX — общая маска ошибок.
 00000000-0000-0000-0000-1AA00001XXXX — ошибки внутренних сервисов.
 00000000-0000-0000-0000-1AA0000F1002 — предупреждение о необходимости повторить
запрос через 3-5 секунд. Повтор нужен для получения результата асинхронного запроса.
 00000000-0000-0000-0000-1AA000001000 — код нефатальной ошибки аутентификации.

Примеры реализации основных алгоритмов


Раздел более подробно описывает типовые задачи интеграции.
Все примеры представлены на языке JavaScript, они имеют минимальный контроль над ошибками и
позволяют ознакомиться с примерным сценарием взаимодействия с использованием SDK.

Установка параметров соединения с сервером


Для установки параметров соединения с сервером необходимо:
1. создать экземпляр объекта SBIS.SimpleObject, заполнить значениями, отличными от
значений по умолчанию по описанию объекта "Информация о соединении с сервером";
2. создать экземпляр объекта SBIS.Docflow;
3. вызвать функцию WriteConnectionInfo() объекта SBIS.Docflow и передать сформированный
объект с параметрами.
Пример:
// Настройка параметров подключения
var connectionInfo = docflow.CreateSimpleObject();
// Отключим автоматическое определение прокси-сервера из настроек Windows
connectionInfo.Write( "ОпределятьПроксиАвтоматически", "Нет" );
connectionInfo.Write( "АдресПроксиСервера", "http://my_office_proxy:1001" );
connectionInfo.Write( "ЛогинПроксиСервера", "proxy_login" );
connectionInfo.Write( "ПарольПроксиСервера", "proxy_password" );

// Создание объекта доступа к СБИС ЭДО


var docflow = new ActiveXObject( "SBIS.Docflow" );

// Установка параметров подключения


docflow.WriteConnectionInfo( connectionInfo );

Чтение параметров соединения с сервером


Для чтения параметров соединения с сервером (в том числе идентификатор сессии):
1. вызвать метод ReadConnectionInfo() объекта SBIS.Docflow;
2. прочитать из полученного объекта необходимое значение.
Пример:
// Настройка параметров подключения
var connectionInfo = docflow.WriteConnectionInfo( connectionInfo );

// Прочитаем идентификатор сессии


var sessionId = connectionInfo.Read( "ИдентификаторСессии" );

// Прочитаем таймаут запроса к серверу


var requstTimeoutMS = connectionInfo.Read( "ТаймаутСервера" );

http://sbis.ru 66
СБИС COM SDK2 версия 1.2.2 - пользовательская документация

Аутентификация в личном кабинете по сертификату


Для аутентификации в личном кабинете:
1. создать экземпляр объекта SBIS.SimpleObject, заполнить реквизиты сертификата, который
должен использоваться для аутентификации;
2. создать экземпляр объекта SBIS.Docflow;
3. при необходимости получить список сертификатов, допускающих аутентификацию по
сертификату, сделав вызов ReadCertificatesForAuth();
4. вызвать функцию AuthenticateByCertificate() объекта SBIS.Docflow и передать
сформированный объект с параметрами.
Пример:
// Создание объекта доступа к СБИС ЭДО
var docflow = new ActiveXObject( "SBIS.Docflow" );

var certInfo = docflow.CreateSimpleObject();

// Укажем отпечаток сертификата


certInfo.Write( "Отпечаток", "A8AD5572DF9AAED590ED76E990438A5997065887" );

// Аутентификация по сертификату
if ( docflow.AuthenticateByCertificate( certInfo ))
{
// Успешная аутентификация

}

Аутентификация в личном кабинете по логину/паролю


Для аутентификации в личном кабинете:
1. создать экземпляр объекта SBIS.Docflow;
2. вызвать функцию Authenticate() объекта SBIS.Docflow, передать логин и пароль для доступа
к личному кабинету.
Пример:
// Создание объекта доступа к СБИС ЭДО
var docflow = new ActiveXObject( "SBIS.Docflow" );

// Аутентификация по логину/паролю
if ( docflow.Authenticate( "user", "password" ) )
{
// Успешная аутентификация

}

Двухфакторная аутентификация в личном кабинете


Если в кабинете включена двухфакторная аутентификация, то вышеуказанные методы отработают
с ошибкой.
Чтобы диагностировать необходимость ввода кода для двухфакторной аутентификации,
необходимо вызвать метод ReadLastError() и если он вернёт строку: «Требуется подтверждение
действия» - выполните дальнейшую аутентификацию с помощью методов ConfirmAuth() или
ConfirmAuthByCertificate().
Для успешной двухфакторной аутентификации нужно выполнить следующее:
1. В зависимости от типа аутентификации( логин/пароль, сертификат ) воспользуйтесь
инструкцией выше.
2. Проверьте текст последней ошибки с помощью метода ReadLastError()
3. Вызовите метод ConfirmAuth() или ConfirmAuthByCertificate() в зависимости от способа
аутентификации, передав ему код из СМС, а также Объект «Сертификат» с полем
«Отпечаток» (в случае аутентификации по сертификату).
Пример(аутентификация по сертификату):
// Создание объекта доступа к СБИС ЭДО

http://sbis.ru 67
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
var docflow = new ActiveXObject( "SBIS.Docflow" );

var certInfo = docflow.CreateSimpleObject();

// Укажем отпечаток сертификата


certInfo.Write( "Отпечаток", "A8AD5572DF9AAED590ED76E990438A5997065887" );

// Аутентификация по сертификату
if ( docflow.AuthenticateByCertificate( certInfo ))
{

}
else
{
var err_str = docflow.ReadLastError();

if( err_str == "Требуется подтверждение действия" )


{
var confirm_code = "xxxx"; // xxxx – код подтверждения из СМС
docflow.ConfirmAuthByCertificate( confirm_code, certInfo );
}
}

Завершение сеанса работы с личным кабинетом


Последовательность действий:
1. у созданного ранее экземпляр объекта Docfow вызвать метод TerminateSession().
Пример:
// Аутентификация

// Работа с сервисом ЭДО


// Завершение сессии
docflow.TerminateSession( );

Отправка документа
Возможны несколько вариантов отправки документа на сервер:
1. "Интеллектуальная" отправка одного документа – рекомендуемый вариант, при котором
достаточно указать идентификатор и тип документа, прикрепить вложения, указать
сертификат для подписания и вызвать функцию WriteDocumentEx, внутри которой будут
произведены все необходимые действия по подготовке и запуску документооборота.
2. "Интеллектуальная" отправка нескольких документов. Аналогично предыдущему пункту,
только выполняется в несколько независимых потоков параллельно путём вызова функции
WriteDocumentsEx() и передачей массива подготовленных документов.
3. "Ручная" отправка документа на сервер (самый сложный в реализации), подготовка и
запуск в документооборот – последовательный вызов:
a. WriteDocument() с указанием идентификатора и типа документа, необходимых
реквизитов документа, вложений;
b. PrepareAction() с указанием этапа "Отправка", действия "Отправить" и реквизитов
для подписания;
c. ExecuteAction() с указанием реквизитов сертификата для подписания (серверного
или клиентского).
4. Загрузка черновика документа не сервер без запуска в документооборот – функция
WriteDocument() без указания этапа и действия.
Отправка редакций документа возможна с использованием любого из перечисленных способов.

http://sbis.ru 68
СБИС COM SDK2 версия 1.2.2 - пользовательская документация

"Интеллектуальная" отправка одного документа с запуском в


документооборот
Последовательность действий:
1. создать экземпляр объекта SimpleObject для объекта "Документ";
2. назначить идентификатор и тип документа;
3. назначить реквизиты документа: наша организация, контрагент, ответственный и т.д. (не
обязательно);
4. добавить вложения (первичные документы);
5. в качестве названия этапа указать "Отправка";
6. в качестве действия этапа указать "Отправить";
7. указать (не обязательно) реквизиты сертификата для подписания;
8. выполнить "интеллектуальную" команду WriteDocumentEx().
Пример:
// Создание объекта доступа к СБИС ЭДО
var docflow = new ActiveXObject( "SBIS.Docflow" );

//////////////////////////////////////////
// Аутентификация

// Подготовка информации об отправителе


var sender_ul = docflow.CreateSimpleObject();
sender_ul.Write( "ИНН", "1234567890" );
sender_ul.Write( "КПП", "123456789" );
sender_ul.Write( "Название", "ООО Отправитель" );

var sender = docflow.CreateSimpleObject();


sender.WriteObject( "СвЮЛ", sender_ul );

// Подготовка информации о получателе


var receiver_ip = docflow.CreateSimpleObject();
receiver_ip.Write( "ИНН", "123456789012" );
receiver_ip.Write( "Название", "ИП Фамилия Имя Отчество" );

var receiver = docflow.CreateSimpleObject();


receiver.WriteObject( "СвФЛ", receiver_ip );

// Прочитаем данные из файла в память


var stream = new ActiveXObject( "SBIS.StreamHelper" );

// Формирование файла с данными документа


var file = docflow.CreateSimpleObject();
file.Write( "Имя", "ON_SFAKT.XML" );
file.Write( "ДвоичныеДанные", stream.FileToBase64( "ON_SFAKT.XML" ) );
if( stream.ReadLastError() )
{
alert( "Ошибка: '" + stream.ReadLastError() + "'" );
return;
}

// Формирование документа
var attachment = docflow.CreateSimpleObject();
attachment.WriteObject( "Файл", file );

var attachmentList = docflow.CreateSimpleObjectList();


attachmentList.Add( attachment );

// Формирование документа
var document_out = docflow.CreateSimpleObject();
document_out.Write( "Идентификатор", "94f8ec6f-5dbb-4ba0-afa6-85d8b927d588" );
document_out.WriteObject( "НашаОрганизация", sender );
document_out.WriteObject( "Контрагент", receiver );
document_out.WriteObjectList( "Вложение", attachmentList );

//////////////////////////////////////////
// Подготовка к запуску в документооборот
// Назначим подписанта
var certificate = docflow.CreateSimpleObject();
certificate.Write( "ФИО", "Фамилия Имя Отчество" );
certificate.Write( "Должность", "Директор" );

http://sbis.ru 69
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
certificate.Write( "ИНН", "1234567890" );
certificate.Write( "Название", "ООО Отправитель" );

// Назначим действие и параметры этапа


var action = docflow.CreateSimpleObject();
action.Write( "Название", "Отправить" );
action.WriteObject( "Сертификат", certificate );

// Назначим параметры этапа


var stage = docflow.CreateSimpleObject();
stage.Write( "Название", "Отправка" );
stage.WriteObject( "Действие", action );

document_out.WriteObject( "Этап", stage );

//////////////////////////////////////////
// Отправим на сервер, запустим в документооборот, в ответ получим полную информацию об
отправленном документе
document = docflow.WriteDocumentEx( document_out );

if ( !document )
{
alert( "Ошибка '" + docflow.ReadLastError() + "'" );
return;
}

"Интеллектуальная" отправка нескольких документов с


запуском в документооборот
Последовательность действий:
1. создать экземпляр объекта SimpleObjectList;
2. заполнить массив объектами "Документ", как описано в разделе "Интеллектуальная"
отправка одного документа с запуском в документооборот";
3. выполнить метод WriteDocumentsEx();
4. проконтролировать результат работы и ошибки.
Пример:
// Создание объекта доступа к СБИС ЭДО
var docflow = new ActiveXObject( "SBIS.Docflow" );

//////////////////////////////////////////
// Аутентификация

//////////////////////////////////////////
// Подготовим документы для отправки и запуска в документооборот
var docList = docflow.CreateSimpleObjectList();

// Подготовка к отправке документов


var doc1 = docflow.CreateSimpleObject();
doc1.Write( "Идентификатор", " ИдДок1");

docList.Add( doc1 );

var doc2 = docflow.CreateSimpleObject();


doc2.Write( "Идентификатор", "ИдДок2");

docList.Add( doc2 );

var params = docflow.CreateSimpleObject();


params.WriteObjectList( "Документ", docList );

// Отправка документов
var result = docflow.WriteDocumentsEx( params );

if( result )
{
var resultList = result.ReadObjectList( "Реестр" );
for( var i = 0; i < resultList.count; i++ ) // цикл по числу документов в результате
{
var resultItem = resultList.At( i );
var msg;
var doc = resultItem.ReadObject( "Документ" );

http://sbis.ru 70
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
if( doc ) // Всё в порядке, работаем с документом
{
doc_id = doc.Read( "Идентификатор" );
msg = "Успех";
}
else // Случилась ошибка
{
doc_id = docList.At( i ).Read( "Идентификатор" );
msg = "Ошибка";
}
alert( "Результат загрузки документа с идентификатором '" + doc_id + "': " + msg);
}
}
else
{
// Обращения к серверу не было, определим причину
alert( docflow.ReadLastError() );
}

"Ручная" отправка документа на сервер, подготовка и запуск в


документооборот
Последовательность действий:
1. создать экземпляр объекта SimpleObject для объекта "Документ";
2. назначить идентификатор и тип документа;
3. назначить реквизиты документа: наша организация, контрагент, ответственный и т.д. (не
обязательно);
4. добавить вложения (первичные документы);
5. выполнить команду WriteDocument(), в результате будет возвращён объект "Документ" с
полной информацией о реквизитах, возможных этапах и действиях;
6. выполнить команду PrepareAction(), указав идентификатор документа
("Документ.Идентификатор"), в качестве этапа "Отправка" ("Документ.Этап.Название"),
действия этапа "Отправить" ("Документ.Этап.Действие.Название"), указать реквизиты
подписанта ("Документ.Этап.Действие.Сертификат");
7. выполнить команду ExecuteAction(), указав идентификатор документа
("Документ.Идентификатор"), данные о сертификате для подписания в реквизитах
действия этапа ("Документ.Этап.Действие.Сертификат").

Отправка на сервер документа без запуска в документооборот


Последовательность действий:
1. создать экземпляр объекта SimpleObject для объекта "Документ";
2. назначить идентификатор и тип документа;
3. назначить реквизиты документа: наша организация, контрагент, ответственный и т.д. (не
обязательно);
4. добавить вложения (первичные документы);
5. выполнить команду WriteDocument() не указывая этап и действие этапа.

Исправление загруженных документов


Внесение изменений в реквизиты документа или в состав вложений отправленного документа
осуществляется по схеме первичной отправки документов с небольшими отличиями:
 при формировании структуры "Документ" необходимо:
o указать идентификатор существующего документа ("Документ.Идентификатор"),
который должен быть сохранён в вашей учётной системе после отправки;
o указать исправленные реквизиты (при необходимости);
 добавить новые и/или исправленные документы (для формализованных документов
указывать идентификаторы не обязательно, сервер сам распознает изменяемые документы,
список проверяемых реквизитов см. в разделе "Проверка новое/существующее вложение
документа" ниже);

http://sbis.ru 71
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
 для удаления вложения в параметрах отправляемого документа:
o указать идентификатор удаляемого вложения
("Документ.Вложение[…].Идентификатор");
o установить флаг "Документ.Вложение[…].Удален" в значение "Да".
Дальнейшие действия по запуску документооборота полностью совпадают со схемой первичной
отправки пакета документов.

Проверка новое/существующее вложение документа


Если идентификатор вложения указан:
 при совпадении реквизитов с реквизитами существующего вложения документа:
a) создаётся новая редакция, если документооборот запущен или есть электронная
подпись под существующим вложением;
b) старая редакция вложения заменяется новой, если документооборот не запущен и
отсутствует электронная подпись под существующим вложением;
 при несовпадении генерируется ошибка.
Если идентификатор вложения не указан:
 при совпадении реквизитов записываемого вложения с реквизитами существующего:
a) создаётся новая редакция вложения, если документооборот запущен или есть
электронная подпись под существующим вложением;
b) старая редакция заменяется новой, если документооборот не запущен и отсутствует
электронная подпись под существующим вложением.
 при несовпадении добавляется новое вложение.
В случае невозможности загрузки редакции одного или нескольких вложений документа
генерируется ошибка.
При загрузке нового формализованного вложения без указания идентификатора сравниваются
следующие реквизиты с реквизитами существующих вложений:
 тип;
 дата;
 номер;
 ИНН/КПП отправителя (ЮЛ), ИНН (ИП);
 ИНН/КПП получателя (ЮЛ), ИНН (ИП).
Отсутствие любого из перечисленных реквизитов у любого из сравниваемых вложений трактуется
как различие.

Удаление документа
Последовательность действий:
1. создать экземпляр объекта SimpleObject для объекта "Документ";
2. назначить идентификатор документа, требующего удаление ("Документ.Идентификатор");
3. выполнить команду DeleteDocument().
В случае успешного вызова метода:
1. на документ устанавливается признак удаления ("Документ"->"Удален"), физического
удаления не производится, документы с пометкой "Удален" исчезают из вывода некоторых
списочных методов, например, GetDocuments();
2. незавершённый документооборот прекращается, при этом происходит аннулирование
документов, на вторую сторону документооборота отправляется уведомление об удалении
документов.
Восстановить или физически удалить помеченные на удаление документы можно только в web-
кабинете.
Пример:
// Указать идентификатор документа
var document_out = docflow.CreateSimpleObject();

http://sbis.ru 72
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
document_out.Write( "Идентификатор", "94f8ec6f-5dbb-4ba0-afa6-85d8b927d588" );

// Удалить документ
if ( !docflow.DeleteDocument( document_out ))
{
alert( "Ошибка '" + docflow.ReadLastError() + "'" );
return;
}

Связывание документов
Для установления связи между документами необходимо:
1. записать пакеты, требующие связывания, на сервер;
2. создать экземпляр объекта SimpleObject для объекта "Документ";
3. указать:
a) идентификатор связываемого документа (Документ.Идентификатор),
b) перечня идентификаторов документов-оснований
("Документ.ДокументОснование[…].Идентификатор") и/или документов-следствий
("Документ.ДокументСледствие[…].Идентификатор") и типов связей, при этом тип связи
"Обычная связь" можно не указывать, он подразумевается по умолчанию;
4. вызвать метод WriteDocument(), передать сформированный объект.
Разрывать установленные связи между документами в настоящий момент невозможно.
Допустимые виды связей документов описаны в справочнике "Виды связей пакетов документов".

Обработка извещений (служебных документов)


Регламенты документооборота подразумевают отправку служебных документов-извещений на
получение документов.
В ответ на получение документа, требующего извещения о получении, online.sbis.ru создаёт
служебный документ, который необходимо подписать для придания юридической значимости.
Процесс обработки служебных документов подразумевает получение списка неподписанных
извещений и их подписания.
Примечание: в настоящий момент обработка служебных документов подразумевает подписание
извещений о получении, в будущем допускается расширение выполняемых действий.
Общая схема обработки служебных документов следующая:
1. Определить список "наших организаций" личного кабинета, с извещениями которых
предстоит работать. Полный список "наших организаций" доступен при вызове
ReadOurOrganizations().
2. Получить список доступных и действительных сертификатов ЭП для подписания (в
привязке к нашей организации) – вызов ReadCertificates().
3. Циклически для каждой организации из списка, у которой есть доступный и валидный
сертификат ЭП, входящей в список для обработки:
i) активировать серверные сертификаты (при необходимости);
ii) циклически, пока не значение "Результат.ОбработаноЭтапов" больше нуля:
(1) обработать извещения по указанной "нашей организации" путём вызова
функции ProcessServiceStagesEx(), при этом рекомендуется указать реквизиты
конкретного сертификата для подписания (серверного или клиентского).
4. В случае если нет ни одного служебного документа для обработки по всем "нашим
организациям", сделать перерыв в опросах на 1…5 минут.
Для упрощения предсказания процесса обработки служебных документов и, например,
отображения элемента "индикатора выполнения" (ProgressBar) введена функция
ReadServiceStagesInfo(), возвращающая ориентировочное значение числа документов для
подписания. Вызов ProcessServiceStagesEx() возвращает число обработанных при вызове
служебных документов. Вычитая число обработанных документов из общего числа, позволяет
прогнозировать время обработки.
Рекомендуемый алгоритм реализации "индикатора выполнения" процесса обработки служебных

http://sbis.ru 73
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
документов:
1. для "наших организаций", по которым будет производиться обработка служебных
документов:
a) вызвать ReadServiceStagesInfo(), передать в качестве фильтра реквизиты организации;
b) прибавить число документов, ожидающих обработки (поле "Результат.
ЧислоНеобработанныхЭтапов), к общему числу необработанных документов;
2. если общее число необработанных документов более нуля, у элемента "индикатор
выполнения":
a) зафиксировать минимальное значение "прогресса" как 0;
b) зафиксировать максимальное значение "прогресса", равное общему числу
необработанных документов;
c) установить текущее положение значения "прогресса" как 0;
d) отобразить элемент на экране;
3. для каждой нашей организации:
a) в цикле вызывать ProcessServiceStagesEx(), фиксировать число обработанных
документов (возвращаемое значение "Результат.ОбработаноЭтапов");
b) вычитать изменять значение "прогресса" отображаемого "индикатора выполнения";
4. в случае отсутствия документов для подписания:
a) указать максимальное значение "прогресса" в качестве текущего значения, чтобы
элемент "полностью заполнился";
b) скрыть индикатор выполнения;
5. при достижении предельного значения "прогресса" либо закончить процесс, либо
повторить алгоритм с начала.
Важно понимать, что общее число и число реально обработанных служебных документов может
расходиться (увеличиваться из-за асинхронной отправки документов или уменьшаться из-за
фонового подписания документов браузером при просмотре реестров в web-кабинете), необходимо
корректно обрабатывать подобные ситуации.
Допускается упрощённый вариант обработки:
1. циклически вызывать метод ProcessServiceStagesEx(), отслеживать результат выполнения,
пока в возвращаемом результате поле "Результат.ЕстьНеобработанныеЭтапы" имеет
значение "Да", а счётчик "ОбработаноЭтапов" больше нуля, повторять вызовы;
2. в случае, если значение "ОбработаноЭтапов" равно нулю или
"Результат.ЕстьНеобработанныеЭтапы" имеет значение "Нет", приостановить вызовы
ProcessServiceStagesEx() на 1…5 минут.
Пример:
// Настроим фильтр по нашей организации
var filter = docflow.CreateSimpleObject();
var contragent = docflow.CreateSimpleObject();
contragent.Write( "ИНН", "1234567890" );
contragent.Write( "КПП", "123456789" );
filter.WriteObject( "НашаОрганизация", contragent );

// Здесь же рекомендуется указать реквизиты сертификата для подписания


var result = docflow.ProcessServiceStagesEx( filter );

if ( !result )
alert( "Ошибка '" + docflow.ReadLastError() + "'" );

Утверждение, отклонение входящих документов (действия


над документами)
Общая схема работы следующая:
1. подготовительные действия:
a. после получения входящего документа в своей учётной системе зафиксировать:
i. идентификатор документа;
ii. список названий и идентификаторов допустимых этапов (пример названия
этапа: "Утверждение");

http://sbis.ru 74
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
iii. список названий действия для каждого этапа (пример названий действий
этапа "Утверждение": "Утвердить", "Отклонить");
b. отобразить карточку документа с необходимой информацией (отправитель,
получатель, первичные документы и т.д.) и главное - список названий возможных
действий;
2. непосредственное выполнение выбранного пользователем действия этапа:
a. создать экземпляр объекта SimpleObject для объекта "Документ";
b. указать идентификатор документа;
c. указать идентификатор действия и название этапа, соответствующего выбранному;
d. указать реквизиты сертификата для подписания (не обязательно);
3. вызвать метод ExecuteActionEx().
4. в результате будет возвращён объект "Документ" с информацией о новом состоянии, в
которое перешёл документ или пустой объект в случае ошибки.
Внимание! Сохранять идентификаторы этапов и передавать их при выполнении действия
необходимо, для случаев, когда:
 по регламенту документооборота один и тот же документ имеет несколько этапов с
одинаковыми названиями для разных пользователей;
 разные редакции документа имеют одинаковые названия этапов, однако, например,
"Утвердить" или отклонить устаревшую ревизию невозможно.

Получение входящих документов


Общая схема работы следующая:
1. создать экземпляр объекта SimpleObject для настройки параметров фильтрации;
2. настроить параметры фильтрации
a. задать ИНН и КПП для "Нашей организации" (не обязательно, подобъект
""НашаОрганизация");
b. при первом вызове: задать дату/время начала и окончания периода, за который
отслеживается появление новых документов (поля "ДатаВремяС", "ДатаВремяПо");
c. при последующих вызовах: указать сохранённый в вашей информационной системе
идентификатор последнего обработанного события (см. финальную часть
алгоритма);
d. ограничить выборку по документам определённого типа (не обязательно, поле
"Тип");
e. установить параметры навигации (не обязательно, подобъект "Навигация");
3. вызвать метод ReadChanges(), в ответ будет возвращён список произошедших событий за
указанный период.
4. в полученном от ReadChanges() массиве событий (объект SimpleObjectList):
a. последовательно перебирать события, значение "Получение" в поле "Название"
означает получение входящего документа. Поле "Вложение" содержит объект
SimpleObjectList со списком полученных первичных документов, далее получить
ассоциированные первичные документы и зарегистрировать в вашей учётной
системе;
5. если в списке "Документ" содержится хотя бы один элемент, необходимо повторить
вызовы;
a. сохранить в вашей учётной системе:
i. значение поля "Идентификатор" последнего обработанного события, его
необходимо передать как входной параметр фильтрации;
ii. значение поля "ДатаВремя" последнего обработанного события, его
необходимо хранить как резервную копию на случай, если адресация по
идентификатору события, сохранённого на предыдущем шаге, вернёт
ошибку из-за физического удаления документа и ассоциированных с ним
событий.
6. если при очередном запросе возвращён пустой список, приостановить запросы на 1..5
минут, в противном случае повторить алгоритм со 2-го шага.

http://sbis.ru 75
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
Внимание!

 Один и тот же документ может иметь несколько событий "Получение", т.к. данное событие
генерируется при получении каждой новой редакции документа. С появлением новой
редакции, предыдущая редакция автоматически аннулируется.
 Крайне важно постоянно отслеживать изменения в документообороте и правильно
синхронизировать их с вашей информационной системой. Пример: в учётную систему
загружен входящий документ, наступает пауза в синхронизации, в это время приходит
уведомление об аннулировании (удалении) документов или новая редакция, наступает
рассинхронизация данных.
 Большинство регламентов документооборота подразумевают обработку служебных
документов для генерации извещения о получении входящего документа.
 При работе с отдельными "нашими организациями" алгоритм должен выполняться для
каждой "нашей организации" в отдельности, от начала и до конца.

Обработка изменений в документообороте


Обработка изменений в документообороте по алгоритму похожа на получение входящих
документов (вызов метода ReadChanges()). Главное отличие в том, что обрабатываться должны все
события (кроме тех, которые не документированы в данном документе или не требуют обработки в
вашей информационной системе, в обоих случаях их следует игнорировать).
Отслеживание изменений в документообороте должна осуществляться циклически, непрерывно с
небольшими перерывами (1…5 минут) только на случай возврата пустой выборки от метода
ReadChanges().

Пример:
// Настроим фильтр
var filter = docflow.CreateSimpleObject();

// ДатаВремяС
filter.Write( "ДатаВремяС", "01.01.2013 00.00.00" );

// ДатаВремяПо
filter.Write( "ДатаВремяПо", "01.01.2013 23.59.59" );

// Наша организация
var contragent = docflow.CreateSimpleObject();
contragent.Write( "ИНН", "1234567890" );
contragent.Write( "КПП", "123456789" );
filter.WriteObject( "НашаОрганизация", contragent );

var result = docflow.ReadChanges( filter );

if ( !result )
alert( "Ошибка '" + docflow.ReadLastError() + "'" );

Чтение информации о документе


Общая схема работы следующая:
1. создать экземпляр объекта SimpleObject для объекта "Документ";
2. указать идентификатор документа, информацию о котором необходимо получить;
3. вызвать метод ReadDocument().
Пример:
var document_out = docflow.CreateSimpleObject();
document_out.Write( "Идентификатор", "Пользовательский идентификатор" );

// Прочитаем информацию о документе


var document = docflow.ReadDocument( document_out );
if( !document )
alert( "Ошибка при чтении документа: '" + docflow.ReadLastError() + "'");

http://sbis.ru 76
СБИС COM SDK2 версия 1.2.2 - пользовательская документация

Работа с серверными сертификатами


Общая схема работы следующая:
1. запросить активацию серверного сертификата:
a) создать экземпляр объекта SimpleObject для объекта "Сертификат";
b) указать отпечаток сертификата, который требуется активировать (поле "Отпечаток");
c) вызвать метод AcquireCertificateActivation(), в случае успеха будет инициирована
отправка кода активации (на эл. почту или, СМС, в зависимости от настроек
активации);
2. активировать серверный сертификат полученным кодом активации:
a) к созданному на 1-м шаге объекту добавить поле "КодАктивации" и записать в него
полученный код, вызвать ActivateCertificate();
3. в случае успеха серверный сертификат будет активирован.

Сохранение на диск архива документа


Доступны два варианта хранения архива документов:
1. постоянная синхронизация:
2. выгрузка при завершении документооборота;
При постоянной синхронизации необходимо:
1. по алгоритму, описанному в разделе "Обработка изменений в документообороте"
циклически вызывать метод ReadChanges(), по каждому полученному событию делать
анализ поля "Название", выгружать входящие, ассоциированные первичные и служебные
вложения, ставить пометки "Удалён" для удалённых вложений (для событий удаления
документов или при аннулировании предыдущей редакции). Реализация данного алгоритма
позволяет иметь полностью актуальный архив на текущий момент времени вне
зависимости от завершения документооборота;
2. альтернативой предыдущему служит вариант выгрузки архива документа по завершению
документооборота или достижения некоторых ключевых фаз.
Кроме того, в любой момент возможна выгрузка архива с последней редакцией произвольного
документа, общая схема работы при этом следующая:
1. создать экземпляр объекта SimpleObject для объекта "Документ";
2. указать идентификатор документа, архив которого необходимо получить;
3. вызвать метод ReadDocument(), из результата работы метода получить ссылку на чтение
архива документа (поле "СсылкаНаАрхив");
4. вызвать метод LoadBinaryDataFromURI() и передать полученную ссылку, в ответ будет
возвращён .zip архив с последними редакциями первичных документов, служебными
документами и ЭП.
Пример:
// Прочитаем информацию о документе
var document_out = docflow.CreateSimpleObject();
document_out.Write( "Идентификатор", "Пользовательский идентификатор" );

var document = docflow.ReadDocument( document_out );

// Прочитаем и сохраним архив документа


var URL = document.Read( "СсылкаНаАрхив" );
var fileName = "Документ.zip";

var stream = new ActiveXObject( "SBIS.StreamHelper" );


stream.StringToFile( docflow.LoadBinaryDataFromURI( URI ), fileName );

Аннулирование документов
Отправленный документ можно в любой момент аннулировать по обоюдному согласию двух
сторон. Процедура состоит из двух шагов: запрос на аннулирование одной стороной и обработка
запроса второй. Запрос может инициировать как отправитель, так и получатель.

http://sbis.ru 77
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
При аннулировании документа на каждое первичное вложение генерируется формализованный
файл-соглашение и подписывается обеими сторонами.
Документ считается аннулированным, только если обе стороны подпишут соглашения об
аннулировании для всех первичных вложений. После аннулирования работа с документом
невозможна (документ нельзя изменить, провести и т.д.).

Внимание!
При аннулировании документа, все вложения внутри него тоже аннулируются.

Назовём отправителя аннулирования "инициатором", а получателя аннулирования -


"согласующим".
Общая схема аннулирования выглядит следующим образом:
1. Инициатор аннулирования указывает причину аннулирования, генерирует, подписывает и
отправляет соглашение об аннулировании для каждого первичного вложения (делает
вызовы СБИС.ПодготовитьДействие и СБИС.ВыполнитьДействие с «Этап.Название» -
«Аннулирование», «Этап.Действие.Название» - «Аннулировать»).
2. Согласующий может:
 отказаться от аннулирования — подписать и отправить отказ от аннулирования с
указанием причины отказа (делает вызовы СБИС.ПодготовитьДействие и
СБИС.ВыполнитьДействие с «Этап.Название» - «Аннулирование»,
«Этап.Действие.Название» - «Аннулирование отклонено»).
 подтвердить аннулирование — подписать вложение с согласованием
аннулирования (делает вызовы СБИС.ПодготовитьДействие и
СБИС.ВыполнитьДействие с «Этап.Название» - «Аннулирование»,
«Этап.Действие.Название» - «Документ аннулирован»).

 На стороне инициатора:

1. Прерывается документооборот последней редакции документа, если обмен документами ещё


не был завершён (возможно, с отправкой уведомления об удалении).
2. У последней утверждённой редакции создаётся событие "Отправка соглашения об
аннулировании". К этому событию привязывается сгенерированное вложение "Соглашение
об аннулировании электронного документа" (в теле это вложения указываются все не
удалённые вложения со всех редакции документа) и подпись инициатора под ним, также на
этом событии сохраняется комментарий, введённый при отправке запроса на
аннулирование.
По наличию этого события можно проконтролировать (и синхронизировать) факт отправки
аннулирования.

 На стороне согласующего:

1. Прерывается документооборот последней редакции документа, если он ещё не был


завершён.
2. У последней утверждённой редакции:

 Создаётся событие "Получение соглашения об аннулировании", к которому


привязывается пришедшее вложение "Соглашение об аннулировании
электронного документа", подпись инициатора под ним. На этом же событии
сохраняется комментарий, введённый при отправке запроса на
аннулирование.

http://sbis.ru 78
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
 Появляется активный этап "Аннулирование" с активными
действиями: "Документ аннулирован", "Аннулирование отклонено".
Исполнителем события назначается ответственный за документ.

3. При успешном выполнении действия "Документ аннулирован":

 К событию "Аннулирование" привязывается "Соглашение об аннулировании" и вторая


подпись (согласующей стороны) под ним.
 Создаётся событие "Отправка подтверждения соглашения об аннулировании" . С этим
событием ничего не связывается.
 Состояние документа меняется на "Аннулирован по соглашению" (код 22).

4. При успешном выполнении действия "Аннулирование отклонено":

 К событию "Аннулирование" привязывается сгенерированное вложение "Уведомление


об уточнении электронного документа" с подписью согласующего под ним. На него
записывается комментарий, введённый при отклонении аннулирования.
 Создаётся событие "Отправка отклонения соглашения об аннулировании". С этим
событием вложения или подписи не связываются. На него так же записывается
комментарий, введённый при отклонении аннулирования.

 На стороне инициатора (после согласования или отклонения аннулирования):

1. При подтверждении аннулирования:

 Создаётся событие "Получение подтверждения соглашения об аннулировании" , с ним


связывается служебное вложение "Соглашение об аннулировании" и вторая подпись
(согласующей стороны) под ним.
 Создаётся событие "Аннулирование", к нему привязывается служебное
вложение "Соглашение об аннулировании электронного документа".
 Состояние документа меняется на "Аннулирован по соглашению" (код 22).

2. При отклонении аннулирования:

 Создаётся событие "Получение отклонения соглашения об аннулировании" , с ним


связывается "Уведомление об уточнении электронного документа" и подпись
согласующего под ним.
 Создаётся событие "Аннулирование", на него записывается комментарий, введённый
при отклонении аннулирования.

Пример:
// Создание объекта доступа к СБИС ЭДО
var docflow = new ActiveXObject( "SBIS.Docflow" );

//////////////////////////////////////////
// Аутентификация

// Формирование документа
var document_out = docflow.CreateSimpleObject();
document_out.Write( "Идентификатор", "94f8ec6f-5dbb-4ba0-afa6-85d8b927d588" );

//////////////////////////////////////////
// Подготовка к запуску в документооборот
// Назначим подписанта
var certificate = docflow.CreateSimpleObject();

http://sbis.ru 79
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
certificate.Write( "ФИО", "Фамилия Имя Отчество" );
certificate.Write( "Должность", "Директор" );
certificate.Write( "ИНН", "1234567890" );
certificate.Write( "Название", "ООО Отправитель" );

// Если указываемый сертификат – серверный, то нужно это указать!


var key = docflow.CreateObject();
key.Write( "Тип", "Серверный" );
certificate.WriteObject( "Ключ", key );

// Назначим действие и параметры этапа


var action = docflow.CreateSimpleObject();
action.Write( "Название", "Аннулировать" );
action.WriteObject( "Сертификат", certificate );
action.Write( "Комментарий", "Запрос аннулирования со стороны отправителя" );

// Назначим параметры этапа


var stage = docflow.CreateSimpleObject();
stage.Write( "Название", "Аннулирование" );
stage.WriteObject( "Действие", action );

document_out.WriteObject( "Этап", stage );

//////////////////////////////////////////
// Вызовем ПодготовитьДействие, чтобы подготовить (пропатчить) служебные документы
document = docflow.PrepareAction( document_out );

if ( !document )
{
alert( "Ошибка '" + docflow.ReadLastError() + "'" );
return;
}

// Вызовем ВыполнитьДействие и отправим аннулирование


document = docflow.ExecuteAction( document_out );

if ( !document )
{
alert( "Ошибка '" + docflow.ReadLastError() + "'" );
return;
}

Пример (с использованием ExecuteActionEx):


// Создание объекта доступа к СБИС ЭДО
var docflow = new ActiveXObject( "SBIS.Docflow" );

//////////////////////////////////////////
// Аутентификация

// Формирование документа
var document_out = docflow.CreateSimpleObject();
document_out.Write( "Идентификатор", "94f8ec6f-5dbb-4ba0-afa6-85d8b927d588" );

//////////////////////////////////////////
// Подготовка к запуску в документооборот
// Назначим подписанта
var certificate = docflow.CreateSimpleObject();
certificate.Write( "ФИО", "Фамилия Имя Отчество" );
certificate.Write( "Должность", "Директор" );
certificate.Write( "ИНН", "1234567890" );
certificate.Write( "Название", "ООО Отправитель" );

// Если указываемый сертификат – серверный, то нужно это указать!


var key = docflow.CreateObject();
key.Write( "Тип", "Серверный" );
certificate.WriteObject( "Ключ", key );

// Назначим действие и параметры этапа


var action = docflow.CreateSimpleObject();
action.Write( "Название", "Аннулировать" );
action.WriteObject( "Сертификат", certificate );
action.Write( "Комментарий", "Запрос аннулирования со стороны отправителя" );

// Назначим параметры этапа


var stage = docflow.CreateSimpleObject();
stage.Write( "Название", "Аннулирование" );
stage.WriteObject( "Действие", action );

http://sbis.ru 80
СБИС COM SDK2 версия 1.2.2 - пользовательская документация

document_out.WriteObject( "Этап", stage );

//////////////////////////////////////////
// Вызовем «Умную» функцию
document = docflow.ExecuteActionEx( document_out );

if ( !document )
{
alert( "Ошибка '" + docflow.ReadLastError() + "'" );
return;
}

Решение часто возникающих проблем при работе с


SDK
Ошибка авторизации при вызове RPC-функции

Рисунок 1 - пример ошибки в 1с обработке

Данная ошибка ('Ошибка авторизации при вызове RPC-функции…') возникает, если


пославший запрос пользователь не имеет необходимых полномочий (не аутентифицирован).
Также, может возникнуть ошибка с текстом: 'Ошибка входных параметров: сессия
недействительна'.
Чтобы идентифицировать ошибку, необходимо воспользоваться функцией ReadLastError, либо
функцией ReadLastErrorEx. В случае если текст ошибки соответствует примерам выше, Вам
необходимо аутентифицироваться.
Для аутентификации Вам нужно воспользоваться одной из функций:
 Authenticate
 AuthenticateByUserInfo
 AuthenticateByCertificate

Решение проблемы с аутентификацией при использовании


SDK на нескольких рабочих местах или процессах
При использовании SDK на нескольких рабочих местах или процессах, предлагается сохранить

http://sbis.ru 81
СБИС COM SDK2 версия 1.2.2 - пользовательская документация
идентификатор сессии и использовать его везде, где используется интеграционное решение на
базе SDK.
Для этого необходимо использовать следующий алгоритм:
1. Пройти авторизацию с использованием команды Authenticate либо AuthenticateByCertificate.
2. Сохранить полученный идентификатор сессии путём вызова ReadConnectionInfo.
3. При отправке документов с другого рабочего места вы должны с помощью команды
WriteConnectionInfo записать сохраненный идентификатор в качестве параметров
соединения с сервером
4. Проверить, действительна ли записанная сессия командой CheckSession.
a. Если сессия действительна, то можно начинать выполнять прочие команды.
b. Если сессия не действительна, то выполнить шаг 1 и 2.

Исправление проблемы запуска SDK (нехватка dll файлов)


Начиная с версии 1.2.0 SBIS SDK, зависит от трёх .dll библиотек:
 msvcp100.dll
 msvcr100.dll
 sbis-sdk-crypto.dll
Это стоит учитывать при интеграции т.к. данные файлы, должны присутствовать в той же
директории, что и Sbis3SDK.dll.
Данные файлы находятся в папке Место_установки_SDK/Library/

История изменений
SDK версия 1.1
1. Изменения в формате данных, во внешнем интерфейсе, который используется при обмене
с серверами.
2. Сертификат, выбранный для аутентификации, назначается приоритетным (с возможностью
снятия повышенного приоритета, объект Sbis.Docflow, метод ClearDefaultCertificate).
3. Реализовано xslt преобразование (объект Sbis.StreamHelper, метод TransformXSLFile).
4. Реализована генерация UUID (объект Sbis.StreamHelper, метод GenerateUUID).
5. Реализовано логирование в файл (объект Sbis.Log, методы WriteLogInfo,ReadLogInfo, …).

SDK версия 1.1.1


1. Полная поддержка внешнего интерфейса версии 2.1 (описание доступно по ссылке
http://help.sbis.ru/exchange/integration)
2. Доработан алгоритм выбора сертификата (максимально унифицирован с алгоритмом
выбора при работе в web-кабинете), добавлен учёт ФИО аутентифицированного
пользователя. Сертификат, использованный при аутентификации по сертификату более не
является приоритетным (покрывается выбором по ФИО пользователя).
3. Добавлена фильтрация сертификатов по полю "Квалифицированный".
4. Неквалифицированные сертификаты более недопустимы для подписания документов.
5. В инсталлятор добавлен режим "тихой" установки (без вывода каких-либо сообщений).
6. Исправлена ошибка, из-за которой сертификаты с отсутствующим корневым сертификатом
в СКЗИ не возвращались в списке допустимых для аутентификации.
7. Исправлена ошибка, при которой вставленный носитель с ключом ЭП появлялся в списке
допустимых для аутентификации с задержкой до 10 минут.
8. Метод Docflow.WriteConnectionInfo() принимает во входном объекте "Информация о
соединении с сервером" поле "ИдентификаторСессии".
9. Метод Docflow.WriteDocumentEx() позволяет не указывать этап и действие в некоторых
случаях.
10. Метод Docflow.ClearDefaultCertificate() объявлен устаревшим и удалён из описания.
11. Метод Docflow.ReadDocumentsByEvents(): добавлен входной параметр фильтрации "Маска".

http://sbis.ru 82
СБИС COM SDK2 версия 1.2.2 - пользовательская документация

SDK версия 1.1.2


1. Мелкие исправления и улучшения.

SDK версия 1.1.3


1. Исправлена ошибка в методе WriteDocumentsEx, при которой могли возникать
значительные задержки.
2. Уменьшен объём (ненужной) информации отправляемой в логи.
3. Исправлена ошибка, из-за которой в некоторых случаях отправка более 13000 документов
без остановки могла приводить к ошибке в SDK.

SDK версия 1.1.3.1


1. Исправлена ошибка поиска сертификатов.

SDK версия 1.1.4


1. Небольшое общее ускорение.

SDK версия 1.1.5


1. Добавлен метод TransformXSL выполняющий XSL преобразование в памяти

SDK версия 1.1.6


1. Оптимизация методов WriteDocumentsEx и ProcessServiceStagesEx с точки зрения объемов
передаваемых на сервер данных

SDK версия 1.1.7


1. Исправлена ошибка в методе TerminateSession

SDK версия 1.1.8


1. Добавлена возможность передавать поле «ИнформацияОПриложении» в метод
WriteConnectionInfo

SDK версия 1.1.9


1. Добавлен альтернативный метод для аутентификации по информации о пользователе –
AuthenticateByUserInfo

SDK версия 1.1.10


1. Поддержка зашифрованных документов – зашифрованные вложения не подписываются и
передаются на сервер как есть
2. Добавлены новые методы EliminateDocument и RestoreDocument

SDK версия 1.1.11


1. Добавлена возможность аннулировать документ с помощью функции ExecuteActionEx

SDK версия 1.1.11.1


1. Изменено поведение методов LoadBinaryDataFromURI и LoadDataFromURIToFile.
Теперь для них можно задавать параметры «ТаймаутПопытокЗагрузки» и
«КоличествоПопытокЗагрузки».

http://sbis.ru 83
СБИС COM SDK2 версия 1.2.2 - пользовательская документация

SDK версия 1.1.12


1. В документации расширено описание ошибок связанных с аутентификацией.

SDK версия 1.1.12.1


1. Добавлено описание метода CheckSession()
2. Обновлён раздел документации Получение входящих документов

SDK версия 1.2.0


1. Добавлена поддержка ГОСТ Р 34.10-2012 для электронной подписи
2. Реализована возможность использования отложенного подписания

SDK версия 1.2.1


1. Оптимизирована обработка служебных документов

SDK версия 1.2.2


1. Поддержка двухфакторной аутентификации по сертификату

http://sbis.ru 84

Вам также может понравиться