如何在Tally XML导出响应中限制嵌套字段
Tally XML导出:仅获取子列表指定字段的解决办法
当前你的XML请求能正常过滤凭证的直接字段,但在获取ALLLEDGERENTRIES.LIST和INVENTORYALLOCATIONS.LIST下的字段时,会返回列表内的所有字段,而非仅LedgerName和StockItemName。要解决这个问题,不能直接在主集合的NATIVEMETHOD里嵌套调用子字段,而是需要在TDL中定义专属的子集合来明确指定返回字段。
修改后的完整XML请求
<ENVELOPE> <HEADER> <VERSION>1</VERSION> <TALLYREQUEST>Export</TALLYREQUEST> <TYPE>Collection</TYPE> <ID>Vouchers</ID> </HEADER> <BODY> <DESC> <STATICVARIABLES> <SVEXPORTFORMAT>$$SysName:XML</SVEXPORTFORMAT> <SVCURRENTCOMPANY>CompanyName</SVCURRENTCOMPANY> <SVFROMDATE TYPE="Date">01-01-2023</SVFROMDATE> <SVTODATE TYPE="Date">01-01-2023</SVTODATE> </STATICVARIABLES> <TDL> <TDLMESSAGE> <!-- 定义库存分配子集合,仅返回StockItemName --> <COLLECTION ISMODIFY="No" ISFIXED="No" ISINITIALIZE="No" ISOPTION="No" ISINTERNAL="No" NAME="InvAllocColl"> <TYPE>InventoryAllocations : Voucher</TYPE> <NATIVEMETHOD>STOCKITEMNAME</NATIVEMETHOD> </COLLECTION> <!-- 定义分录子集合,仅返回LedgerName和关联的库存分配子集合 --> <COLLECTION ISMODIFY="No" ISFIXED="No" ISINITIALIZE="No" ISOPTION="No" ISINTERNAL="No" NAME="LedgerEntriesColl"> <TYPE>LedgerEntries : Voucher</TYPE> <NATIVEMETHOD>LEDGERNAME</NATIVEMETHOD> <CHILDCOLLECTION>InvAllocColl</CHILDCOLLECTION> </COLLECTION> <!-- 主凭证集合,关联分录子集合 --> <COLLECTION ISMODIFY="No" ISFIXED="No" ISINITIALIZE="No" ISOPTION="No" ISINTERNAL="No" NAME="Vouchers"> <TYPE> Vouchers : VoucherType</TYPE> <CHILDOF>$$VchTypeSales</CHILDOF> <BELONGSTO>Yes</BELONGSTO> <NATIVEMETHOD>DATE</NATIVEMETHOD> <NATIVEMETHOD>VOUCHERTYPENAME</NATIVEMETHOD> <NATIVEMETHOD>ENTEREDBY</NATIVEMETHOD> <NATIVEMETHOD>PARTYLEDGERNAME</NATIVEMETHOD> <NATIVEMETHOD>VOUCHERNUMBER</NATIVEMETHOD> <CHILDCOLLECTION>LedgerEntriesColl</CHILDCOLLECTION> </COLLECTION> </TDLMESSAGE> </TDL> </DESC> </BODY> </ENVELOPE>
核心修改说明
- 新增
InvAllocColl子集合:专门对应InventoryAllocations类型,只配置STOCKITEMNAME作为返回字段,确保库存分配列表仅返回所需内容。 - 新增
LedgerEntriesColl子集合:对应LedgerEntries类型,指定返回LEDGERNAME,同时通过CHILDCOLLECTION关联上面的库存分配子集合,保持数据层级关系。 - 主集合调整:用
CHILDCOLLECTION关联LedgerEntriesColl,替代原来直接嵌套的NATIVEMETHOD调用,让Tally按照定义的子集合结构返回数据。
这样调整后,响应XML只会包含你指定的字段,不会返回子列表中的其他冗余数据。
内容的提问来源于stack exchange,提问作者Ammar Haider
相关产品推荐
相关产品推荐

