Заполнение данных подписанта
Большинство формализованных документов должны содержать в себе информацию о подписанте документа.
Указать данные подписанта в документе можно двумя способами:
заполнить их при генерации титула методом GenerateTitleXml: для этого укажите данные подписанта в теле запроса, тогда они сразу будут заполнены в сгенерированном титуле. Этот способ уместен, если генерация и подписание происходят сразу в одном интерфейсе.
добавить их к уже сгенерированному титулу с помощью процедуры подготовки к подписанию методом PrepareDocumentsToSign: для этого не указывайте данные подписанта при генерации, а после для уже сгенерированного титула вызовите метод
PrepareDocumentsToSign
, передав в нем данные подписанта. Этот способ может быть полезен, например, если подготовка документа и его подписание должны происходить в разный момент времени, разными пользователями или через разные интерфейсы.
В обоих случаях Диадок позволяет упростить процедуру заполнения данных подписанта для некоторых формализованных документов (они перечислены в поле ExtendedDocumentTitleType
структуры SignerInfoV2). Чтобы при подписании каждого документа не заполнять все данные подписанта, можно единожды указать их с помощью метода ExtendedSignerDetails (V2). После этого при генерации или подготовке к подписанию нужно будет указывать в качестве данных подписанта только идентификатор ящика и отпечаток сертификата: на основании этой информации Диадок автоматически заполнит все остальные данные подписанта в титуле документа.
Выбор способа заполнения
Тип заполнения данных подписанта определяет, каким образом и какие данные подписанта будут заполнены. Чтобы определить тип заполнения данных подписанта, используйте метод GetDocumentTypes (V2): он вернет информацию в поле SignerType
структуры SignerInfoV2. Инструкция о получении данных для подписанта из метода GetDocumentTypes
приведена в разделе Данные для заполнения блока подписанта. Каждое значение SignerType
предполагает свой формат заполнения данных подписанта:
SignerType = 1
— упрощенный формат,
SignerType = 2
— расширенный формат,
SignerType = 3
— универсальный формат.
Примечание
При этом если метод GetDocumentTypes
вернул ссылку в поле SignerUserDataXsdUrl
, то независимо от значения SignerType
вы можете указывать подписанта в универсальном формате — с помощью бинарных данных.
Заполнение данных в упрощенном и расширенном формате зависит от того, когда вы его заполняете — при генерации или подготовке к подписанию:
при генерации документа заполните соотвествующие блоки подписанта в UserDataXml;
при подготовке к подписанию заполните соответствующие поля структуры PrepareDocumentsToSignRequest.
Заполнение данных в универсальном формате при генерации и подготовке к подписанию происходит по одному и тому же алгоритму с единственной разницей: в случае подготовки к подписанию XML-файл подписанта готовится отдельно, а в случае генерации он уже является частью UserDataXml.
Для расширенного и универсального формата заполнения данных подписанта Диадок предоставляет возможность указать машиночитаемую доверенность (МЧД).
Указание машиночитаемой доверенности
При подписании документа юридического лица сертификатом, выданным на физическое лицо, нужно использовать машиночитаемую доверенность (МЧД).
В зависимости от того, когда вы заполняете данные подписанта, указать данные МЧД нужно в следующих структурах:
при генерации документа заполните заполните блок
PowerOfAttorney
в UserDataXml согласно XSD-схеме.при подготовке к подписанию заполните соответствующие поля структуры PrepareDocumentsToSignRequest.
МЧД можно указать только для расширенного или универсального формата данных подписанта:
Для расширенного формата данных подписанта:
если вы задаете детали подписанта по сертификату с помощью
SignerReference
, то заполните структуруPowerOfAttorney
: укажите регистрационный номер МЧД и ИНН доверителя или используйте МЧД по умолчанию с помощью значенияUseDefault
;если вы задаете детали подписанта в явном виде с помощью
SignerDetails
, то при формировании подписанта по МЧД самостоятельно определите необходимость использования ИНН подписанта и название организации для ЮЛ из МЧД.В этом случае Диадок на основании МЧД автоматически заполнит в блоке подписанта поля, которых нет в сертификате, — например, наименование организации, ИНН ЮЛ.
Для универсального формата данных подписанта заполните в XML-файле блок
PowerOfAttorney
согласно XSD-схеме.
Универсальный формат заполнения данных подписанта
Диадок позволяет передавать данные подписанта в универсальном бинарном формате: это значит, что вы можете передать данные подписанта любого формата в бинарном виде. Формат подписанта при этом будет свой для каждого конкретного типа документа.
Этот способ заполнения данных подписанта является предпочтительным.
Для некоторых типов документов указать данные подписанта можно только в универсальном формате: другие варианты заполнения для них неприменимы. Сейчас это следующие типы:
акт сверки в формате, утвержденном приказом № ЕД-7-26/405@,
акт о приемке выполненных работ КС-2 в формате, утвержденном приказом № ЕД-7-26/691@,
УПД и счет-фактура в формате, утвержденном приказом № ЕД-7-26/970@,
счет на оплату и счет-оферта в формате, утвержденном приказом № ЕД-7-26/29@.
Бинарные данные подписанта должны представлять собой упрощенный XML-файл подписанта. Чтобы его подготовить, используйте XSD-схему:
при генерации используйте UserDataXsd: в него уже включена XSD-схема подписанта,
при подготовке к подписанию используйте XSD-схему упрощенного XML-файла подписанта: инструкция о получении данных для подписанта из метода
GetDocumentTypes
приведена в разделе Данные для заполнения блока подписанта.
По полученной схеме подготовьте упрощенный 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>
<Signers>
<Signer SignatureType="1" SignerPowersConfirmationMethod="3" SigningDate="21.01.2024">
<Certificate CertificateThumbprint="{{certThumbprint}}"/>
<Fio FirstName="Петр" LastName="Петров" MiddleName="Петрович"/>
<Position PositionSource="Manual">Подписант-Должн</Position>
<SignerAdditionalInfo SignerAdditionalInfoSource="Manual">Подписант-ДопСведПодп</SignerAdditionalInfo>
<PowerOfAttorney>
<Electronic>
<Manual RegistrationNumber="{{regNumber}}" RegistrationDate="17.09.2018" InternalNumber="123" InternalDate="18.09.2018" SystemId="СвДоверЭл-ИдСистХран" SystemUrl="СвДоверЭл-УРЛСист"/>
</Electronic>
</PowerOfAttorney>
</Signer>
</Signers>
<?xml version="1.0" encoding="Windows-1251"?>
<Signers BoxId="Signer-BoxId">
<Signer SignerStatus="1" SignatureType="1" SignerPowersConfirmationMethod="1" SigningDate="01.01.2024">
<Fio FirstName="FirstName" LastName="LastName" MiddleName="MiddleName"/>
</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
— сведения о доверителе.