You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何高效从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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 19:39:52