diadoc / diadocsdk-1c-docs

1C documentation - http://1c-docs.diadoc.ru/
https://developer.kontur.ru/Docs/Diadoc/COM/index.html
26 stars 22 forks source link

Проблема при подписи Укд #466

Closed darujo closed 4 years ago

darujo commented 4 years ago

Подписываю УКД вот таким образом: vReplyTask = Document:CreateReplySendTask2("AcceptDocument"). vContentItems = vReplyTask:ContentItems. do vi = 1 to vContentItems:count: vContentItem = vContentItems:GetItem(vi - 1 ):Content. vBuyerTitle = vContentItem:UniversalCorrectionDocumentBuyerTitle. vBuyerTitle:DocumentCreator = "организация инн123456677 Кпп 123444556657". vBuyerTitle:OperationContent = "C изменением стоимости согласен". vBuyerTitle:AcceptanceDate = today. vSigner = vBuyerTitle:Signers:additems(). vSigner:SignerReference:CertificateThumbprint = mDiadocConnection:Certificate:Thumbprint. vSigner:SignerReference:boxid = iOrganizationId. end. vReplyTask:Send(). в одном ящике документ подписывается без проблем, а в другом выдает ошибку image Подскажите что я делаю не так?

GilimkhanovDenis commented 4 years ago

Здравствуйте, можете указать какой документ подписываете? можно или ссылкой из веб-интерфейса или iOrganizationId + DocumentId

darujo commented 4 years ago

IDocument property type VT_BSTR UniversalCorrectionDocument OrganizationId VT_BSTR 8283c62dadea494ba8830b9a0cea5634@diadoc.ru DocumentId VT_BSTR b57a26b2-ca9d-4aaf-8ec6-8371f4654402129b385f-4ed7-4c08-90d8-7f471194ec12 Direction VT_BSTR Inbound

GilimkhanovDenis commented 4 years ago

В логах вижу ошибку

Line: 4, Position: 71, /UniversalCorrectionDocumentBuyerTitle[1]/Signers[1]/SignerReference[1]/@CertificateBytes: The 'CertificateBytes' attribute is invalid - The value '123' is invalid according to its datatype 'http://www.w3.org/2001/XMLSchema:base64Binary' - Invalid length for a Base-64 char array or string.
/UniversalCorrectionDocumentBuyerTitle/Signers/SignerReference: @Inn is required
/UniversalCorrectionDocumentBuyerTitle/Signers/SignerReference: @CertficateBytes: FirstName is required
/UniversalCorrectionDocumentBuyerTitle/Signers/SignerReference: @CertficateBytes: LastName is required
/UniversalCorrectionDocumentBuyerTitle/Signers/SignerReference: @CertficateBytes: Inn  has wrong checksum
/UniversalCorrectionDocumentBuyerTitle/Signers/SignerReference: SignerDetails not found for boxId=8283c62d-adea-494b-a883-0b9a0cea5634, thumbprint=D88BD06E785643D87E9F371E65C2BC7176CCB75A, documentTitleType=3
  1. Если заполняете структуру SignerReference, то должны быть предварительно заполнены параметры подписанта. Заполнить их можно, используя объект SetExtendedSignerDetailsTask. Создаётся методом Organization.CreateSetExtendedSignerDetailsTask(Thumbprint).

  2. В поле CertficateBytes должна base64 строка открытого ключа сертификата

  3. Или же нужно явно задавать параметры подписанта в структуре SignerDetails контента

GilimkhanovDenis commented 4 years ago

И, если не секрет, то на каком языке пишете интеграцию - не могу опознать синтаксис ? Спасибо

darujo commented 4 years ago

1)А подскажите эти данные можно заполнить и в web интерфейсе? 2) почему CertficateBytes для одного сертификата требуется, а другим подписывается без проблем. И в CertficateBytes надо подставить SerialNumber или что-то еще? Пишу на OpenEdge 4gl Progress

GilimkhanovDenis commented 4 years ago
  1. в web интерфейсе данные заполнить можно. Есть инструкция. В разделе "Сотрудники" нажать на ФИО сотрудника и на вкладке "Данные по сертификатам" выбрать сертификат подписания. Либо при подписании соответствующего типа документа данные будут сохранены

  2. Возможно, указывается thumbprint (отпечаток) сертификата и для него уже были заполнены параметры подписанта. Параметры уникальны для сочетания BoxId + Thumbprint + тип документа

darujo commented 4 years ago

Спасибо помогло.