Заполнение данных подписанта

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

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

  • заполнить их при генерации титула методом GenerateTitleXml: для этого укажите данные подписанта в теле запроса, тогда они сразу будут заполнены в сгенерированном титуле. Этот способ уместен, если генерация и подписание происходят сразу в одном интерфейсе.

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

В обоих случаях Диадок позволяет упростить процедуру заполнения данных подписанта для некоторых формализованных документов (они перечислены в поле ExtendedDocumentTitleType структуры SignerInfoV2). Чтобы при подписании каждого документа не заполнять все данные подписанта, можно единожды указать их с помощью метода ExtendedSignerDetails (V2). После этого при генерации или подготовке к подписанию нужно будет указывать в качестве данных подписанта только идентификатор ящика и отпечаток сертификата: на основании этой информации Диадок автоматически заполнит все остальные данные подписанта в титуле документа.

Выбор способа заполнения

Тип заполнения данных подписанта определяет, каким образом и какие данные подписанта будут заполнены. Чтобы определить тип заполнения данных подписанта, используйте метод GetDocumentTypes (V2): он вернет информацию в поле SignerType структуры SignerInfoV2. Инструкция о получении данных для подписанта из метода GetDocumentTypes приведена в разделе Данные для заполнения блока подписанта. Каждое значение SignerType предполагает свой формат заполнения данных подписанта:

Примечание

При этом если метод GetDocumentTypes вернул ссылку в поле SignerUserDataXsdUrl, то независимо от значения SignerType вы можете указывать подписанта в универсальном формате — с помощью бинарных данных.

Заполнение данных в упрощенном и расширенном формате зависит от того, когда вы его заполняете — при генерации или подготовке к подписанию:

Заполнение данных в универсальном формате при генерации и подготовке к подписанию происходит по одному и тому же алгоритму с единственной разницей: в случае подготовки к подписанию XML-файл подписанта готовится отдельно, а в случае генерации он уже является частью UserDataXml.

Для расширенного и универсального формата заполнения данных подписанта Диадок предоставляет возможность указать машиночитаемую доверенность (МЧД).

Указание машиночитаемой доверенности

При подписании документа юридического лица сертификатом, выданным на физическое лицо, нужно использовать машиночитаемую доверенность (МЧД).

В зависимости от того, когда вы заполняете данные подписанта, указать данные МЧД нужно в следующих структурах:

МЧД можно указать только для расширенного или универсального формата данных подписанта:

  • Для расширенного формата данных подписанта:

    • если вы задаете детали подписанта по сертификату с помощью SignerReference, то заполните структуру PowerOfAttorney: укажите регистрационный номер МЧД и ИНН доверителя или используйте МЧД по умолчанию с помощью значения UseDefault;

    • если вы задаете детали подписанта в явном виде с помощью SignerDetails, то при формировании подписанта по МЧД самостоятельно определите необходимость использования ИНН подписанта и название организации для ЮЛ из МЧД.

    В этом случае Диадок на основании МЧД автоматически заполнит в блоке подписанта поля, которых нет в сертификате, — например, наименование организации, ИНН ЮЛ.

  • Для универсального формата данных подписанта заполните в XML-файле блок PowerOfAttorney согласно XSD-схеме.

Универсальный формат заполнения данных подписанта

Диадок позволяет передавать данные подписанта в универсальном бинарном формате: это значит, что вы можете передать данные подписанта любого формата в бинарном виде. Формат подписанта при этом будет свой для каждого конкретного типа документа.

Этот способ заполнения данных подписанта является предпочтительным.

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

Бинарные данные подписанта должны представлять собой упрощенный XML-файл подписанта. Чтобы его подготовить, используйте XSD-схему:

По полученной схеме подготовьте упрощенный XML-файл с данными подписанта одним из следующих способов:

  • Используйте кодогенерацию в SDK. В C# SDK для всех версий формата приказа №970 есть пример кодогенерации. Кодогенерация осуществляется инструментом xsd.exe. Чтобы воспользоваться ей в C#-клиенте, нужно заполнить объект Signer и сериализовать его в XML.

  • Укажите в упрощенном XML-файле все данные для блока Подписант вручную.

  • Укажите в упрощенном XML-файле данные, по которым Диадок сможет дополнить информацию: например, идентификатор ящика организации, отпечаток сертификата и т.п.

При необходимости укажите в данных подписанта машиночитаемую доверенность.

Например, для УПД формата приказа №970 упрощенный XML-файл подписанта нужно сформировать в соответствии с XSD-схемой. Обратите внимание, что данные подписанта в служебных документах заполняются по отдельной XSD-схеме.

Пример упрощенного XML-файла подписанта:

<Signers BoxId="{{boxId}}">
    <Signer SignerPowersConfirmationMethod="3">
        <Certificate CertificateThumbprint = "{{certThumbprint}}" />
        <PowerOfAttorney>
            <Electronic>
                <Storage UseDefault="true"/>
            </Electronic>
        </PowerOfAttorney>
    </Signer>
</Signers>
  • SignerStatus — статус подписанта, может принимать значения:

    • 1 — лицо, имеющее полномочия на подписание документа без доверенности,

    • 2 — лицо, имеющее полномочия на подписание документа на основании доверенности в электронной форме,

    • 3 — лицо, имеющее полномочия на подписание документа на основании доверенности на бумажном носителе.

  • SignatureType — тип подписи, может принимать значения:

    • 1 — усиленная квалифицированная электронная подпись,

    • 2 — простая электронная подпись,

    • 3 — усиленная неквалифицированная электронная подпись.

  • SignerPowersConfirmationMethod — способ подтверждения полномочий представителя на подписание документа. Используется для документов формата приказа №970, счета на оплату и счета-оферты формата приказа №29. Может принимать значения:

    • 1 — в соответствии с данными, содержащимися в электронной подписи,

    • 2 — в соответствии с доверенностью в электронной форме в машиночитаемом виде, если представление доверенности осуществляется посредством включения в каждый пакет электронных документов, подписываемых представителем,

    • 3 — в соответствии с доверенностью в электронной форме в машиночитаемом виде, если представление доверенности осуществляется из информационной системы. При этом необходимая информация для запроса доверенности из информационной системы, указана в электронном документе,

    • 4 — в соответствии с доверенностью в электронной форме в машиночитаемом виде, если представление доверенности осуществляется из информационной системы. При этом необходимая информация для запроса доверенности из информационной системы, представляется способом, отличным от указания в электронном документе,

    • 5 — в соответствии с доверенностью в форме документа на бумажном носителе,

    • 6 — иное.

  • SigningDate — дата подписания документа.

  • Certificate — данные сертификата подписанта. Обязательное поле. Можно передать:

    • CertificateThumbprint — отпечаток сертификата,

    • CertificateBytes — сертификат, сериализованный в массив байтов в DER-кодировке.

  • Position — должность подписанта. Обязательна к заполнению для счета на оплату и счета-оферты.

    • PositionSource — способ заполнения должности сотрудника. Может принимать значения:

      • Employee — заполнение из данных сотрудника в Диадоке,

      • Certificate — заполнение из данных в сертификате,

      • StorageByTitleTypeId — заполнение из данных, сохраненных с помощью метода ExtendedSignerDetails (V2) для указанного сертификата и documentTitleType,

      • Manual — ручное заполнение данных.

  • SignerAdditionalInfo — дополнительные сведения о подписанте.

    • SignerAdditionalInfoSource — способ заполнения дополнительных сведений, может принимать значения:

      • StorageByTitleTypeId — заполнение из данных, сохраненных с помощью метода ExtendedSignerDetails (V2) для указанного сертификата и documentTitleType,

      • Manual — ручное заполнение данных.

  • PowerOfAttorney — сведения о машиночитаемой доверенности. Доверенность может быть электронной или бумажной.

    • Electronic — электронная доверенность. Данные доверенности можно заполнить автоматически (выбрать из хранилища Диадока) или вручную.

      • MethodOfProviding — способ представления доверенности. Может принимать значения:

        • 1 — представление доверенности осуществляется посредством ее включения в пакет электронных документов,

        • 2 — представление доверенности способом, не предусматривающим его включение в пакет электронных документов.

      • Storage — автоматическое заполнение информации по доверенности на основе номера и ИНН:

        • RegistrationNumber — номер доверенности, обязательное поле,

        • IssuerInn — ИНН организации, выдавшей доверенность, обязательное поле,

        • UseDefault — признак того, что нужно автоматически заполнить информацию на основе доверенности, используемой сотрудником по умолчанию. Обязательное поле.

      • Manual — ручное заполнение данных доверенности. Можно указать следующие данные:

        • RegistrationNumber — номер доверенности,

        • RegistrationDate — дата совершения (выдачи) доверенности,

        • InternalNumber — внутренний регистрационный номер доверенности,

        • InternalDate — дата внутренней регистрации доверенности,

        • SystemId — идентифицирующая информация об информационной системе, в которой осуществляется хранение доверенности.

    • Paper — бумажная доверенность. Можно указать следующие данные:

      • Fio — фамилия, имя, отчество (при наличии) лица, подписавшего доверенность,

      • InternalNumber — внутренний регистрационный номер доверенности, обязательное поле,

      • RegistrationDate — дата совершения (выдачи) доверенности, обязательное поле,

      • IssuerInfo — сведения о доверителе.