WriteDocumentEx - Расширенный метод создания и отправки документа (ExtSdk2) — различия между версиями

Материал из razgovorov.ru
Перейти к: навигация, поиск
Строка 3: Строка 3:
  
 
== Алгоритм работы ==  
 
== Алгоритм работы ==  
Асинхронная загрузка файлов в WriteDocumentEx
+
Асинхронная загрузка файлов в WriteDocumentEx.
 
+
# Метод принимает на вход [[Документ_-_Объект_ExtSdk2|объект Документ]] с массивом вложений вида объект Файл со свойствами: Путь к файлу, Строка, Двоичные данные, Ссылка, Обработчики, дополнительные данные по текущим свойствам см.метод WriteDocument.
 +
# Следующим шагом данный метод проверяет наличие вложений, не имеющих свойства Ссылка.
 +
## Если в объекте Документ все вложения в объекте файл содержат свойство Ссылка, то выполняется запись документа через СБИС.ЗаписатьДокумент
 +
и производится выполнение этапа документа оборота, если таковое имеется: СБИС.ПодготовитьДействие и СБИС.ВыполнитьДействие. Возвращается результат работы метода с итоговым объектом документ
 +
## Если в объекте Документ не все вложения в объекте имеют свойство Ссылка, то метод возвращает ошибку с текстом #ASYNC и кодом 308, обозначающую, что нужно подождать сообщение от плагина, так как ему требуется время, чтобы загрузить вложения на СБИС.Диск и заменить во всех Вложениях в объекте Файл текущие свойства( Двоичные данные, Путь к файлу, Строка ) на Ссылка.
 +
### Во время данного этапа возможны сообщения от плагина о проценте загрузки данных вложений, содержащее qyeryId вызванного изначально метода WriteDocumentEx, чтобы можно было увидеть текущий прогресс.
 +
### В случае ошибки плагин выдает сообщение с ошибкой, содержащее qyeryId вызванного изначально метода WriteDocumentEx. Обработка документа плагином немедленно завершается.
 +
# Данный шаг выполняется при условии, что все ссылки во вложениях проставлены. Документ готов к обработке плагином. Выполняется запись документа через СБИС.ЗаписатьДокумент и производится выполнение этапа документа оборота, если таковое имеется: СБИС.ПодготовитьДействие и СБИС.ВыполнитьДействие.
 +
## При успешном выполнении данных операции плагин пробрасывает сообщение с итоговым объектом документ, содержащее содержащее qyeryId вызванного изначально метода WriteDocumentEx.
 +
## В случае ошибки плагин выдает сообщение с ошибкой, содержащее qyeryId вызванного изначально метода WriteDocumentEx. Обработка документа плагином немедленно завершается.
 +
{ ключи: значение,
 +
 
 
# Если в документе есть данные подлежащие загрузке на СБИС.Диск, то метод запускает загрузку всех файлов и пробрасывает исключение "#ASYNC и кодом 308"
 
# Если в документе есть данные подлежащие загрузке на СБИС.Диск, то метод запускает загрузку всех файлов и пробрасывает исключение "#ASYNC и кодом 308"
 
# Если последнее обновление документа было больше чем секунду назад, то пробрасывается событие в ВО  
 
# Если последнее обновление документа было больше чем секунду назад, то пробрасывается событие в ВО  

Версия 10:49, 16 февраля 2021

Описание

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

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

Асинхронная загрузка файлов в WriteDocumentEx.

  1. Метод принимает на вход объект Документ с массивом вложений вида объект Файл со свойствами: Путь к файлу, Строка, Двоичные данные, Ссылка, Обработчики, дополнительные данные по текущим свойствам см.метод WriteDocument.
  2. Следующим шагом данный метод проверяет наличие вложений, не имеющих свойства Ссылка.
    1. Если в объекте Документ все вложения в объекте файл содержат свойство Ссылка, то выполняется запись документа через СБИС.ЗаписатьДокумент

и производится выполнение этапа документа оборота, если таковое имеется: СБИС.ПодготовитьДействие и СБИС.ВыполнитьДействие. Возвращается результат работы метода с итоговым объектом документ

    1. Если в объекте Документ не все вложения в объекте имеют свойство Ссылка, то метод возвращает ошибку с текстом #ASYNC и кодом 308, обозначающую, что нужно подождать сообщение от плагина, так как ему требуется время, чтобы загрузить вложения на СБИС.Диск и заменить во всех Вложениях в объекте Файл текущие свойства( Двоичные данные, Путь к файлу, Строка ) на Ссылка.
      1. Во время данного этапа возможны сообщения от плагина о проценте загрузки данных вложений, содержащее qyeryId вызванного изначально метода WriteDocumentEx, чтобы можно было увидеть текущий прогресс.
      2. В случае ошибки плагин выдает сообщение с ошибкой, содержащее qyeryId вызванного изначально метода WriteDocumentEx. Обработка документа плагином немедленно завершается.
  1. Данный шаг выполняется при условии, что все ссылки во вложениях проставлены. Документ готов к обработке плагином. Выполняется запись документа через СБИС.ЗаписатьДокумент и производится выполнение этапа документа оборота, если таковое имеется: СБИС.ПодготовитьДействие и СБИС.ВыполнитьДействие.
    1. При успешном выполнении данных операции плагин пробрасывает сообщение с итоговым объектом документ, содержащее содержащее qyeryId вызванного изначально метода WriteDocumentEx.
    2. В случае ошибки плагин выдает сообщение с ошибкой, содержащее qyeryId вызванного изначально метода WriteDocumentEx. Обработка документа плагином немедленно завершается.

{ ключи: значение,

  1. Если в документе есть данные подлежащие загрузке на СБИС.Диск, то метод запускает загрузку всех файлов и пробрасывает исключение "#ASYNC и кодом 308"
  2. Если последнее обновление документа было больше чем секунду назад, то пробрасывается событие в ВО
    • Объект{
    { L"QueryId", Идентификатор запроса в плагин },
    { L"ProcentLoading", Процент загрузки }
    }
  3. Если документ загружен на 100 процентов, то пробрасывается событие окончания с итоговым объектом документ.
    • Объект{
    { L"QueryId", Идентификатор запроса в плагин },
    { L"ResultDocument", объект Документ}
    }
  4. Если процесс загрузки файлов сгенерировал ошибку, то пробрасывается событие с объектом ошибки
    • Объект{
    { L"QueryId", Идентификатор запроса в плагин },
    { L"Error", Текст ошибки }
    }

Параметры

Результат

Исключения

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

Запрос

Ответ