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

Материал из razgovorov.ru
Перейти к: навигация, поиск
 
(не показано 13 промежуточных версий этого же участника)
Строка 1: Строка 1:
 
== Описание ==
 
== Описание ==
Метод позволяет за один вызов загрузить отчетность в учетную систему.
+
Метод позволяет за один вызов загрузить отчетность в СБИС.
 +
 
 +
== Параметры ==
 +
 
 +
* {{Шаблон:ApiParam|Catalog|1|объект| объект с массивом вложений}}
 +
** {{Шаблон:ApiParam|Вложение||массив| Массив вложений для загрузки}}
 +
*** {{Шаблон:ApiParam|Файл||объект| Объект файл}}
 +
**** {{Шаблон:ApiParam|Имя||строка| Имя файла}}
 +
**** {{Шаблон:ApiParam|ДвоичныеДанные||строка| Файл в виде двоичных данных( Не допускается использовать одновременно с Строка, ПутьКФайлу, Ссылка )}}
 +
**** {{Шаблон:ApiParam|Строка||строка| Файл в виде строки( Не допускается использовать одновременно с ДвоичныеДанные, ПутьКФайлу, Ссылка )}}
 +
**** {{Шаблон:ApiParam|ПутьКФайлу||строка| Путь до файла на PC( Не допускается использовать одновременно с ДвоичныеДанные, Строка, Ссылка )}}
 +
**** {{Шаблон:ApiParam|Ссылка||строка| Ссылка на файл на СБИС.Диск( Не допускается использовать одновременно с ДвоичныеДанные, Строка, ПутьКФайлу )}}
 +
 
 +
== Результат ==
 +
 
 +
* {{Шаблон:ApiParam|QueryId||строка| Идентификатор запроса в плагин}}
 +
* {{Шаблон:ApiParam|Result||объект| объект}}
 +
** {{Шаблон:ApiParam|PK||число| Первичный ключ загрузки}}
 +
** {{Шаблон:ApiParam|Status||число| Статус загрузки}}
 +
** {{Шаблон:ApiParam|Parameters ||объект| Параметры загрузки}}
 +
*** {{Шаблон:ApiParam|Sourse||число| [https://wi.sbis.ru/doc/edo/fileloader/API/definitions/source/ Подробнее]}}
 +
** {{Шаблон:ApiParam|Error||строка| Содержит текст ошибки, если обработка загрузки завершилась с ошибкой}}
 +
** {{Шаблон:ApiParam|LoadedFiles||массив| Список загруженных файлов}}
 +
*** {{Шаблон:ApiParam|GroupName||строка| Имя группы документов}}
 +
*** {{Шаблон:ApiParam|GroupSize||число| Количество документов в группе}}
 +
*** {{Шаблон:ApiParam|DocList||массив| Список документов}}
 +
**** {{Шаблон:ApiParam|PK||число| Идентификатор (первичный ключ) загружаемого файла}}
 +
**** {{Шаблон:ApiParam|Name||строка| Имя файла}}
 +
**** {{Шаблон:ApiParam|Size||строка| Размер файла в байтах}}
 +
**** {{Шаблон:ApiParam|Type||число| Тип загруженного файла [https://wi.sbis.ru/doc/edo/fileloader/API/definitions/file_type/ Подробнее]}}
 +
**** {{Шаблон:ApiParam|Document||число| Первичный ключ документа (если есть)}}
 +
**** {{Шаблон:ApiParam|DocUUID||строка| Идентификатор документа (если есть)}}
 +
**** {{Шаблон:ApiParam|DocName||строка| Имя документа (если есть)}}
 +
**** {{Шаблон:ApiParam|DocType||строка| Тип документа из сервиса форматов (если есть)}}
 +
**** {{Шаблон:ApiParam|DocSubType||строка| Подтип документа из сервиса форматов (если есть)}}
 +
**** {{Шаблон:ApiParam|Parameters||объект| Параметры загружаемого файла}}
 +
**** {{Шаблон:ApiParam|Info||объект| Информация о загружаемом файле (заполняется загрузчиком)}}
 +
**** {{Шаблон:ApiParam|ShortState||число| Состояние документа (заполняется прикладным загрузчиком)}}
 +
**** {{Шаблон:ApiParam|Date||строка| Дата документа (заполняется прикладным загрузчиком)}}
 +
**** {{Шаблон:ApiParam|FileInnerID||число| Внутренний идентификатор загружаемого файла}}
 +
**** {{Шаблон:ApiParam|NameList||массив| Список файлов в документе}}
 +
***** {{Шаблон:ApiParam|PK||число| Первичный ключ файла}}
 +
***** {{Шаблон:ApiParam|Name||строка| Имя файла}}
 +
** {{Шаблон:ApiParam|FailedFiles||массив| Список файлов, которые не удалось загрузить}}
 +
*** {{Шаблон:ApiParam|PK||число| Идентификатор (первичный ключ) загружаемого файла}}
 +
*** {{Шаблон:ApiParam|Name||строка| Имя файла}}
 +
*** {{Шаблон:ApiParam|Size||строка| Размер файла в байтах}}
 +
*** {{Шаблон:ApiParam|Parameters||объект| Параметры загружаемого файла}}
 +
*** {{Шаблон:ApiParam|Info||объект| Информация о загружаемом файле (заполняется загрузчиком)}}
 +
*** {{Шаблон:ApiParam|Msg||строка| Текст ошибки загрузки файла}}
 +
*** {{Шаблон:ApiParam|UserMsg||строка| Текст ошибки загрузки файла для информационного сообщения пользователю}}
 +
*** {{Шаблон:ApiParam|Code||число| Код ошибки}}
 +
* {{Шаблон:ApiParam|Stat||объект|[[Stat_-_ExtSdk2_Объект|статистика времени выполнения операции]]}}
  
 
== Алгоритм работы ==  
 
== Алгоритм работы ==  
  
Асинхронная загрузка файлов на СБИС.Диск.
+
# Принимаем на вход JSON объект [[Каталог|объект Каталог]] с массивом вложений.
# Принимаем на вход JSON объект структурно похожий на [[Документ_-_Объект_ExtSdk2|объект Документ]] с массивом вложений вида объект Файл со свойством: ПутьКФайлу. Дополнительно для метода [https://wi.sbis.ru/docs/bl/FileLoader/%D0%A4%D0%B0%D1%81%D0%B0%D0%B4%20%D0%97%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B8/Uploading/methods/Create/?v=21.6100 Uploading.Create] необходимо указать параметры загрузки. Создать JSON объект ПараметрыЗагрузки с полями ИсточникЗагрузки( [https://wi.sbis.ru/doc/edo/fileloader/API/definitions/source/ Подробнее] ), ИдГруппыЗагрузок( опциональный [https://wi.sbis.ru/doc/edo/fileloader/API/definitions/group_id/ Подробнее] ), ДлительнаяОперация( true/false По умолчанию стоит true, поэтому если длительная операция не требуется необходимо указать false), ТипРеестра( [ Подробнее] )
+
# Если требуется загрузка файлов на СБИС.Диск( Параметр Ссылка проставлен не во всех вложениях ). Если все ссылки изначально проставлены, то сразу переход к п.3
##:<source lang="json">
+
## Загружаем переданные файлы на СБИС.Диск и проставляем ссылки. Сообщаем пользователю о начале асинхронной загрузки файлов ошибкой метода вида ExtException с кодом 308 сериализованную в строку, где в detail лежит текст "#ASYNC"( См. [[ #Исключения ]] №1 ). Она обозначает, что плагин загрузит файлы из вложений на СБИС.Диск и проставит недостающие ссылки в соответствующий объект Файл. Во время проставления ссылок возможны следующее событие от плагина:
{
+
### В случае ошибки плагин пробрасывает событие с именем "extsdk2.async.error". Оно содержит QueryID вызываемого метода и ExtException, сериализованные в строку( См. [[ #Исключения ]] №2 ). Обработка вложений плагином немедленно завершается.
  "ПараметрыЗагрузки":
+
# Загрузка отчетности в СБИС
  {
+
## Если во всех вложениях ссылки уже были проставлены, то сообщаем пользователю о начале загрузки файлов в СБИС ошибкой метода вида ExtException с кодом 308 сериализованную в строку, где в detail лежит текст "#ASYNC"( См. [[ #Исключения ]] №1 ). Она означает, что необходимо ожидать событие загрузки отчетности в СБИС.
"ИсточникЗагрузки": 0,
+
## Если во вложениях ссылки проставлялись плагином, то вызываем метод [https://wi.sbis.ru/docs/bl/FileLoader/%D0%A4%D0%B0%D1%81%D0%B0%D0%B4%20%D0%97%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B8/Uploading/methods/Create/?v=21.6100 Uploading.Create] и ожидаем [https://wi.sbis.ru/doc/edo/fileloader/API/event/ событие окончания загрузки].
"ДлительнаяОперация": false
+
# При получении события окончания загрузки вызываем метод [https://wi.sbis.ru/doc/edo/fileloader/API/result/read_result/ Uploading.ReadResult] передав идентификатор загрузки из события.
        "ТипРеестра": "РеестрЭО"
+
# Разбираем ответ Uploading.ReadResult и возвращаем результат работы WriteReportings в виде JSON объекта
  }
+
## В случае успеха плагин пробрасывает событие с именем "extsdk2.async.complete" возвращает [[ #Результат]], сериализованный в строку.
}
 
</source>
 
# Загружаем переданные файлы на СБИС.Диск и проставляем ссылки. Сообщаем пользователю о начале асинхронной загрузки файлов ошибкой метода вида ExtException с кодом 308 сериализованную в строку, где в detail лежит текст "#ASYNC"( См. [[ #Исключения ]] №1 ). Она обозначает, что плагин загрузит файлы из вложений на СБИС.Диск и проставит недостающие ссылки в соответствующий объект Файл. Во время проставления ссылок возможны следующие события от плагина:
 
## Событе с именем "extsdk2.async.progress" о прогрессе загрузки вложений в виде объекта json сериализованного в строку.
 
##:<source lang="json">
 
{
 
  "QueryId": "49a7caad-5eea-4d7d-8e91-d4a4f7ff6c47",
 
  "Progress": "50"
 
}
 
</source>
 
## В случае ошибки плагин пробрасывает событие с именем "extsdk2.async.error". Оно содержит QueryID вызываемого метода и ExtException, сериализованные в строку( См. [[ #Исключения ]] №2 ). Обработка вложений плагином немедленно завершается.
 
# Если во всех вложениях ссылки проставлены, то вызываем метод [https://wi.sbis.ru/docs/bl/FileLoader/%D0%A4%D0%B0%D1%81%D0%B0%D0%B4%20%D0%97%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B8/Uploading/methods/Create/?v=21.6100 Uploading.Create] и подписываемся на [https://wi.sbis.ru/doc/edo/fileloader/API/event/ событие окончания загрузки].
 
# Событие окончания загрузки приходит независимо от успешности самой загрузки файлов. Поэтому при получении события вызываем метод [https://wi.sbis.ru/doc/edo/fileloader/API/result/get_result/ Uploading.GetResult] передав идентификатор загрузки из события.
 
# Разбираем ответ Uploading.GetResult и возвращаем результат работы WriteReportingsEx в виде JSON объекта
 
## В случае успеха плагин пробрасывает событие с именем "extsdk2.async.complete" возвращает [[ #Результат]] №2, сериализованный в строку.
 
 
## В случае ошибки плагин пробрасывает событие с именем "extsdk2.async.error"( См. [[ #Исключения ]] №2 ).
 
## В случае ошибки плагин пробрасывает событие с именем "extsdk2.async.error"( См. [[ #Исключения ]] №2 ).
 
+
 
== Параметры ==
+
 
* {{Шаблон:ApiParam|Document|1|объект| [[Документ_-_Объект_ExtSdk2|структурно похожий объект Документ]]}}
 
== Результат ==
 
# Если во вложениях указаны все ссылки и дополнительная загрузка вложений не требуется:
 
#* {{Шаблон:ApiParam|Result||объект| Результат [https://wi.sbis.ru/doc/edo/fileloader/API/result/get_result/ Uploading.GetResult]}}
 
#* {{Шаблон:ApiParam|Stat||объект|[[Stat_-_ExtSdk2_Объект|статистика времени выполнения операции]]}}
 
# Если требуется дополнительная загрузка вложений:
 
#* {{Шаблон:ApiParam|QueryId||строка| Идентификатор запроса в плагин}}
 
#* {{Шаблон:ApiParam|Result||объект| Результат [https://wi.sbis.ru/doc/edo/fileloader/API/result/get_result/ Uploading.GetResult]}}
 
#* {{Шаблон:ApiParam|Stat||объект|[[Stat_-_ExtSdk2_Объект|статистика времени выполнения операции]]}}
 
 
== Исключения ==
 
== Исключения ==
 
# Сообщение об ошибке с текстом "#ASYNC" и кодом 308
 
# Сообщение об ошибке с текстом "#ASYNC" и кодом 308
Строка 52: Строка 80:
 
     'dump': {},
 
     'dump': {},
 
     'message': 'Ожидайте загрузки документа',
 
     'message': 'Ожидайте загрузки документа',
     'method_name': 'ExtSdk2.WriteDocumentEx',
+
     'method_name': 'ExtSdk2.WriteReportings',
 
     'stack': [
 
     'stack': [
 
       {
 
       {
Строка 64: Строка 92:
 
#:<source lang="json">
 
#:<source lang="json">
 
{
 
{
   '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'
 
    }
 
  }
 
 
}
 
}
 
</source>
 
</source>
Строка 92: Строка 99:
 
<source lang="json">
 
<source lang="json">
 
{
 
{
  "Идентификатор": "a2d76238-6ea2-4b6a-ab08-1d55da03f62c",
+
"Вложение":  
  "Дата": "18.02.2021",
+
[
  "Номер": "210218152847",
+
{
  "Контрагент": {
+
"Файл": {
    "СвЮЛ": {
+
"Имя": "ON_NSCHFDOPPR___10210326_f25268e5-803a-407e-9ba5-0950ba405a3f.xml",
      "ИНН": "1111681325",
+
"ПутьКФайлу": Путь к правильно сформированному файлу на PC
      "КПП": "111101001",
+
}
      "Название": "Тестовый Получатель"
+
},
    }
+
{
  },
+
"Файл": {
  "НашаОрганизация": {
+
"Имя": "sfact.xml",
    "СвЮЛ": {
+
"ПутьКФайлу": Путь к не правильно сформированному файлу на PC
      "ИНН": "7610101010",
+
}
      "КПП": "541100000"
+
}
    }
+
]
  },
 
  "Примечание": "Отправка юниттестом ExtSdk2",
 
  "Тип": "ДокОтгрИсх",
 
  "Вложение": [
 
    {
 
      "Файл": {
 
        "Имя": "Счет",
 
        "ПутьКФайлу": Путь до файла на компьютере
 
      }
 
    }
 
  ]
 
 
}
 
}
 
</source>
 
</source>
Строка 124: Строка 120:
 
<source lang="json">
 
<source lang="json">
 
{
 
{
   'type': 'Event',
+
   "QueryId": "57ad3d81-1fbb-4bd9-9da7-3900f099edb2",
   'data': {
+
   "Result": {
     'channelName': 'SbisPluginEvent',
+
     "Error": null,
     'eventName': 'extsdk2.async.complete',
+
     "FailedFiles": [
    'type': 'object',
+
       {
    'data': {
+
         "Code": 0,
      'QueryId': '4fb98709-0264-4e01-a0aa-e4d30b4b65a7',
+
         "Info": {
       'Result': {
+
           "SuccessfulScanReplacement": false
         'Идентификатор': 'a6f9d1dd-f670-4a26-a4df-2bc4162186f4',
 
         'ИдентификаторСеанса': '01130ddd6916401c82aafb79f2228116',
 
        'Контрагент': {
 
          'Email': '',
 
          'ИдентификаторИС': '628040744',
 
          'ИдентификаторСПП': '67879103',
 
          'Описание': '',
 
          'СвЮЛ': {
 
            'АдресЮридический': 'Ярославская обл., г. Рыбинск, тер. ГМ 3 по улице Толбухина, ул. Толбухина, 152914',
 
            'ИНН': '5534011287',
 
            'КПП': '324245371',
 
            'КодСтраны': '643',
 
            'Название': 'Булочка с корицей, ООО'
 
          },
 
           'Телефон': ''
 
 
         },
 
         },
         'Направление': 'Исходящий',
+
         "Msg": "Неверно указан ИНН \"{ОРГАНИЗАЦИЯИНН}\". Должен состоять из 10 или 12 цифр.",
         'НашаОрганизация': {
+
         "Name": "sfact1.xml",
          'ИдентификаторИС': '',
+
        "PK": 12322907,
          'ИдентификаторСПП': '67504126',
+
        "Parameters": {
          'СвЮЛ': {
+
          "IsLoadingInto": false,
            'АдресЮридический': 'г. Ярославль',
+
          "IsNeedFilePrepare": false,
            'ИНН': '7610101010',
+
          "ИдентификаторДискВерсияДокумента": "f52bfff7-2d09-44c2-a69c-c69d566a6214_5fc01a00-d4e0-4701-926e-aac5fc605031",
            'КПП': '541100000',
+
          "ИдентификаторДискДокумент": "f52bfff7-2d09-44c2-a69c-c69d566a6214",
            'КодСтраны': '643',
+
          "ТипРеестра": "РеестрЭО"
            'Название': 'Ромашенька, ООО'
 
          }
 
 
         },
 
         },
         'Ответственный': {
+
         "Size": 2838,
          'Идентификатор': '',
+
        "UserMsg": "Неверно указан ИНН \"{ОРГАНИЗАЦИЯИНН}\". Должен состоять из 10 или 12 цифр."
          'Имя': 'Иван',
+
      }
          'Отчество': 'Иванович',
+
    ],
          'Фамилия': 'Иванов'
+
    "ID": "9f1d9178102843cd8f51a22db27cce55",
        },
+
    "LoadedFiles": [
        'Подтип': '',
+
      {
        'Примечание': '',
+
         "DocList": [
         'Редакция': [
 
 
           {
 
           {
             'Актуален': 'Нет',
+
             "Date": "2021-03-21",
             'ДатаВремя': '01.06.2021 12.19.00',
+
             "DocName": "Реализация&nbsp№БП-15&nbspот&nbsp21.03.21&nbspСнабАвиа, ООО",
             'Идентификатор': 'a74bb7a0-f2e9-4ace-b4fe-9ae34ed3f602',
+
            "DocSubType": "1115131",
             'ПримечаниеИС': ''
+
            "DocType": "СчФктр",
          }
+
             "DocUUID": "2e7100b0-1c7e-488e-82b8-4ca095c7a0f3",
        ],
+
             "Document": 37845,
        'Событие': [
+
            "FileInnerID": 0,
          {
+
            "Info": {
            'Вложение': [
+
              "DocType": "ДокОтгрИсх",
               {
+
               "DocTypeCaption": "Реализация",
                'ВерсияФормата': '',
+
              "OpenMode": 4,
                'Дата': '',
+
              "SuccessfulScanReplacement": false,
                'Зашифрован': 'Нет',
+
              "Дата": "2021-03-21",
                'Идентификатор': '41fe6106-6c87-4a21-9971-37ad02a54cde',
+
              "ИдентификаторДиск": "e4e91959-47aa-47da-8378-09ddddb47a82",
                'КоличествоОшибок': '',
+
              "Номер": "БП-15",
                'КомплекснаяСвязь': 'Нет',
+
              "РП.ДополнительнаяИнформация": [],
                'Модифицирован': 'Нет',
+
              "РП.ОсновнаяИнформация": {
                 'Название': 'ДвоичныеДанные',
+
                 "Валюта": "",
                 'Направление': 'Исходящий',
+
                 "Веха": null,
                 'Номер': '',
+
                 "Заголовок1": {
                'ПодверсияФормата': '',
+
                  "Адрес": null,
                'Подпись': [
+
                   "Геометка": null,
                   {
+
                  "ИдО": 176,
                    'Направление': 'Исходящая',
+
                  "Название": "СнабАвиа",
                    'Сертификат': {
+
                  "Тип": 0
                      'Алгоритм': 'ГОСТ Р 34.10-2012 256',
+
                },
                      'ДвоичныеДанные': '',
+
                "Заголовок2": null,
                      'ДействителенПо': '15.03.2022 10.46.29',
+
                "Заголовок3": null,
                      'ДействителенС': '15.12.2020 10.36.29',
+
                "Заголовок4": {
                      'Должность': 'Директор',
+
                  "ИдО": null,
                      'ИНН': '7610101010',
+
                  "Название": null,
                      'Издатель': '"ООО Тестовая ""КОМПАНИЯ ""ТЕНЗОР""", "ООО Тестовая ""КОМПАНИЯ ""ТЕНЗОР""", Московский проспект д.12, г. Ярославль, Ярославская обл., RU, 007605016030, 1027600787994, test-ca_tensor@tensor.ru',
+
                  "Тип": null
                      'Квалифицированный': 'Да',
+
                },
                      'Ключ': {
+
                "Комментарий1": "",
                        'Активирован': 'Нет',
+
                "Комментарий2": "ООО ВинСтек",
                        'СпособАктивации': '',
+
                "Комментарий3": null,
                        'Тип': 'Клиентский'
+
                "Комментарий4": null,
                      },
+
                "Комментарий5": null,
                      'КодСтраны': 'RU',
+
                "Комментарий6": null,
                      'Название': 'ООО "РЫБМОРЕ"',
+
                "КомментарийЗаголовка": null,
                      'ОГРНИП': '',
+
                "КомментарийОтветственного": null,
                      'Отпечаток': '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'
 
 
                 },
 
                 },
                 'Служебный': 'Нет',
+
                 "Сотрудник": [],
                'СсылкаВКабинет': '',
+
                 "Срок": null,
                 'СсылкаНаHTML': '',
+
                 "Сумма": null
                 'СсылкаНа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',
+
             "Name": "ON_NSCHFDOPPR___10210326_f25268e5-803a-407e-9ba5-0950ba405a3f.xml",
            'ДатаВремяДокумента': '',
+
             "NameList": [
            'Идентификатор': '01130ddd-6916-401c-82aa-fb79f2228116',
 
            'Комментарий': '',
 
             'Название': 'Загрузка'
 
          },
 
          {
 
            'Вложение': [
 
 
               {
 
               {
                 'ВерсияФормата': '',
+
                 "Name": "ON_NSCHFDOPPR___10210326_f25268e5-803a-407e-9ba5-0950ba405a3f.xml",
                'Дата': '',
+
                 "PK": 12322906
                'Зашифрован': 'Нет',
+
               }
                'Идентификатор': '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',
 
                  'Хеш': ''
 
                }
 
               },
 
 
             ],
 
             ],
             'Группа': {
+
             "PK": 12322906,
               'ДатаВремя': '',
+
            "Parameters": {
               'Код': '0',
+
               "DocUUID": "2e7100b0-1c7e-488e-82b8-4ca095c7a0f3",
               'Название': 'Отправка',
+
              "IsLoadingInto": false,
               'Описание': 'Отправлено',
+
               "IsNeedFilePrepare": false,
               'Приоритет': '0'
+
               "ИдентификаторДискВерсияДокумента": "e4e91959-47aa-47da-8378-09ddddb47a82_04050472-3bb9-4771-8ebd-d2d268d1c4f8",
 +
               "ИдентификаторДискДокумент": "e4e91959-47aa-47da-8378-09ddddb47a82",
 +
               "ТипРеестра": "РеестрЭО"
 
             },
 
             },
             'ДатаВремя': '01.06.2021 12.19.05',
+
             "ShortState": 0,
             'ДатаВремяДокумента': '',
+
             "Size": 4388,
             'Идентификатор': '280a00d2-6be5-4968-8735-4c7a37fbad0e',
+
             "Type": 0
            'Исполнитель': {
 
              'Идентификатор': '',
 
              'Имя': 'Иван',
 
              'Отчество': 'Иванович',
 
              'Фамилия': 'Иванов'
 
            },
 
            'Комментарий': '',
 
            'Название': 'Отправка'
 
 
           }
 
           }
 
         ],
 
         ],
         'Состояние': {
+
         "GroupName": "Реализация",
          'Код': '3',
+
        "GroupSize": 1
          'Название': 'Отправлен',
+
      }
          'НеполнаяОбработка': 'Нет',
+
    ],
          'Описание': 'Ожидается доставка',
+
    "PK": 6840909,
          'Примечание': '',
+
    "Parameters": {
          'Сложное': 'Нет'
+
      "Sourse": 0
        },
+
    },
        'СсылкаДляКонтрагент': 'https://fix-plugin.sbis.ru/svrd/v2/inc_pack/01130ddd-6916-401c-82aa-fb79f2228116',
+
    "Status": 4
        'СсылкаДляНашаОрганизация': 'https://fix-plugin.sbis.ru/opendoc.html?guid=159e7afd-b1db-48a1-9c65-8fc2bb8f3511',
+
  },
        'Тип': 'ДокОтгрИсх'
+
  "Stat": {
      },
+
    ...
      'Stat': {...}
 
    }
 
 
   }
 
   }
 
}
 
}
</source>
 
<source lang="json">
 
 
</source>
 
</source>
  
 
[[Категория:Методы ExtSdk2]]
 
[[Категория:Методы ExtSdk2]]

Текущая версия на 15:58, 19 октября 2021

Описание

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

Параметры

  • Catalog ! (объект) - объект с массивом вложений
    • Вложение (массив) - Массив вложений для загрузки
      • Файл (объект) - Объект файл
        • Имя (строка) - Имя файла
        • ДвоичныеДанные (строка) - Файл в виде двоичных данных( Не допускается использовать одновременно с Строка, ПутьКФайлу, Ссылка )
        • Строка (строка) - Файл в виде строки( Не допускается использовать одновременно с ДвоичныеДанные, ПутьКФайлу, Ссылка )
        • ПутьКФайлу (строка) - Путь до файла на PC( Не допускается использовать одновременно с ДвоичныеДанные, Строка, Ссылка )
        • Ссылка (строка) - Ссылка на файл на СБИС.Диск( Не допускается использовать одновременно с ДвоичныеДанные, Строка, ПутьКФайлу )

Результат

  • QueryId (строка) - Идентификатор запроса в плагин
  • Result (объект) - объект
    • PK (число) - Первичный ключ загрузки
    • Status (число) - Статус загрузки
    • Parameters (объект) - Параметры загрузки
    • Error (строка) - Содержит текст ошибки, если обработка загрузки завершилась с ошибкой
    • LoadedFiles (массив) - Список загруженных файлов
      • GroupName (строка) - Имя группы документов
      • GroupSize (число) - Количество документов в группе
      • DocList (массив) - Список документов
        • PK (число) - Идентификатор (первичный ключ) загружаемого файла
        • Name (строка) - Имя файла
        • Size (строка) - Размер файла в байтах
        • Type (число) - Тип загруженного файла Подробнее
        • Document (число) - Первичный ключ документа (если есть)
        • DocUUID (строка) - Идентификатор документа (если есть)
        • DocName (строка) - Имя документа (если есть)
        • DocType (строка) - Тип документа из сервиса форматов (если есть)
        • DocSubType (строка) - Подтип документа из сервиса форматов (если есть)
        • Parameters (объект) - Параметры загружаемого файла
        • Info (объект) - Информация о загружаемом файле (заполняется загрузчиком)
        • ShortState (число) - Состояние документа (заполняется прикладным загрузчиком)
        • Date (строка) - Дата документа (заполняется прикладным загрузчиком)
        • FileInnerID (число) - Внутренний идентификатор загружаемого файла
        • NameList (массив) - Список файлов в документе
          • PK (число) - Первичный ключ файла
          • Name (строка) - Имя файла
    • FailedFiles (массив) - Список файлов, которые не удалось загрузить
      • PK (число) - Идентификатор (первичный ключ) загружаемого файла
      • Name (строка) - Имя файла
      • Size (строка) - Размер файла в байтах
      • Parameters (объект) - Параметры загружаемого файла
      • Info (объект) - Информация о загружаемом файле (заполняется загрузчиком)
      • Msg (строка) - Текст ошибки загрузки файла
      • UserMsg (строка) - Текст ошибки загрузки файла для информационного сообщения пользователю
      • Code (число) - Код ошибки
  • Stat (объект) - статистика времени выполнения операции

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

  1. Принимаем на вход JSON объект объект Каталог с массивом вложений.
  2. Если требуется загрузка файлов на СБИС.Диск( Параметр Ссылка проставлен не во всех вложениях ). Если все ссылки изначально проставлены, то сразу переход к п.3
    1. Загружаем переданные файлы на СБИС.Диск и проставляем ссылки. Сообщаем пользователю о начале асинхронной загрузки файлов ошибкой метода вида ExtException с кодом 308 сериализованную в строку, где в detail лежит текст "#ASYNC"( См. #Исключения №1 ). Она обозначает, что плагин загрузит файлы из вложений на СБИС.Диск и проставит недостающие ссылки в соответствующий объект Файл. Во время проставления ссылок возможны следующее событие от плагина:
      1. В случае ошибки плагин пробрасывает событие с именем "extsdk2.async.error". Оно содержит QueryID вызываемого метода и ExtException, сериализованные в строку( См. #Исключения №2 ). Обработка вложений плагином немедленно завершается.
  3. Загрузка отчетности в СБИС
    1. Если во всех вложениях ссылки уже были проставлены, то сообщаем пользователю о начале загрузки файлов в СБИС ошибкой метода вида ExtException с кодом 308 сериализованную в строку, где в detail лежит текст "#ASYNC"( См. #Исключения №1 ). Она означает, что необходимо ожидать событие загрузки отчетности в СБИС.
    2. Если во вложениях ссылки проставлялись плагином, то вызываем метод Uploading.Create и ожидаем событие окончания загрузки.
  4. При получении события окончания загрузки вызываем метод Uploading.ReadResult передав идентификатор загрузки из события.
  5. Разбираем ответ Uploading.ReadResult и возвращаем результат работы WriteReportings в виде JSON объекта
    1. В случае успеха плагин пробрасывает событие с именем "extsdk2.async.complete" возвращает #Результат, сериализованный в строку.
    2. В случае ошибки плагин пробрасывает событие с именем "extsdk2.async.error"( См. #Исключения №2 ).


Исключения

  1. Сообщение об ошибке с текстом "#ASYNC" и кодом 308
    {
      'type': 'Error',
      'queryID': 'b3e310ec-7d85-4026-bfad-228690f38d55',
      'data': {
        'code': 308,
        'detail': '#ASYNC',
        'dump': {},
        'message': 'Ожидайте загрузки документа',
        'method_name': 'ExtSdk2.WriteReportings',
        'stack': [
          {
            'method_name': 'AsyncUploadAttachments b3e310ec-7d85-4026-bfad-228690f38d55'
          }
        ]
      }
    }
  2. Сообщение extsdk2.async.error об ошибке с QueryId вызываемого метода
    {
      
    }

Пример успешного вызова

Запрос

{
"Вложение": 
[
	{
		"Файл": {
			"Имя": "ON_NSCHFDOPPR___10210326_f25268e5-803a-407e-9ba5-0950ba405a3f.xml",
			"ПутьКФайлу": Путь к правильно сформированному файлу на PC
		}
	},
	{
		"Файл": {
			"Имя": "sfact.xml",
			"ПутьКФайлу": Путь к не правильно сформированному файлу на PC
		}
	}
]
}

Ответ

{
  "QueryId": "57ad3d81-1fbb-4bd9-9da7-3900f099edb2",
  "Result": {
    "Error": null,
    "FailedFiles": [
      {
        "Code": 0,
        "Info": {
          "SuccessfulScanReplacement": false
        },
        "Msg": "Неверно указан ИНН \"{ОРГАНИЗАЦИЯИНН}\". Должен состоять из 10 или 12 цифр.",
        "Name": "sfact1.xml",
        "PK": 12322907,
        "Parameters": {
          "IsLoadingInto": false,
          "IsNeedFilePrepare": false,
          "ИдентификаторДискВерсияДокумента": "f52bfff7-2d09-44c2-a69c-c69d566a6214_5fc01a00-d4e0-4701-926e-aac5fc605031",
          "ИдентификаторДискДокумент": "f52bfff7-2d09-44c2-a69c-c69d566a6214",
          "ТипРеестра": "РеестрЭО"
        },
        "Size": 2838,
        "UserMsg": "Неверно указан ИНН \"{ОРГАНИЗАЦИЯИНН}\". Должен состоять из 10 или 12 цифр."
      }
    ],
    "ID": "9f1d9178102843cd8f51a22db27cce55",
    "LoadedFiles": [
      {
        "DocList": [
          {
            "Date": "2021-03-21",
            "DocName": "Реализация&nbsp№БП-15&nbspот&nbsp21.03.21&nbspСнабАвиа, ООО",
            "DocSubType": "1115131",
            "DocType": "СчФктр",
            "DocUUID": "2e7100b0-1c7e-488e-82b8-4ca095c7a0f3",
            "Document": 37845,
            "FileInnerID": 0,
            "Info": {
              "DocType": "ДокОтгрИсх",
              "DocTypeCaption": "Реализация",
              "OpenMode": 4,
              "SuccessfulScanReplacement": false,
              "Дата": "2021-03-21",
              "ИдентификаторДиск": "e4e91959-47aa-47da-8378-09ddddb47a82",
              "Номер": "БП-15",
              "РП.ДополнительнаяИнформация": [],
              "РП.ОсновнаяИнформация": {
                "Валюта": "",
                "Веха": null,
                "Заголовок1": {
                  "Адрес": null,
                  "Геометка": null,
                  "ИдО": 176,
                  "Название": "СнабАвиа",
                  "Тип": 0
                },
                "Заголовок2": null,
                "Заголовок3": null,
                "Заголовок4": {
                  "ИдО": null,
                  "Название": null,
                  "Тип": null
                },
                "Комментарий1": "",
                "Комментарий2": "ООО ВинСтек",
                "Комментарий3": null,
                "Комментарий4": null,
                "Комментарий5": null,
                "Комментарий6": null,
                "КомментарийЗаголовка": null,
                "КомментарийОтветственного": null,
                "НастройкиОтображения": {},
                "НашаОрганизация": {
                  "Голова": "ВинСтек",
                  "Филиал": ""
                },
                "Регламент": {
                  "Название": "Реализация"
                },
                "Сотрудник": [],
                "Срок": null,
                "Сумма": null
              }
            },
            "Name": "ON_NSCHFDOPPR___10210326_f25268e5-803a-407e-9ba5-0950ba405a3f.xml",
            "NameList": [
              {
                "Name": "ON_NSCHFDOPPR___10210326_f25268e5-803a-407e-9ba5-0950ba405a3f.xml",
                "PK": 12322906
              }
            ],
            "PK": 12322906,
            "Parameters": {
              "DocUUID": "2e7100b0-1c7e-488e-82b8-4ca095c7a0f3",
              "IsLoadingInto": false,
              "IsNeedFilePrepare": false,
              "ИдентификаторДискВерсияДокумента": "e4e91959-47aa-47da-8378-09ddddb47a82_04050472-3bb9-4771-8ebd-d2d268d1c4f8",
              "ИдентификаторДискДокумент": "e4e91959-47aa-47da-8378-09ddddb47a82",
              "ТипРеестра": "РеестрЭО"
            },
            "ShortState": 0,
            "Size": 4388,
            "Type": 0
          }
        ],
        "GroupName": "Реализация",
        "GroupSize": 1
      }
    ],
    "PK": 6840909,
    "Parameters": {
      "Sourse": 0
    },
    "Status": 4
  },
  "Stat": {
    ...
  }
}