Tally XML API技术问询:合并凭证/库存项/客户数据并按AlterID筛选
Tally XML API:单次获取凭证、库存项、客户三类合并数据并按凭证AlterID筛选
需求说明
需要通过Tally XML API单次导出Voucher(凭证)、StockItem(库存项)、**Customer(客户,对应LEDGER类型)**三类数据,合并到单个响应结果中;同时仅筛选出符合指定AlterID条件的凭证,以及对应关联的库存项、客户数据。
修改后的请求XML
<ENVELOPE> <HEADER> <VERSION>1</VERSION> <TALLYREQUEST>EXPORT</TALLYREQUEST> <TYPE>COLLECTION</TYPE> <ID>CUSTOMCOLLECTION</ID> </HEADER> <BODY> <DESC> <STATICVARIABLES> <SVEXPORTFORMAT>$$SysName:XML</SVEXPORTFORMAT> </STATICVARIABLES> <TDL> <TDLMESSAGE> <!-- 主集合:包含三类数据的子集合 --> <COLLECTION ISMODIFY="No" ISFIXED="No" ISINITIALIZE="No" ISOPTION="No" ISINTERNAL="No" NAME="CUSTOMCOLLECTION"> <CHILD>CUSTOMVOUCHERDATA</CHILD> <CHILD>CUSTOMSTOCKITEMCOL</CHILD> <CHILD>CUSTOMLEDGERDATA</CHILD> </COLLECTION> <!-- 凭证数据集合 --> <COLLECTION ISMODIFY="No" ISFIXED="No" ISINITIALIZE="No" ISOPTION="No" ISINTERNAL="No" NAME="CUSTOMVOUCHERDATA"> <TYPE>VOUCHER</TYPE> <FETCH>VOUCHERNUMBER,DATE,ISCANCELLED,PARTYNAME,PARTYLEDGERNAME,PARTYGSTIN,CONSIGNEEGSTIN,ALLLEDGERENTRIES.LIST.LEDGERNAME,AMOUNT,VCHSTATUSDATE,EFFECTIVEDATE,ALTERID,MASTERID,VOUCHERKEY,VOUCHERRETAINKEY,GUID,BASICSHIPDOCUMENTNO,BASICFINALDESTINATION,BASICSHIPVESSELNO,EICHECKPOST,BILLOFLADINGNO,BILLOFLADINGDATE,BASICSHIPPEDBY,IRN,IRNACKDATE,GSTREGISTRATION,VOUCHERTYPENAME,CMPGSTREGISTRATIONTYPE,CMPGSTSTATE,NUMBERINGSTYLE,VCHSTATUSTAXUNIT,GSTNATUREOFRETURN</FETCH> <FILTER>VoucherFilter</FILTER> </COLLECTION> <SYSTEM TYPE="Formulae" NAME="VoucherFilter">$MASTERID > 829 AND $ALTERID > 1343</SYSTEM> <!-- 库存项数据集合 --> <COLLECTION ISMODIFY="No" ISFIXED="No" ISINITIALIZE="No" ISOPTION="No" ISINTERNAL="No" NAME="CUSTOMSTOCKITEMCOL"> <TYPE>STOCKITEM</TYPE> <FETCH>NAME,GUID,GSTAPPLICABLE,GSTDETAILS.LIST,ALTERID,MRPDETAILS.LIST,BASEUNITS,ISDELETED,OPENINGBALANCE,OPENINGRATE</FETCH> <FILTER>StockItemFilter</FILTER> </COLLECTION> <SYSTEM TYPE="Formulae" NAME="StockItemFilter">$ALTERID > 1094</SYSTEM> <!-- 客户数据集合(LEDGER类型,筛选客户组) --> <COLLECTION ISMODIFY="No" ISFIXED="No" ISINITIALIZE="No" ISOPTION="No" ISINTERNAL="No" NAME="CUSTOMLEDGERDATA"> <TYPE>LEDGER</TYPE> <FETCH>NAME,PARENT,GUID,PARTYGSTIN,BILLCREDITPERIOD,LEDGERMOBILE,LEDGERCOUNTRYISCODE,ISDELETED,ALTERID,EMAIL,PRIORSTATENAME</FETCH> <FILTER>CustomerFilter</FILTER> </COLLECTION> <SYSTEM TYPE="Formulae" NAME="CustomerFilter">$PARENT = "Sundry Debtors" AND $ALTERID > 32</SYSTEM> </TDLMESSAGE> </TDL> </DESC> </BODY> </ENVELOPE>
关键修改说明
- 合并TDL块:将原有的三个独立
块合并为一个,避免同名筛选器的定义冲突。 - 主集合嵌套子集合:创建主集合
CUSTOMCOLLECTION,通过<CHILD>标签包含三类数据的子集合,确保单次请求返回所有三类数据。 - 独立筛选器定义:为每类数据设置专属筛选器,避免逻辑冲突:
- 凭证筛选保留原有的
$MASTERID > 829 AND $ALTERID > 1343条件 - 客户筛选新增
$PARENT = "Sundry Debtors"(需根据实际账套的客户组名称调整),确保仅导出客户类 ledger 数据 - 库存项筛选保留原有的
$ALTERID > 1094条件
- 凭证筛选保留原有的
- 统一集合属性:确保所有集合的
ISINTERNAL="No",保证数据能被正确导出到响应中。
内容的提问来源于stack exchange,提问作者bjss kiriti
相关产品推荐
相关产品推荐

