Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Формирование УПД utd970_05_03_01. Как правильно передать подписанта ? #1190

Open
sg800 opened this issue Feb 19, 2025 · 6 comments

Comments

@sg800
Copy link

sg800 commented Feb 19, 2025

Добрый день !
Подскажите по следующей проблеме.
XML документ не формируется
[C# 2.32.0] DiadocApi.dll
Переход на версию 5.03 (970 формат)
Для 970 приказа пытаемся сделать так

var content = new Diadoc.Api.DataXml.ON_NSCHFDOPPR_UserContract_970_05_03_01.UniversalTransferDocument();
.....
// подписант
var Signer = new Diadoc.Api.DataXml.ON_NSCHFDOPPR_UserContract_970_05_03_01.Signer();

Signers.BoxId = org.Boxes.FirstOrDefault().BoxId;

Signer.Certificate = new Diadoc.Api.DataXml.ON_NSCHFDOPPR_UserContract_970_05_03_01.Certificate
{
CertificateBytes = GetCertContent()
};
Signer.SignerPowersConfirmationMethodSpecified = true;
content.Signers = Signers;

при вызове api.GenerateTitleXml(

// Возникает Ошибка при формировании XML документа

//Line: 39, Position: 12, /UniversalTransferDocument[1]/Signers[1]/@Boxid: The 'BoxId' attribute is invalid
//The value 'xxxxxxxxxxxxxxxxxxx@diadoc.ru' is invalid according to its datatype 'guid'

//А если не задавать Signers.BoxId => AdditionalMessage=Invalid data UserContractData:

Для 820 приказа УПД был реализован так
Все работает

var content = new UniversalTransferDocument();
...
// подписант
var Signer = new SignerReference();
Signer.BoxId = org.Boxes.FirstOrDefault().BoxId;
Signer.CertificateBytes = GetCertContent();
var Signers = new[] { Signer };
content.UseSignerReferences(Signers);

api.GenerateTitleXml(

@danilkrotov
Copy link

По плохому: -> xxxxxxxxxxxxxxxxxxx <- @diadoc.ru это и есть guid. Прокатит просто String.Replace("@diadoc.ru","")
По хорошему: DiadocApi.GetOrganizationByFnsParticipantId возвращает Organization , где в Boxes[0].BoxIdGuid содержится то значение которое нужно передать

@sg800
Copy link
Author

sg800 commented Feb 21, 2025

По плохому: -> xxxxxxxxxxxxxxxxxxx <- @diadoc.ru это и есть guid
Прокатит просто String.Replace("@diadoc.ru","")
Так уже пробовал.
Увы это не guid

@sg800
Copy link
Author

sg800 commented Feb 21, 2025

Второй вариант

Signers.BoxId = org.Boxes.FirstOrDefault().BoxIdGuid;

Теперь возникает ошибка
AdditionalMessage=Invalid data UserContractData:

Что еще надо дозаполнять ?

@alexxxwam
Copy link

Обычно при валидации схемы возвращается хоть какая то ошибка , даже если ошибка в пользовательском контракте..
Приведите для начала сериализованную версию UserContractData

@sg800
Copy link
Author

sg800 commented Feb 26, 2025

...AdditionalMessage=Invalid data UserContractData:
/UniversalTransferDocument/DocumentShipments/DocumentShipment: When Function=СЧФДОП: @documentname=УПД should be equal Счет-фактура и документ об отгрузке товаров (выполнении работ), передаче имущественных прав (документ об оказании услуг), StatusCode=BadRequest, DiadocErrorCode: Http.BadRequest

Получилось сформировать XML документ после замены
<DocumentShipment DocumentName="УПД"
на
<DocumentShipment DocumentName="Счет-фактура и документ об отгрузке товаров (выполнении работ), передаче имущественных прав (документ об оказании услуг)"

@sg800
Copy link
Author

sg800 commented Feb 26, 2025

Еще вопрос

public enum OrganizationType_DatabaseOrder { [XmlEnum("1")] Item1 = 0, [XmlEnum("2")] Item2 = 1, [XmlEnum("3")] Item3 = 2, [XmlEnum("4")] Item4 = 3, }

Что чему соответствует ?

OrganizationType_DatabaseOrder.Item2 это вроде ЮЛ

А ИЧП ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants