如何在Tally XML请求中提取Voucher->Invoice->StockItem的GUID
Tally XML提取Voucher、Invoice、StockItem层级GUID的解决方案
问题分析
你当前的XML请求已经包含了Voucher层级的GUID和基础的STOCKITEM.GUID,但缺少Invoice(凭证详情)层级的GUID提取规则,且StockItem的GUID路径不够明确(可能无法准确关联到对应Invoice下的库存项)。
修改后的XML请求
调整TDL的FETCH节点,补充Invoice层级的GUID,并明确StockItem的嵌套路径,确保三个层级的GUID都能被正确导出:
<ENVELOPE> <HEADER> <VERSION>1</VERSION> <TALLYREQUEST>EXPORT</TALLYREQUEST> <TYPE>COLLECTION</TYPE> <ID>CUSTOMVOUCHERDATA</ID> </HEADER> <BODY> <DESC> <SVFROMDATE Type="DATE">20240401</SVFROMDATE> <SVTODATE Type="DATE">20240630</SVTODATE> <TDL> <TDLMESSAGE> <COLLECTION ISMODIFY="No" ISFIXED="No" ISINITIALIZE="No" ISOPTION="No" ISINTERNAL="No" NAME="CUSTOMVOUCHERDATA"> <TYPE>VOUCHER</TYPE> <FETCH> VOUCHERNUMBER,DATE,ISCANCELLED,PARTYNAME,PARTYLEDGERNAME,PARTYGSTIN,CONSIGNEEGSTIN, LEDGERENTRIES.LIST,ALLLEDGERENTRIES,AMOUNT,VCHSTATUSDATE,EFFECTIVEDATE,ALTERID, MASTERID,VOUCHERKEY,VOUCHERRETAINKEY,GUID,BASICSHIPDOCUMENTNO,BASICFINALDESTINATION, BASICSHIPVESSELNO,EICHECKPOST,BILLOFLADINGNO,BILLOFLADINGDATE,BILLOFLADINGDATE, BASICSHIPPEDBY,IRN,IRNACKDATE,GSTREGISTRATION,VOUCHERTYPENAME,CMPGSTREGISTRATIONTYPE, CMPGSTSTATE,NUMBERINGSTYLE,VCHSTATUSTAXUNIT,GSTNATUREOFRETURN, INVOICE.GUID, INVOICE.STOCKITEMS.LIST.GUID </FETCH> </COLLECTION> </TDLMESSAGE> </TDL> </DESC> </BODY> </ENVELOPE>
提取各层级GUID的规则
请求返回XML后,可通过以下方式定位对应GUID:
- Voucher层级GUID:直接取Voucher根节点下的
<GUID>字段,XPath示例://VOUCHER/GUID - Invoice层级GUID:取Voucher节点下嵌套的
<INVOICE>节点内的<GUID>字段,XPath示例://VOUCHER/INVOICE/GUID - StockItem层级GUID:取Invoice节点下
STOCKITEMS集合中每个LIST子节点的<GUID>字段,XPath示例://VOUCHER/INVOICE/STOCKITEMS/LIST/GUID
说明
Tally的XML结构中,Invoice是Voucher的关联对象,StockItem则属于Invoice下的库存条目集合,所以必须通过完整的嵌套路径INVOICE.STOCKITEMS.LIST.GUID才能准确获取每个库存项目对应的GUID,避免出现关联错误。
内容的提问来源于stack exchange,提问作者bjss kiriti
相关产品推荐
相关产品推荐

