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

如何将TDL代码及TCP文件内容嵌入Tally XML请求?无需依赖用户安装TCP

好的,我来帮你解决这两个关于Tally XML和TDL/TCP的问题:

1. 如何将TDL代码添加到Tally XML请求中?

Tally的XML接口支持直接在请求中临时嵌入TDL代码,不需要提前在用户端安装配置。具体做法是用<TDL>标签包裹你的TDL代码,放到XML请求的<BODY>区块内,和<DATA>标签同级即可。

举个完整的示例,这个XML请求会临时加载自定义TDL,导出账本名称和期末余额:

<ENVELOPE>
    <HEADER>
        <VERSION>1</VERSION>
        <TALLYREQUEST>EXPORT</TALLYREQUEST>
        <TYPE>DATA</TYPE>
        <ID>CustomLedgerExport</ID>
    </HEADER>
    <BODY>
        <DATA>
            <DESC>
                <STATICVARIABLES>
                    <!-- 可在这里添加筛选条件,比如指定账本组 -->
                </STATICVARIABLES>
            </DESC>
        </DATA>
        <TDL>
            <TDLMESSAGE>
                <!-- 这里嵌入你的TDL代码 -->
                <REPORT NAME="CustomLedgerExport" ISMODIFY="No">
                    <FORM>CustomLedgerForm</FORM>
                </REPORT>
                <FORM NAME="CustomLedgerForm" ISMODIFY="No">
                    <PARTS>CustomLedgerPart</PARTS>
                </FORM>
                <PART NAME="CustomLedgerPart" ISMODIFY="No">
                    <LINE>CustomLedgerLine</LINE>
                    <REPEAT>CustomLedgerLine : Ledger</REPEAT>
                </PART>
                <LINE NAME="CustomLedgerLine" ISMODIFY="No">
                    <FIELDS>LedgerName, LedgerClosingBal</FIELDS>
                </LINE>
                <FIELD NAME="LedgerName" ISMODIFY="No">
                    <SET>$Name</SET>
                </FIELD>
                <FIELD NAME="LedgerClosingBal" ISMODIFY="No">
                    <SET>$ClosingBalance</SET>
                </FIELD>
            </TDLMESSAGE>
        </TDL>
    </BODY>
</ENVELOPE>

发送这个请求后,Tally会临时加载这段TDL,执行导出并返回数据,会话结束后这段TDL会自动清理,不会影响用户的Tally配置。

2. 能否在XML请求中嵌入TCP文件的代码,无需用户安装TCP?

答案是可以,但有前提条件:
TCP是TDL代码编译后的二进制文件,你无法直接将TCP文件嵌入XML请求,但如果你能获取到这个TCP对应的原始TDL源码(比如是你自己开发的,或者有权限获取源码),就可以把这些源码直接放到上面提到的<TDL>标签里,实现和安装TCP一样的效果,且完全不需要用户端安装该TCP文件。

需要注意几个关键点:

  • 临时加载的TDL仅在当前XML请求会话中生效,不会修改用户的Tally本地配置
  • 如果TCP是第三方开发的,你需要确保拥有使用其源码的合法授权,避免版权纠纷
  • 没有源码的情况下,虽然有工具可以反编译TCP,但反编译可能违反Tally的许可协议,不建议这么做

只要你把TCP对应的TDL源码嵌入XML的<TDLMESSAGE>区块,就能在响应中获取到你需要的数据,完全不依赖用户是否安装了该TCP。

内容的提问来源于stack exchange,提问作者Sachin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 09:28:20