WriteDocumentEx - Расширенный метод создания и отправки документа (ExtSdk2) — различия между версиями
Строка 22: | Строка 22: | ||
# Принимаем на вход [[Документ_-_Объект_ExtSdk2|объект Документ]] с массивом вложений вида объект Файл со свойствами: Путь к файлу, Строка, Двоичные данные, Ссылка, Обработчики. Дополнительные данные по текущим свойствам см.метод [[WriteDocument_-_создает_/_обновляет_Документ_(ExtSdk2)|WriteDocument]]. | # Принимаем на вход [[Документ_-_Объект_ExtSdk2|объект Документ]] с массивом вложений вида объект Файл со свойствами: Путь к файлу, Строка, Двоичные данные, Ссылка, Обработчики. Дополнительные данные по текущим свойствам см.метод [[WriteDocument_-_создает_/_обновляет_Документ_(ExtSdk2)|WriteDocument]]. | ||
# Проверяем вложения на наличие Ссылок | # Проверяем вложения на наличие Ссылок | ||
− | ## Если во всех вложениях ссылки проставлены, то записываем документ, запускаем его в документооборот и возвращаем [[ #Результат ]] | + | ## Если во всех вложениях ссылки проставлены, то записываем документ, запускаем его в документооборот и возвращаем [[ #Результат №1]] |
## Если во вложениях проставлены не все ссылки, то возвращаем ошибку вида ExtException с кодом 308 сериализованную в строку, где в detail лежит текст "#ASYNC"( См. [[ #Исключения ]] №1 ). Она обозначает, что плагин загрузит файлы из вложений на СБИС.Диск и проставит недостающие ссылки в соответствующий объект Файл. Во время проставления ссылок возможны следующие события от плагина: | ## Если во вложениях проставлены не все ссылки, то возвращаем ошибку вида ExtException с кодом 308 сериализованную в строку, где в detail лежит текст "#ASYNC"( См. [[ #Исключения ]] №1 ). Она обозначает, что плагин загрузит файлы из вложений на СБИС.Диск и проставит недостающие ссылки в соответствующий объект Файл. Во время проставления ссылок возможны следующие события от плагина: | ||
### Событе с именем "extsdk2.writedocumentex.progress" о прогрессе загрузки вложений в виде объекта json сериализованного в строку. | ### Событе с именем "extsdk2.writedocumentex.progress" о прогрессе загрузки вложений в виде объекта json сериализованного в строку. | ||
Строка 32: | Строка 32: | ||
</source> | </source> | ||
### В случае ошибки плагин пробрасывает событие с именем "extsdk2.writedocumentex.error". Оно содержит QueryID вызываемого метода и ExtException, сериализованные в строку( См. [[ #Исключения ]] №2 ). Обработка документа плагином немедленно завершается. | ### В случае ошибки плагин пробрасывает событие с именем "extsdk2.writedocumentex.error". Оно содержит QueryID вызываемого метода и ExtException, сериализованные в строку( См. [[ #Исключения ]] №2 ). Обработка документа плагином немедленно завершается. | ||
− | # Как только все ссылки во вложениях успешно расставлены, плагин автоматически создает редакцию документа и производит | + | # Как только все ссылки во вложениях успешно расставлены, плагин автоматически создает редакцию документа и производит этап документооборота, указанный в документе. |
− | ## В случае успеха плагин возвращает | + | ## В случае успеха плагин возвращает [[ #Результат №2]] |
##* {{Шаблон:ApiParam|QueryId||строка| Идентификатор запроса в плагин}} | ##* {{Шаблон:ApiParam|QueryId||строка| Идентификатор запроса в плагин}} | ||
##* {{Шаблон:ApiParam|Result||объект| [[Документ_-_Объект_ExtSdk2|объект Документ]]}} | ##* {{Шаблон:ApiParam|Result||объект| [[Документ_-_Объект_ExtSdk2|объект Документ]]}} | ||
Строка 42: | Строка 42: | ||
* {{Шаблон:ApiParam|Document|1|объект| [[Документ_-_Объект_ExtSdk2|объект Документ]]}} | * {{Шаблон:ApiParam|Document|1|объект| [[Документ_-_Объект_ExtSdk2|объект Документ]]}} | ||
== Результат == | == Результат == | ||
+ | |||
* {{Шаблон:ApiParam|Result||объект| [[Документ_-_Объект_ExtSdk2|объект Документ]]}} | * {{Шаблон:ApiParam|Result||объект| [[Документ_-_Объект_ExtSdk2|объект Документ]]}} | ||
* {{Шаблон:ApiParam|Stat||объект|[[Stat_-_ExtSdk2_Объект|статистика времени выполнения операции]]}} | * {{Шаблон:ApiParam|Stat||объект|[[Stat_-_ExtSdk2_Объект|статистика времени выполнения операции]]}} |
Версия 15:24, 18 февраля 2021
Содержание
Описание
Метод позволяет за один вызов записать и запустить документооборот по документу.
Алгоритм работы
Асинхронная загрузка файлов в WriteDocumentEx.
- Принимаем на вход объект Документ с массивом вложений вида объект Файл со свойствами: Путь к файлу, Строка, Двоичные данные, Ссылка, Обработчики. Дополнительные данные по текущим свойствам см.метод WriteDocument.
- Проверяем вложения на наличие Ссылок
- Если во всех вложениях ссылки проставлены, то:
- Выполняем СБИС.ЗаписатьДокумент.
- Если необходимо действие для документа, то выполняем: СБИС.ПодготовитьДействие и СБИС.ВыполнитьДействие.
- Если во вложениях проставлены не все ссылки, то возвращаем ошибку с текстом "#ASYNC" и кодом 308. Она обозначает, что плагин сам проставит недостающие ссылки. Необходимо подождать.
- Во время данного этапа возможны сообщения от плагина о проценте обработки вложений.
- В случае ошибки плагин выдает соответствующее сообщение. Обработка документа плагином немедленно завершается.
- Если во всех вложениях ссылки проставлены, то:
- Данный шаг выполняем при условии, что все ссылки во вложениях проставлены. Документ готов к обработке плагином.
- Выполняем запись документа через СБИС.ЗаписатьДокумент.
- Если необходимо действие для документа, то выполняем: СБИС.ПодготовитьДействие и СБИС.ВыполнитьДействие.
- При успешном выполнении данных операций плагин выдает сообщение с итоговым объектом документ. См. "Результат"
- В случае ошибки плагин выдает соответствующее сообщение.
Асинхронная загрузка файлов в WriteDocumentEx.
- Принимаем на вход объект Документ с массивом вложений вида объект Файл со свойствами: Путь к файлу, Строка, Двоичные данные, Ссылка, Обработчики. Дополнительные данные по текущим свойствам см.метод WriteDocument.
- Проверяем вложения на наличие Ссылок
- Если во всех вложениях ссылки проставлены, то записываем документ, запускаем его в документооборот и возвращаем #Результат №1
- Если во вложениях проставлены не все ссылки, то возвращаем ошибку вида ExtException с кодом 308 сериализованную в строку, где в detail лежит текст "#ASYNC"( См. #Исключения №1 ). Она обозначает, что плагин загрузит файлы из вложений на СБИС.Диск и проставит недостающие ссылки в соответствующий объект Файл. Во время проставления ссылок возможны следующие события от плагина:
- Событе с именем "extsdk2.writedocumentex.progress" о прогрессе загрузки вложений в виде объекта json сериализованного в строку.
{ "QueryId": "49a7caad-5eea-4d7d-8e91-d4a4f7ff6c47", "Progress": "50" }
- В случае ошибки плагин пробрасывает событие с именем "extsdk2.writedocumentex.error". Оно содержит QueryID вызываемого метода и ExtException, сериализованные в строку( См. #Исключения №2 ). Обработка документа плагином немедленно завершается.
- Событе с именем "extsdk2.writedocumentex.progress" о прогрессе загрузки вложений в виде объекта json сериализованного в строку.
- Как только все ссылки во вложениях успешно расставлены, плагин автоматически создает редакцию документа и производит этап документооборота, указанный в документе.
- В случае успеха плагин возвращает #Результат №2
- QueryId (строка) - Идентификатор запроса в плагин
- Result (объект) - объект Документ
- Stat (объект) - статистика времени выполнения операции
- В случае ошибки плагин выдает соответствующее сообщение. См. "Исключения" №2
- В случае успеха плагин возвращает #Результат №2
Параметры
- Document ! (объект) - объект Документ
Результат
- Result (объект) - объект Документ
- Stat (объект) - статистика времени выполнения операции
Исключения
- Сообщение об ошибке с текстом "#ASYNC" и кодом 308
{ "code": 308, "detail": "#ASYNC", "dump": {}, "message": "Ожидайте загрузки документа", "method_name": "ExtSdk2.AsyncWriteDocumentEx", "stack": [ { "method_name": "AsyncWriteDocument 49a7caad-5eea-4d7d-8e91-d4a4f7ff6c47" } ] }
- Сообщение об ошибке с QueryId вызываемого метода
{ "QueryId": "49a7caad-5eea-4d7d-8e91-d4a4f7ff6c47", "Error": "Ошибка ExtException сериализованная в строку" }