Заполнение данных подписанта
Большинство формализованных документов должны содержать в себе информацию о подписанте документа.
Указать данные подписанта в документе можно двумя способами:
заполнить их при генерации титула методом GenerateTitleXml: для этого укажите данные подписанта в теле запроса, тогда они сразу будут заполнены в сгенерированном титуле. Этот способ уместен, если генерация и подписание происходят сразу в одном интерфейсе.
добавить их к уже сгенерированному титулу с помощью процедуры подготовки к подписанию методом PrepareDocumentsToSign: для этого не указывайте данные подписанта при генерации, а после для уже сгенерированного титула вызовите метод
PrepareDocumentsToSign, передав в нем данные подписанта. Этот способ может быть полезен, например, если подготовка документа и его подписание должны происходить в разный момент времени, разными пользователями или через разные интерфейсы.
В обоих случаях Диадок позволяет упростить процедуру заполнения данных подписанта для некоторых формализованных документов (они перечислены в поле ExtendedDocumentTitleType структуры SignerInfoV2). Чтобы при подписании каждого документа не заполнять все данные подписанта, можно единожды указать их с помощью метода ExtendedSignerDetails (POST) (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 (POST) (V2) для указанного сертификата иdocumentTitleType,Manual— ручное заполнение данных.
SignerAdditionalInfo— дополнительные сведения о подписанте.SignerAdditionalInfoSource— способ заполнения дополнительных сведений, может принимать значения:StorageByTitleTypeId— заполнение из данных, сохраненных с помощью метода ExtendedSignerDetails (POST) (V2) для указанного сертификата иdocumentTitleType,Manual— ручное заполнение данных.
PowerOfAttorney— сведения о машиночитаемой доверенности. Доверенность может быть электронной или бумажной.Electronic— электронная доверенность. Данные доверенности можно заполнить автоматически (выбрать из хранилища Диадока) или вручную.MethodOfProviding— способ представления доверенности. Может принимать значения:1— представление доверенности осуществляется посредством ее включения в пакет электронных документов,2— представление доверенности способом, не предусматривающим его включение в пакет электронных документов.
Storage— автоматическое заполнение информации по доверенности на основе трех обязательных реквизитов: номера доверенности, ИНН доверителя и ИНН представителя:RegistrationNumber— номер доверенности, обязательное поле,IssuerInn— ИНН организации, выдавшей доверенность, обязательное поле,RepresentativeInn— ИНН представителя,UseDefault— признак того, что нужно автоматически заполнить информацию на основе доверенности, используемой сотрудником по умолчанию. Обязательное поле.
Manual— ручное заполнение данных доверенности. Можно указать следующие данные:RegistrationNumber— номер доверенности,RegistrationDate— дата совершения (выдачи) доверенности,InternalNumber— внутренний регистрационный номер доверенности,InternalDate— дата внутренней регистрации доверенности,SystemId— идентифицирующая информация об информационной системе, в которой осуществляется хранение доверенности.
Paper— бумажная доверенность. Можно указать следующие данные:Fio— фамилия, имя, отчество (при наличии) лица, подписавшего доверенность,InternalNumber— внутренний регистрационный номер доверенности, обязательное поле,RegistrationDate— дата совершения (выдачи) доверенности, обязательное поле,IssuerInfo— сведения о доверителе.