首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用c#开发工具包,如何访问发票上的行ItemID

使用c#开发工具包,如何访问发票上的行ItemID
EN

Stack Overflow用户
提问于 2013-01-08 05:59:01
回答 1查看 333关注 0票数 0

使用c#开发工具包,我如何访问发票上的行ItemID?

我的响应xml有一个部分,看起来像这样:

代码语言:javascript
运行
复制
<Line>
    <Desc>TestItem</Desc>
    <Amount>66.00</Amount>
    <Taxable>false</Taxable>
    <ItemId idDomain="QBO">3</ItemId>
    <UnitPrice>33</UnitPrice>
    <Qty>2</Qty>
    <ServiceDate>2013-01-07-08:00</ServiceDate>
</Line>

并且可以像这样使用devkit从其中提取数据:

代码语言:javascript
运行
复制
List<Intuit.Ipp.Data.Qbo.Invoice> customerInvoicesWithinDateRange = invoice.ExecuteQuery<Intuit.Ipp.Data.Qbo.Invoice>(context).ToList<Intuit.Ipp.Data.Qbo.Invoice>();
foreach (var invoiceFound in customerInvoicesWithinDateRange)
{
    foreach (var line in invoiceFound.Line)
    {
       things += line.Desc + " <br> ";
       things += line.Taxable.ToString() + " <br> ";
       things += line.ServiceDate.ToShortDateString() + " <br> ";
       things += line.Amount.ToString() + "<br>";
    }
}

但是对象中没有line.ItemId、line.Qty和line.UnitPrice。

我知道当我将line.Items对象设置为ItemsChoiceType2对象时,但是当我尝试访问line.Items对象时,我得到了"NullReferenceException: object reference not set to an object instance“。

我错过了什么步骤才能得到那个难以捉摸的"3"?

谢谢

编辑:@Peter when I do:

代码语言:javascript
运行
复制
List<Intuit.Ipp.Data.Qbo.Invoice> customerInvoicesWithinDateRange = invoice.ExecuteQuery<Intuit.Ipp.Data.Qbo.Invoice>(context).ToList<Intuit.Ipp.Data.Qbo.Invoice>();
var quantity = customerInvoicesWithinDateRange[0].Line[0].Items[Array.IndexOf(customerInvoicesWithinDateRange[0].Line[0].ItemsElementName, Intuit.Ipp.Data.Qbo.ItemsChoiceType2.Qty)];

我得到"System.ArgumentNullException:值不能为空“。在第二条线上。我认为customerInvoicesWithinDateRange.Line.ItemsElementName是空的。它在我的foreach循环中也是空的。

编辑编辑:

嗯,我实际上在查询中有一张发票,我猜它没有任何行。将其封装在以下代码中解决了最后一个障碍:

代码语言:javascript
运行
复制
if (customerInvoicesWithinDateRange[0].Line[0].Items != null)

再次感谢您的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-08 06:31:50

Items中的对象在ItemsChoiceType2的ItemsElementName数组中定义。

因此,在不进行任何错误检查的情况下,可以从以下行获取数量:

代码语言:javascript
运行
复制
var quantity = invoices[0].Line[0].Items[Array.IndexOf(invoices[0].Line[0].ItemsElementName, Intuit.Ipp.Data.Qbo.ItemsChoiceType2.Qty)];
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14204783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档