Как выполнять действия над документами

Действие над документом - это активность, которая меняет состояние документооборота по документу. Примеры действий: приемка, отклонение, аннулирование.

Общий порядок выполнения действий

Обычно действие сопровождается отправкой какого-либо подписанного вложения. Формат вложений зависит от типа документа, текущего этапа документооборота и оператора ЭДО.

Общий порядок выполнения действий выглядит так:

  • Сгенерировать вложение к действию. Для этого отправить в Integration API запрос на генерацию вложения или сгенерировать его самостоятельно средствами внешней системы.

  • Если вложение сгенерировано в Integration API, то загрузить результат генерации и при необходимости внести в него изменения. Если изменения были внесены, то измененное вложение нужно сохранить в архиве.

  • Подписать вложение. Для этого отправить в Crypto API запрос на подписание (серверное подписание), либо подписать вложение с помощью сертификата, установленного на машине пользователя (локальное подписание). Сохранить подпись в архиве.

  • Отправить в Integration API запрос на отправку подписанного вложения.

Примечание

Далее в описании действий пропущены пункты, касающиеся самостоятельной генерации и подписания вложений:

  • за самостоятельную генерацию отвечает внешняя система;

  • подписание для всех действий выполняется однотипно;

  • серверное подписание описано в документации к Crypto API.

Действия над документами в заблокированных пакетах

Для заблокированных пакетов все действия выполняются сразу для всех документов пакета, т.е. нельзя один документ принять, а другой - отклонить.

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

Если вложения генерируются средствами Integration API Продукта, то это учитывается автоматически: отправив запрос на генерацию вложения для одного документа, внешняя система получит вложения для всех документов заблокированного пакета, для которых выбранное действие применимо.

Эту особенность нужно учитывать при обработке результатов запроса на генерацию вложений.

Передача данных подписанта

В запросах на генерацию вложений передаются данные подписанта.
Они могут быть переданы двумя способами:
  • в явном виде;

  • с помощью открытой части сертификата.

{
    // ... ,

    "Signer": {                             // подписант
        "Surname": "string",                // фамилия подписанта
        "FirstName": "string",              // имя подписанта
        "MiddleName": "string",             // отчество подписанта
        "Inn": "string",                    // ИНН подписанта
        "OrganizationName": "string",       // наименование организации, в которой работает подписант
        "OrganizationInn": "string",        // ИНН организации, в которой работает подписант
        "Position": "string",               // должность подписанта
        "PowerOfAttorney": {                // данные доверенности (МЧД)
        }
    },
    "Certificate": "base64",                // открытая часть сертификата подписанта в Base64

    // ... ,
}

В явном виде данные подписанта передаются в поле Signer. В этом случае данные заполняются самостоятельно внешней системой.

Если для подписанта нужно указать доверенность (МЧД), то следует заполнить структуру PowerOfAttorney.

Открытая часть сертификата передается в поле Certificate. Здесь должен быть передан массив байт сертификата, без закрытого ключа, в Base64-кодировке. В этом случае данные подписанта определяются в результате разбора содержимого сертификата. Этот способ подходит только для сертификатов, выданных работникам организаций, и не подходит для сертификатов физ. лиц.

Примечание

Указывать данные подписанта нужно одним из двух способов.

Действия и маршруты согласования

Для действия могут быть настроены маршруты согласования. В этом случае отправка вложения к действию и подписи к нему не приводит к выполнению действия.

Вложение отправляется по маршруту согласования. Если маршрут завершается успешно (согласование пройдено), то действие выполняется. Если маршрут завершается неуспешно (согласование не пройдено), то действие не выполняется.

Если для действия настроен маршрут согласования, то подпись под вложением может быть сгенерирована в процессе прохождения вложения по маршруту. В этом случае на первом этапе выполнения действия в Integration API могут не передаваться данные подписанта, а на последнем этапе может передаваться вложение без подписи.

Нестандартные действия

На проектной основе возможна реализация различных нестандартных действий над документами, отличных от действий из поставки Продукта.

Подробную информацию о реализации нестандартных действий на проектной основе следует запрашивать в проектной поддержке Продукта.