WriteReportings
Версия от 17:34, 12 октября 2021; Долбицын Артём (обсуждение | вклад)
Содержание
Описание
Метод позволяет за один вызов загрузить отчетность в учетную систему.
Алгоритм работы
Асинхронная загрузка файлов на СБИС.Диск.
- Принимаем на вход JSON объект структурно похожий на объект Документ с массивом вложений вида объект Файл со свойством: ПутьКФайлу. Дополнительно для метода Uploading.Create необходимо указать параметры загрузки. Создать JSON объект ПараметрыЗагрузки с полями ИсточникЗагрузки( Подробнее ), ИдГруппыЗагрузок( опциональный Подробнее ), ДлительнаяОперация( true/false По умолчанию стоит true, поэтому если длительная операция не требуется необходимо указать false), ТипРеестра( [ Подробнее] )
{ ... "ПараметрыЗагрузки": { "ИсточникЗагрузки": 0, "ДлительнаяОперация": false, "ТипРеестра": "РеестрЭО" } ... }
- Загружаем переданные файлы на СБИС.Диск и проставляем ссылки. Сообщаем пользователю о начале асинхронной загрузки файлов ошибкой метода вида ExtException с кодом 308 сериализованную в строку, где в detail лежит текст "#ASYNC"( См. #Исключения №1 ). Она обозначает, что плагин загрузит файлы из вложений на СБИС.Диск и проставит недостающие ссылки в соответствующий объект Файл. Во время проставления ссылок возможны следующие события от плагина:
- Событе с именем "extsdk2.async.progress" о прогрессе загрузки вложений в виде объекта json сериализованного в строку.
{ "QueryId": "49a7caad-5eea-4d7d-8e91-d4a4f7ff6c47", "Progress": "50" }
- В случае ошибки плагин пробрасывает событие с именем "extsdk2.async.error". Оно содержит QueryID вызываемого метода и ExtException, сериализованные в строку( См. #Исключения №2 ). Обработка вложений плагином немедленно завершается.
- Событе с именем "extsdk2.async.progress" о прогрессе загрузки вложений в виде объекта json сериализованного в строку.
- Если во всех вложениях ссылки проставлены, то вызываем метод Uploading.Create и подписываемся на событие окончания загрузки.
- Событие окончания загрузки приходит независимо от успешности самой загрузки файлов. Поэтому при получении события вызываем метод Uploading.GetResult передав идентификатор загрузки из события.
- Разбираем ответ Uploading.GetResult и возвращаем результат работы WriteReportingsEx в виде JSON объекта
- В случае успеха плагин пробрасывает событие с именем "extsdk2.async.complete" возвращает #Результат №2, сериализованный в строку.
- В случае ошибки плагин пробрасывает событие с именем "extsdk2.async.error"( См. #Исключения №2 ).
Параметры
- Document ! (объект) - структурно похожий объект Документ
Результат
- Если во вложениях указаны все ссылки и дополнительная загрузка вложений не требуется:
- Result (объект) - Результат Uploading.GetResult
- Stat (объект) - статистика времени выполнения операции
- Если требуется дополнительная загрузка вложений:
- QueryId (строка) - Идентификатор запроса в плагин
- Result (объект) - Результат Uploading.GetResult
- Stat (объект) - статистика времени выполнения операции
Исключения
- Сообщение об ошибке с текстом "#ASYNC" и кодом 308
{ 'type': 'Error', 'queryID': 'b3e310ec-7d85-4026-bfad-228690f38d55', 'data': { 'code': 308, 'detail': '#ASYNC', 'dump': {}, 'message': 'Ожидайте загрузки документа', 'method_name': 'ExtSdk2.WriteDocumentEx', 'stack': [ { 'method_name': 'AsyncUploadAttachments b3e310ec-7d85-4026-bfad-228690f38d55' } ] } }
- Сообщение extsdk2.async.error об ошибке с QueryId вызываемого метода
{ 'type': 'Event', 'data': { 'channelName': 'SbisPluginEvent', 'eventName': 'extsdk2.async.error', 'type': 'object', 'data': { 'Error': { 'code': 721, 'detail': "Ошибка в реквизитах: Неверно указан ИНН '761010101'. Должен состоять из 10 или 12 цифр.", 'dump': {}, 'message': 'Неверно указан ИНН', 'method_name': 'ExtSdk2.WriteDocumentEx', 'stack': [ { 'error': " : error -1 Ошибка в реквизитах: Неверно указан ИНН '761010101'. Должен состоять из 10 или 12 цифр.", 'method_name': 'SbisWriteDocument' } ] }, 'QueryId': 'a0471201-ce2d-4922-831e-f80a8a781170' } } }
Пример успешного вызова
Запрос
{
"Идентификатор": "a2d76238-6ea2-4b6a-ab08-1d55da03f62c",
"Дата": "18.02.2021",
"Номер": "210218152847",
"Контрагент": {
"СвЮЛ": {
"ИНН": "1111681325",
"КПП": "111101001",
"Название": "Тестовый Получатель"
}
},
"НашаОрганизация": {
"СвЮЛ": {
"ИНН": "7610101010",
"КПП": "541100000"
}
},
"Примечание": "Отправка юниттестом ExtSdk2",
"Тип": "ДокОтгрИсх",
"Вложение": [
{
"Файл": {
"Имя": "Счет",
"ПутьКФайлу": Путь до файла на компьютере
}
}
]
}
Ответ
{
'type': 'Event',
'data': {
'channelName': 'SbisPluginEvent',
'eventName': 'extsdk2.async.complete',
'type': 'object',
'data': {
'QueryId': '4fb98709-0264-4e01-a0aa-e4d30b4b65a7',
'Result': {
'Идентификатор': 'a6f9d1dd-f670-4a26-a4df-2bc4162186f4',
'ИдентификаторСеанса': '01130ddd6916401c82aafb79f2228116',
'Контрагент': {
'Email': '',
'ИдентификаторИС': '628040744',
'ИдентификаторСПП': '67879103',
'Описание': '',
'СвЮЛ': {
'АдресЮридический': 'Ярославская обл., г. Рыбинск, тер. ГМ 3 по улице Толбухина, ул. Толбухина, 152914',
'ИНН': '5534011287',
'КПП': '324245371',
'КодСтраны': '643',
'Название': 'Булочка с корицей, ООО'
},
'Телефон': ''
},
'Направление': 'Исходящий',
'НашаОрганизация': {
'ИдентификаторИС': '',
'ИдентификаторСПП': '67504126',
'СвЮЛ': {
'АдресЮридический': 'г. Ярославль',
'ИНН': '7610101010',
'КПП': '541100000',
'КодСтраны': '643',
'Название': 'Ромашенька, ООО'
}
},
'Ответственный': {
'Идентификатор': '',
'Имя': 'Иван',
'Отчество': 'Иванович',
'Фамилия': 'Иванов'
},
'Подтип': '',
'Примечание': '',
'Редакция': [
{
'Актуален': 'Нет',
'ДатаВремя': '01.06.2021 12.19.00',
'Идентификатор': 'a74bb7a0-f2e9-4ace-b4fe-9ae34ed3f602',
'ПримечаниеИС': ''
}
],
'Событие': [
{
'Вложение': [
{
'ВерсияФормата': '',
'Дата': '',
'Зашифрован': 'Нет',
'Идентификатор': '41fe6106-6c87-4a21-9971-37ad02a54cde',
'КоличествоОшибок': '',
'КомплекснаяСвязь': 'Нет',
'Модифицирован': 'Нет',
'Название': 'ДвоичныеДанные',
'Направление': 'Исходящий',
'Номер': '',
'ПодверсияФормата': '',
'Подпись': [
{
'Направление': 'Исходящая',
'Сертификат': {
'Алгоритм': 'ГОСТ Р 34.10-2012 256',
'ДвоичныеДанные': '',
'ДействителенПо': '15.03.2022 10.46.29',
'ДействителенС': '15.12.2020 10.36.29',
'Должность': 'Директор',
'ИНН': '7610101010',
'Издатель': '"ООО Тестовая ""КОМПАНИЯ ""ТЕНЗОР""", "ООО Тестовая ""КОМПАНИЯ ""ТЕНЗОР""", Московский проспект д.12, г. Ярославль, Ярославская обл., RU, 007605016030, 1027600787994, test-ca_tensor@tensor.ru',
'Квалифицированный': 'Да',
'Ключ': {
'Активирован': 'Нет',
'СпособАктивации': '',
'Тип': 'Клиентский'
},
'КодСтраны': 'RU',
'Название': 'ООО "РЫБМОРЕ"',
'ОГРНИП': '',
'Отпечаток': '24568C4DB9778C3B145393302C17DE219B27DE93',
'СерийныйНомер': '01581F800092AC87AC41D45D9F2D1F2ED5',
'ФИО': 'Иванов Иван Иванович'
},
'Тип': 'Отсоединенная',
'Файл': {
'Имя': 'ДвоичныеДанные.sgn',
'Ссылка': 'https://fix-disk.sbis.ru/disk/api/v1/58a99d90-d9e2-4e28-862f-3a09fe59e16a?is_sign=true&object=simple_file_sd&diskhmac=8Fpc7icUexC7P51oLeJPjVuLcMU%3D',
'Хеш': ''
}
}
],
'Подтип': '',
'Редакция': {
'ДатаВремя': '01.06.2021 12.19.00',
'Номер': '1'
},
'Служебный': 'Нет',
'СсылкаВКабинет': '',
'СсылкаНаHTML': '',
'СсылкаНаPDF': '',
'Сумма': '',
'СуммаБезНДС': '',
'Тип': '',
'ТипШифрования': 'Отсутствует',
'Удален': 'Нет',
'УдаленКонтрагентом': 'Нет',
'Упакован': 'Нет',
'Файл': {
'Имя': 'ДвоичныеДанные',
'Ссылка': 'https://fix-disk.sbis.ru/disk/api/v1/1398284d-eae8-4f47-ad8d-f848f8c0d722_b0fc1471-18b8-4577-83b7-0ee56f0033a4?object=simple_file_sd&uuid=b50a6b41-6d82-417c-98b4-b0264d452443&diskhmac=lPgrh2negdAFEUyT0zyDq0npeCQ%3D',
'Хеш': ''
}
},
],
'Группа': {
'ДатаВремя': '',
'Код': '3',
'Название': 'Служебные',
'Описание': '',
'Приоритет': '0'
},
'ДатаВремя': '01.06.2021 12.19.04',
'ДатаВремяДокумента': '',
'Идентификатор': '01130ddd-6916-401c-82aa-fb79f2228116',
'Комментарий': '',
'Название': 'Загрузка'
},
{
'Вложение': [
{
'ВерсияФормата': '',
'Дата': '',
'Зашифрован': 'Нет',
'Идентификатор': '41fe6106-6c87-4a21-9971-37ad02a54cde',
'КоличествоОшибок': '',
'КомплекснаяСвязь': 'Нет',
'Модифицирован': 'Нет',
'Название': 'ДвоичныеДанные',
'Направление': 'Исходящий',
'Номер': '',
'ПодверсияФормата': '',
'Подпись': [
{
'Направление': 'Исходящая',
'Сертификат': {
'Алгоритм': 'ГОСТ Р 34.10-2012 256',
'ДвоичныеДанные': '',
'ДействителенПо': '15.03.2022 10.46.29',
'ДействителенС': '15.12.2020 10.36.29',
'Должность': 'Директор',
'ИНН': '7610101010',
'Издатель': '"ООО Тестовая ""КОМПАНИЯ ""ТЕНЗОР""", "ООО Тестовая ""КОМПАНИЯ ""ТЕНЗОР""", Московский проспект д.12, г. Ярославль, Ярославская обл., RU, 007605016030, 1027600787994, test-ca_tensor@tensor.ru',
'Квалифицированный': 'Да',
'Ключ': {
'Активирован': 'Нет',
'СпособАктивации': '',
'Тип': 'Клиентский'
},
'КодСтраны': 'RU',
'Название': 'ООО "РЫБМОРЕ"',
'ОГРНИП': '',
'Отпечаток': '24568C4DB9778C3B145393302C17DE219B27DE93',
'СерийныйНомер': '01581F800092AC87AC41D45D9F2D1F2ED5',
'ФИО': 'Иванов Иван Иванович'
},
'Тип': 'Отсоединенная',
'Файл': {
'Имя': 'ДвоичныеДанные.sgn',
'Ссылка': 'https://fix-disk.sbis.ru/disk/api/v1/58a99d90-d9e2-4e28-862f-3a09fe59e16a?is_sign=true&object=simple_file_sd&diskhmac=8Fpc7icUexC7P51oLeJPjVuLcMU%3D',
'Хеш': ''
}
}
],
'Подтип': '',
'Редакция': {
'ДатаВремя': '01.06.2021 12.19.00',
'Номер': '1'
},
'Служебный': 'Нет',
'СсылкаВКабинет': '',
'СсылкаНаHTML': '',
'СсылкаНаPDF': '',
'Сумма': '',
'СуммаБезНДС': '',
'Тип': '',
'ТипШифрования': 'Отсутствует',
'Удален': 'Нет',
'УдаленКонтрагентом': 'Нет',
'Упакован': 'Нет',
'Файл': {
'Имя': 'ДвоичныеДанные',
'Ссылка': 'https://fix-disk.sbis.ru/disk/api/v1/1398284d-eae8-4f47-ad8d-f848f8c0d722_b0fc1471-18b8-4577-83b7-0ee56f0033a4?object=simple_file_sd&uuid=b50a6b41-6d82-417c-98b4-b0264d452443&diskhmac=lPgrh2negdAFEUyT0zyDq0npeCQ%3D',
'Хеш': ''
}
},
],
'Группа': {
'ДатаВремя': '',
'Код': '0',
'Название': 'Отправка',
'Описание': 'Отправлено',
'Приоритет': '0'
},
'ДатаВремя': '01.06.2021 12.19.05',
'ДатаВремяДокумента': '',
'Идентификатор': '280a00d2-6be5-4968-8735-4c7a37fbad0e',
'Исполнитель': {
'Идентификатор': '',
'Имя': 'Иван',
'Отчество': 'Иванович',
'Фамилия': 'Иванов'
},
'Комментарий': '',
'Название': 'Отправка'
}
],
'Состояние': {
'Код': '3',
'Название': 'Отправлен',
'НеполнаяОбработка': 'Нет',
'Описание': 'Ожидается доставка',
'Примечание': '',
'Сложное': 'Нет'
},
'СсылкаДляКонтрагент': 'https://fix-plugin.sbis.ru/svrd/v2/inc_pack/01130ddd-6916-401c-82aa-fb79f2228116',
'СсылкаДляНашаОрганизация': 'https://fix-plugin.sbis.ru/opendoc.html?guid=159e7afd-b1db-48a1-9c65-8fc2bb8f3511',
'Тип': 'ДокОтгрИсх'
},
'Stat': {...}
}
}
}