WriteReportings — различия между версиями

Материал из razgovorov.ru
Перейти к: навигация, поиск
Строка 8: Строка 8:
 
##:<source lang="json">
 
##:<source lang="json">
 
{
 
{
  ...
+
    ...
  "ПараметрыЗагрузки":
+
"ПараметрыЗагрузки":  
  {
+
{
"ИсточникЗагрузки": 0,
+
"ИсточникЗагрузки": 0,
"ДлительнаяОперация": false
+
"ДлительнаяОперация": false,
        "ТипРеестра": "РеестрЭО"
+
"ТипРеестра": "РеестрЭО"
  }
+
}
  ...
+
    ...
 
}
 
}
 
</source>
 
</source>

Версия 17:34, 12 октября 2021

Описание

Метод позволяет за один вызов загрузить отчетность в учетную систему.

Алгоритм работы

Асинхронная загрузка файлов на СБИС.Диск.

  1. Принимаем на вход JSON объект структурно похожий на объект Документ с массивом вложений вида объект Файл со свойством: ПутьКФайлу. Дополнительно для метода Uploading.Create необходимо указать параметры загрузки. Создать JSON объект ПараметрыЗагрузки с полями ИсточникЗагрузки( Подробнее ), ИдГруппыЗагрузок( опциональный Подробнее ), ДлительнаяОперация( true/false По умолчанию стоит true, поэтому если длительная операция не требуется необходимо указать false), ТипРеестра( [ Подробнее] )
    1. {
          ...
      	"ПараметрыЗагрузки": 
      	{
      		"ИсточникЗагрузки": 0,
      		"ДлительнаяОперация": false,
      		"ТипРеестра": "РеестрЭО"
      	}
          ...
      }
  2. Загружаем переданные файлы на СБИС.Диск и проставляем ссылки. Сообщаем пользователю о начале асинхронной загрузки файлов ошибкой метода вида ExtException с кодом 308 сериализованную в строку, где в detail лежит текст "#ASYNC"( См. #Исключения №1 ). Она обозначает, что плагин загрузит файлы из вложений на СБИС.Диск и проставит недостающие ссылки в соответствующий объект Файл. Во время проставления ссылок возможны следующие события от плагина:
    1. Событе с именем "extsdk2.async.progress" о прогрессе загрузки вложений в виде объекта json сериализованного в строку.
      {
        "QueryId": "49a7caad-5eea-4d7d-8e91-d4a4f7ff6c47",
        "Progress": "50"
      }
    2. В случае ошибки плагин пробрасывает событие с именем "extsdk2.async.error". Оно содержит QueryID вызываемого метода и ExtException, сериализованные в строку( См. #Исключения №2 ). Обработка вложений плагином немедленно завершается.
  3. Если во всех вложениях ссылки проставлены, то вызываем метод Uploading.Create и подписываемся на событие окончания загрузки.
  4. Событие окончания загрузки приходит независимо от успешности самой загрузки файлов. Поэтому при получении события вызываем метод Uploading.GetResult передав идентификатор загрузки из события.
  5. Разбираем ответ Uploading.GetResult и возвращаем результат работы WriteReportingsEx в виде JSON объекта
    1. В случае успеха плагин пробрасывает событие с именем "extsdk2.async.complete" возвращает #Результат №2, сериализованный в строку.
    2. В случае ошибки плагин пробрасывает событие с именем "extsdk2.async.error"( См. #Исключения №2 ).

Параметры

Результат

  1. Если во вложениях указаны все ссылки и дополнительная загрузка вложений не требуется:
  2. Если требуется дополнительная загрузка вложений:

Исключения

  1. Сообщение об ошибке с текстом "#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'
          }
        ]
      }
    }
  2. Сообщение 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': {...}
    }
  }
}