Получение информации о типе документа

Каждый документ в Диадоке имеет свой формат. Формат определяет свойства документа, его поведение и требования к содержимому.

Формат документа в Диадоке определяется сочетанием трех параметров:

  • тип документа,

  • функция этого типа,

  • версия этого типа и функции.

Диадок позволяет получить список всех доступных типов документов с их функциями и версиями с помощью метода GetDocumentTypes (V2).

Примечание

Необязательно получать информацию о типах документов при работе с каждым документом: ее можно получить один раз и сохранить для последующего использования.

На странице Форматы документов приведены таблицы со списком основных доступных форматов формализованных и неформализованных документов — их типов, версий и функций. Обратите внимание, что эти таблицы являются справочными, а данные в них действительны на момент публикации. Актуальный список можно получить с помощью метода GetDocumentTypes (V2).

Получение данных о типе документа

Чтобы получить данные о типе документа:

  1. Вызовите метод GetDocumentTypes (V2). В ответе метод возвращает описание всех типов документов, доступных пользователю в Диадоке в указанном ящике. Каждый элемент в списке ответа представлен структурой DocumentTypeDescriptionV2.

  2. Среди полученного списка найдите описание типа, который требуется для вашего интеграционного решения.

Ниже приведен пример ответа метода GetDocumentTypes. Так как количество типов документов в Диадоке большое, для простоты приведем только часть ответа, описывающую УПД формата приказа №970 с функцией СЧФ.

Пример тела ответа метода GetDocumentTypes:

{
    "DocumentTypes": [
        {
            "Functions": [
                {
                    "Name": "СЧФ",
                    "Versions": [
                        {
                            "IsActual": true,
                            "SupportsAmendmentRequest": true,
                            "SupportsContentPatching": true,
                            "SupportsEncrypting": true,
                            "SupportsPredefinedRecipientTitle": false,
                            "Titles": [
                                {
                                    "EncryptedMetadataItems": [],
                                    "Index": 0,
                                    "IsFormal": true,
                                    "MetadataItems": [],
                                    "SignerInfo": {
                                        "ExtendedDocumentTitleType": 12,
                                        "SignerType": 3,
                                        "SignerUserDataXsdUrl": "/GetContent?typeNamedId=UniversalTransferDocument&function=СЧФ&version=utd970_05_03_01&titleIndex=0&contentType=SignerUserContractXsd"
                                    },
                                    "UserDataXsdUrl": "/GetContent?typeNamedId=UniversalTransferDocument&function=СЧФ&version=utd970_05_03_01&titleIndex=0&contentType=UserContractXsd",
                                    "XsdUrl": "/GetContent?typeNamedId=UniversalTransferDocument&function=СЧФ&version=utd970_05_03_01&titleIndex=0&contentType=TitleXsd"
                                }
                            ],
                            "Version": "utd970_05_03_01",
                            "workflows": [
                                {
                                    "Id": 17,
                                    "IsDefault": true
                                },
                                {
                                    "Id": 10,
                                    "IsDefault": false
                                }
                            ]
                        }
                    ]
                }
            ],
            "Name": "UniversalTransferDocument",
            "RequiresFnsRegistration": true,
            "SupportedDocflows": [
                0
            ],
            "Title": "УПД"
        }
    ]
}

Данные для генерации титула

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

  • идентификатор типа документа,

  • функция документа,

  • версия документа,

  • идентификатор титула документа,

  • XSD-схема для формирования упрощенного XML-файла UserDataXml.

Из полученного выше ответа метода GetDocumentTypes получаем следующие данные:

  • DocumentTypeDescriptionV2.Name — тип документа: UniversalTransferDocument,

  • DocumentTypeDescriptionV2.Functions[].Name — функция документа: СЧФ,

  • DocumentTypeDescriptionV2.Functions[].Versions[].Version — версия документа: utd970_05_03_01,

  • DocumentTypeDescriptionV2.Functions[].Versions[].Titles[].Index — идентификатор титула документа: 0 (титул продавца),

  • DocumentTypeDescriptionV2.Functions[].Versions[].Titles[].UserDataXsdUrl — ссылка для получения XSD-схемы упрощенного XML-файла титула: /GetContent?typeNamedId=UniversalTransferDocument&function=СЧФ&version=utd970_05_03_01&titleIndex=0&contentType=UserContractXsd.

Чтобы получить упрощенную XSD-схему для формирования UserDataXml, вызовите метод GetContent по ссылке из поля UserDataXsdUrl. Ссылка для получения полной XSD-схемы титула хранится в поле XsdUrl.

Полученные данные можно использовать для генерации титула документа.

Данные для заполнения блока подписанта

Описание типа документа содержит данные для заполнения подписанта каждого типа. Эта информация хранится в структуре SignerInfoV2.

Из полученного выше ответа метода GetDocumentTypes получаем следующие данные:

  • DocumentTypeDescriptionV2.Functions[].Versions[].Titles[].SignerInfo.SignerType — тип заполнения данных подписанта: 3 — универсальный формат,

  • DocumentTypeDescriptionV2.Functions[].Versions[].Titles[].SignerInfo.ExtendedDocumentTitleType — тип титула документа: 12 — данные для титула покупателя УПД формата приказа №970,

  • DocumentTypeDescriptionV2.Functions[].Versions[].Titles[].SignerInfo.SignerUserDataXsdUrl — ссылка для получения XSD-схемы упрощенного XML-фала универсального подписанта: /GetContent?typeNamedId=UniversalTransferDocument&function=СЧФ&version=utd970_05_03_01&titleIndex=0&contentType=SignerUserContractXsd.

Чтобы получить упрощенную XSD-схему для формирования XML-блока универсального подписанта, вызовите метод GetContent по ссылке из поля SignerUserDataXsdUrl. В ответ метод вернет файл XSD-схемы для заполнения данных подписанта.

Полученные данные можно использовать для:

Данные о видах документооборота

Описание типа документа содержит данные о видах документооборота, доступных для каждой версии документа.

Эти данные хранятся в массиве DocumentTypeDescriptionV2.Functions[].Versions[].workflows[] в виде структуры DocumentWorkflow.

По идентификатору, хранящемуся в поле DocumentWorkflow.Id можно узнать информацию об этом виде документооборота с помощью метода GetWorkflowsSettings (V2).