如何高效从Tally获取指定分类账的交易记录?
高效提取Tally特定分类账交易记录的解决办法
问题说明
要从Tally里获取名为2222-158831-2222的分类账借贷交易记录,当前使用的XML请求会返回大量无关冗余字段(比如各类税务、系统状态的No/Yes标记),导致数据获取耗时长达2分钟,效率极低。
当前使用的XML请求代码:
<HEADER> <TALLYREQUEST>Export Data</TALLYREQUEST> </HEADER> <BODY> <EXPORTDATA> <REQUESTDESC> <REPORTNAME>Voucher Register</REPORTNAME> <STATICVARIABLES> <SVCURRENTCOMPANY>XXX</SVCURRENTCOMPANY> <SVEXPORTFORMAT>$$SysName:XML</SVEXPORTFORMAT> </STATICVARIABLES> <FETCHLIST> <FETCH>AMOUNT</FETCH> </FETCHLIST> <FILTERS> <FILTER> <NAME>LedgerName</NAME> <VALUE>2222-158831-2222</VALUE> </FILTER> </FILTERS> </REQUESTDESC> </EXPORTDATA> </BODY> </ENVELOPE>
冗余数据示例:
<ALLOWCONSUMPTION>No</ALLOWCONSUMPTION> <USEFORINTEREST>No</USEFORINTEREST> <USEFORGAINLOSS>No</USEFORGAINLOSS> <USEFORGODOWNTRANSFER>No</USEFORGODOWNTRANSFER> <!-- 更多此类冗余字段省略 -->
优化方案
1. 精准指定需要的字段,扩展FETCHLIST
当前仅指定了AMOUNT字段,但交易记录通常还需要凭证日期、类型、借贷方向等核心信息。将所有需要的字段明确列出,Tally会仅返回这些字段,直接砍掉冗余数据。
优化后的XML示例:
<HEADER> <TALLYREQUEST>Export Data</TALLYREQUEST> </HEADER> <BODY> <EXPORTDATA> <REQUESTDESC> <REPORTNAME>Voucher Register</REPORTNAME> <STATICVARIABLES> <SVCURRENTCOMPANY>XXX</SVCURRENTCOMPANY> <SVEXPORTFORMAT>$$SysName:XML</SVEXPORTFORMAT> <!-- 可选:添加日期范围过滤,进一步缩小数据范围 --> <SVFROMDATE>2023-04-01</SVFROMDATE> <SVTODATE>2024-03-31</SVTODATE> </STATICVARIABLES> <FETCHLIST> <FETCH>VoucherDate</FETCH> <FETCH>VoucherType</FETCH> <FETCH>Debit</FETCH> <FETCH>Credit</FETCH> <FETCH>VoucherNumber</FETCH> <FETCH>Narration</FETCH> </FETCHLIST> <FILTERS> <FILTER> <NAME>LedgerName</NAME> <VALUE>2222-158831-2222</VALUE> </FILTER> </FILTERS> </REQUESTDESC> </EXPORTDATA> </BODY> </ENVELOPE>
2. 换用Ledger Vouchers报表替代Voucher Register
Voucher Register是通用凭证报表,默认携带大量全局属性;而Ledger Vouchers是专门针对分类账的报表,返回的数据更聚焦于目标分类账的交易记录,冗余字段大幅减少。
替换后的请求示例:
<HEADER> <TALLYREQUEST>Export Data</TALLYREQUEST> </HEADER> <BODY> <EXPORTDATA> <REQUESTDESC> <REPORTNAME>Ledger Vouchers</REPORTNAME> <STATICVARIABLES> <SVCURRENTCOMPANY>XXX</SVCURRENTCOMPANY> <SVEXPORTFORMAT>$$SysName:XML</SVEXPORTFORMAT> <SVLEDGERNAME>2222-158831-2222</SVLEDGERNAME> <!-- 可选:日期过滤 --> <SVFROMDATE>2023-04-01</SVFROMDATE> <SVTODATE>2024-03-31</SVTODATE> </STATICVARIABLES> <FETCHLIST> <FETCH>VoucherDate</FETCH> <FETCH>VoucherType</FETCH> <FETCH>Debit</FETCH> <FETCH>Credit</FETCH> <FETCH>VoucherNumber</FETCH> </FETCHLIST> </REQUESTDESC> </EXPORTDATA> </BODY> </ENVELOPE>
3. 开启Tally的XML压缩传输
在Tally配置中开启XML压缩(路径一般为网关 of Tally > F12: 配置 > 高级配置),减少网络传输的数据量,显著提升获取速度。
4. 分时段批量获取
如果目标分类账的交易记录数量极大,可以按季度或月份拆分请求,分多次获取数据,避免单次请求处理过大的数据量导致超时或缓慢。
内容的提问来源于stack exchange,提问作者Manoj Paramesh
相关产品推荐
相关产品推荐

