【发布时间】:2015-11-18 21:52:29
【问题描述】:
我正在创建一个工具,它将我们的生产数据库与 QuickBooks (QB) 同步。我正在尝试使用 ItemQuery 获取 QB 中所有项目的列表,并且我还想获取每个项目的描述。但是,似乎不同类型的项目有不同的方式来指定描述。使用 IncludeRetElement,我可以获得 ItemInventoryRet 的 SalesDesc,但我正在努力获取 ItemServiceRet 的描述(以及其他一些,但我想如果我能弄清楚这一点,我将能够弄清楚其他的) .
这是我的请求……
<?qbxml version="12.0"?>
<QBXML>
<QBXMLMsgsRq onError="stopOnError">
<ItemQueryRq requestID="2">
<IncludeRetElement>ListID</IncludeRetElement>
<IncludeRetElement>Name</IncludeRetElement>
<IncludeRetElement>FullName</IncludeRetElement>
<IncludeRetElement>ParentRef</IncludeRetElement>
<IncludeRetElement>SalesAndPurchase_SalesDesc</IncludeRetElement>
<IncludeRetElement>SalesOrPurchase_Desc</IncludeRetElement>
<IncludeRetElement>ItemDesc</IncludeRetElement>
<IncludeRetElement>SalesDesc</IncludeRetElement>
</ItemQueryRq>
</QBXMLMsgsRq>
</QBXML>
这是我得到的回复(为清楚起见,缩短了)...
<QBXML>
<QBXMLMsgsRs>
<ItemQueryRs requestID="2" statusCode="0" statusSeverity="Info" statusMessage="Status OK">
<ItemServiceRet>
<ListID>240000-1071531214</ListID>
<Name>Delivery</Name>
<FullName>Delivery</FullName>
</ItemServiceRet>
<ItemInventoryRet>
<ListID>270000-1071524193</ListID>
<Name>1/2" Line</Name>
<FullName>Irrigation Hose:1/2" Line</FullName>
<SalesDesc>1/2" Vinyl Irrigation Line</SalesDesc>
</ItemInventoryRet>
<ItemGroupRet>
<ListID>1E0000-934380927</ListID>
<Name>Walkway</Name>
<ItemDesc>Walkway lighting</ItemDesc>
</ItemGroupRet>
</ItemQueryRs>
</QBXMLMsgsRs>
</QBXML>
根据documentation(从下拉列表中选择 ItemQuery),我想我想要的描述是 ItemServiceRet > ORSalePurchase > SaleOrPurchase > Desc。该请求包括我尝试过的一种方式,但我也尝试了很多其他方式......
<IncludeRetElement>ORSalesPurchase:SalesOrPurchase:Desc</IncludeRetElement><IncludeRetElement>ORSalesPurchase.SalesOrPurchase.Desc</IncludeRetElement><IncludeRetElement>ORSalesPurchase_SalesOrPurchase_Desc</IncludeRetElement><IncludeRetElement>SalesOrPurchase:Desc</IncludeRetElement><IncludeRetElement>SalesOrPurchase.Desc</IncludeRetElement><IncludeRetElement>SalesOrPurchase_Desc</IncludeRetElement><IncludeRetElement>Desc</IncludeRetElement>
所以问题是,如何在 qbXML 查询中检索子元素?
我发现如果我删除所有 IncludeRetElements,我确实得到了值。但我想学习如何只获取我关心的数据。我们有一个巨大的 QB 数据库,所以如果我必须获取所有内容,这可能是一个主要的性能问题。
作为说明,我转而使用 QBFC10Lib 而不是自己创建 XML,希望它能帮助我解决这个问题,但它没有。我仍然有完全相同的问题。我猜一个答案将解决 qbXML 和 QBFC。
【问题讨论】: