diadoc / diadocsdk-csharp

Official Diadoc SDK for C#
MIT License
34 stars 64 forks source link

Как получить табличную часть документа? #1123

Closed KNS93 closed 4 months ago

KNS93 commented 4 months ago

Добрый день, нужна помощь. Получаю список входящих документов методом GetDocuments Dim Documentlist = DiadocApi.GetDocuments(Dtoken, New DocumentsFilter With { .BoxId = ModuleDiadoc.DefaultBoxId, .FilterCategory = Filter, .CounteragentBoxId = tbl.Rows(i)("BoxIdGuid").ToString, .AfterIndexKey = afterIndexKey, .FromDocumentDate = date_s, .ToDocumentDate = date_e})

Как мне теперь получить табличную часть какого либо документа(номенклатуру, количество, цену). Я так понимаю нужно парсить xml, как его получить? Нужно ли использовать метод ParseTitleXml? Какие параметры нужно передавать titleIndex,Content...

KNS93 commented 4 months ago

Разобралась, метод GetDocument content.data или GetEntityContent если содержимое документа больше 1048576 байт Dim crypt = New WinApiCrypt() Dim DiadocApi = New DiadocApi( ModuleDiadoc.DefaultClientId, ModuleDiadoc.DefaultApiUrl, crypt)

        Dim doc = DiadocApi.GetDocument(Dtoken, ModuleDiadoc.DefaultBoxId, Mesid, Enid)

        Dim doc2 = DiadocApi.GetEntityContent(Dtoken, ModuleDiadoc.DefaultBoxId, Mesid, Enid)

        Dim response = DiadocApi.ParseTitleXml(Dtoken, ModuleDiadoc.DefaultBoxId, doc.TypeNamedId, doc.Function, doc.Version, 0, doc2) ' (0 - титул отправителя, 1 - титул получателя)

        Dim titleBytes As Byte() = response

        Dim xmlDoc As New XmlDocument()
        Using ms As New MemoryStream(titleBytes)
            xmlDoc.Load(ms)
        End Using