在 qbXML ItemQuery 请求中,如何获取服务项目的描述?
In the qbXML ItemQuery request , how do I get the description for a service item?
我正在创建一个工具,将我们的生产数据库与 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.
我明白了。您必须分别添加每个级别,就像这样...
<?qbxml version="12.0"?>
<QBXML>
<QBXMLMsgsRq onError="stopOnError">
<ItemQueryRq requestID="2">
<IncludeRetElement>ListID</IncludeRetElement>
<IncludeRetElement>Name</IncludeRetElement>
<IncludeRetElement>FullName</IncludeRetElement>
<IncludeRetElement>ItemDesc</IncludeRetElement>
<IncludeRetElement>SalesDesc</IncludeRetElement>
<IncludeRetElement>ORSalesPurchase</IncludeRetElement>
<IncludeRetElement>SalesOrPurchase</IncludeRetElement>
<IncludeRetElement>SalesAndPurchase</IncludeRetElement>
<IncludeRetElement>Desc</IncludeRetElement>
</ItemQueryRq>
</QBXMLMsgsRq>
</QBXML>
我之前试过这个,但我想我错过了一个关卡。无论如何,希望这个答案能帮助其他人避免浪费他们一半的时间:)。
我正在创建一个工具,将我们的生产数据库与 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.
我明白了。您必须分别添加每个级别,就像这样...
<?qbxml version="12.0"?>
<QBXML>
<QBXMLMsgsRq onError="stopOnError">
<ItemQueryRq requestID="2">
<IncludeRetElement>ListID</IncludeRetElement>
<IncludeRetElement>Name</IncludeRetElement>
<IncludeRetElement>FullName</IncludeRetElement>
<IncludeRetElement>ItemDesc</IncludeRetElement>
<IncludeRetElement>SalesDesc</IncludeRetElement>
<IncludeRetElement>ORSalesPurchase</IncludeRetElement>
<IncludeRetElement>SalesOrPurchase</IncludeRetElement>
<IncludeRetElement>SalesAndPurchase</IncludeRetElement>
<IncludeRetElement>Desc</IncludeRetElement>
</ItemQueryRq>
</QBXMLMsgsRq>
</QBXML>
我之前试过这个,但我想我错过了一个关卡。无论如何,希望这个答案能帮助其他人避免浪费他们一半的时间:)。