通过Tally XML无法获取凭证交易明细,如何解决?
解决Tally XML请求无法获取凭证明细(金额/数量/折扣)的问题
你的问题出在XML请求仅获取了凭证头部的基础信息,而金额、数量、折扣等交易明细存储在凭证的分录(Voucher Entries)层级,需要在TDL中明确指定要提取这部分数据。
调整后的XML请求体
<ENVELOPE Action=""> <HEADER> <VERSION>1</VERSION> <TALLYREQUEST>EXPORT</TALLYREQUEST> <TYPE>COLLECTION</TYPE> <ID>CustomVoucherCollection</ID> </HEADER> <BODY> <DESC> <STATICVARIABLES> <SVCURRENTCOMPANY>{{currentCompany}}</SVCURRENTCOMPANY> <SVFROMDATE TYPE="Date">1-1-2024</SVFROMDATE> <SVTODATE TYPE="Date">1-4-2024</SVTODATE> </STATICVARIABLES> <TDL> <TDLMESSAGE> <!-- 定义凭证集合,指定要获取的头部字段和分录集合 --> <COLLECTION ISMODIFY="No" ISFIXED="No" ISINITIALIZE="No" ISOPTION="No" ISINTERNAL="No" NAME="CustomVoucherCollection"> <TYPE>Vouchers</TYPE> <!-- 过滤仅获取付款凭证(可选,按需保留) --> <FILTER>VoucherType.Name = "Payment"</FILTER> <!-- 指定凭证头部需要的字段 --> <FETCH>VoucherNumber, VoucherType, Date, PartyName, GSTIN, VoucherEntries</FETCH> </COLLECTION> <!-- 定义凭证明细分录的子集合,指定交易字段 --> <COLLECTION ISMODIFY="No" ISFIXED="No" ISINITIALIZE="No" ISOPTION="No" ISINTERNAL="No" NAME="VoucherEntries"> <TYPE>Voucher Entry</TYPE> <!-- 指定分录层级的交易明细字段 --> <FETCH>LedgerName, Amount, Quantity, DiscountPercentage, DiscountAmount, Narration</FETCH> </COLLECTION> </TDLMESSAGE> </TDL> </DESC> </BODY> </ENVELOPE>
关键调整说明
明确指定字段而非模糊匹配:
替换原有的<NATIVEMETHOD>*,*.*</NATIVEMETHOD>为具体的<FETCH>字段,避免Tally仅返回默认的基础字段。添加分录子集合:
新增VoucherEntries集合,专门提取凭证分录层级的数据——金额、数量、折扣等核心交易信息都存储在这里。可选:过滤付款凭证:
通过<FILTER>VoucherType.Name = "Payment"</FILTER>限定仅返回付款凭证,减少不必要的数据返回,提升请求效率。按需扩展字段:
若需要更多字段(如税率、税金额),可在<FETCH>中添加对应的字段名(如TaxRate,TaxAmount),Tally会返回对应的数据。
内容的提问来源于stack exchange,提问作者canaryGrapher
相关产品推荐
相关产品推荐

