以下 xml 请求用于从 Tally 导出 Master

问题描述

以下xml请求用于从tally导出Master

<!--XML Tags to fetch Master Data from Tally--><ENVELOPE><HEADER><TALLYREQUEST>Export Data</TALLYREQUEST></HEADER><BODY><EXPORTDATA><REQUESTDESC><REPORTNAME>List of Accounts</REPORTNAME><STATICVARIABLES><SVCURRENTCOMPANY></SVCURRENTCOMPANY><DSPNAMESTYLE>$$SYSNAME:NAMEONLY</DSPNAMESTYLE><!--Specify the Period here--><SVFROMDATE></SVFROMDATE><SVTODATE></SVTODATE><sveXPORTFORMAT>$$SysName:XML</sveXPORTFORMAT><!--Other possible values for sveXPORTFORMAT tag are given below--><!--$$SysName:HTML--><!--$$SysName:SDF--></STATICVARIABLES></REQUESTDESC></EXPORTDATA></BODY></ENVELOPE>

但是我得到了

  1. 超时错误,即使是 30 分钟(对于不同的超时参数) 或
  2. 没有足够的内存资源来完成此操作

代码行“objtally.sEnd sendxml”

[
        'CODE USED
Set objtally = New MSXML2.ServerXMLHTTP
objtally.setTimeouts 5000,5000,100000,100000
objtally.Open "POST","http://localhost:9000"
objtally.sEnd sendxml      
]

文件有大量帐户(大约 30000 个分类帐)。适用于较小的计数文件。 我正在使用以下代码读取响应:

RequestXML = objtally.responseText
adostream.Write objtally.responseBody

但是在得到响应之前我遇到了错误。 我正在使用 Tally Erp9。

如何解决这个问题?

解决方法

首先使用以下 XML 获取分类帐名称

<?xml version="1.0" encoding="utf-8"?>
<ENVELOPE>
    <HEADER>
        <VERSION>1</VERSION>
        <TALLYREQUEST>Export</TALLYREQUEST>
        <TYPE>Data</TYPE>
        <ID>List of Ledgers</ID>
    </HEADER>
    <BODY>
        <DESC>
            <STATICVARIABLES>
                <SVEXPORTFORMAT>$$SysName:XML</SVEXPORTFORMAT>
                <SVCURRENTCOMPANY><!--Specify Company here--></SVCURRENTCOMPANY>
                <SVFROMDATE TYPE="Date"><!--Specify the Period here--></SVFROMDATE>
            </STATICVARIABLES>
            <TDL>
                <TDLMESSAGE>
                    <REPORT NAME="List of Ledgers" ISMODIFY="No" ISFIXED="No" ISINITIALIZE="No" ISOPTION="No" ISINTERNAL="No">
                        <FORMS>List of Ledgers</FORMS>
                    </REPORT>
                    <FORM NAME="List of Ledgers" ISMODIFY="No" ISFIXED="No" ISINITIALIZE="No" ISOPTION="No" ISINTERNAL="No">
                        <TOPPARTS>List of Ledgers</TOPPARTS>
                        <XMLTAG>"List of Ledgers"</XMLTAG>
                    </FORM>
                    <PART NAME="List of Ledgers" ISMODIFY="No" ISFIXED="No" ISINITIALIZE="No" ISOPTION="No" ISINTERNAL="No">
                        <TOPLINES>List of Ledgers</TOPLINES>
                        <REPEAT>List of Ledgers : Collection of Ledgers</REPEAT>
                        <SCROLLED>Vertical</SCROLLED>
                    </PART>
                    <LINE NAME="List of Ledgers" ISMODIFY="No" ISFIXED="No" ISINITIALIZE="No" ISOPTION="No" ISINTERNAL="No">
                        <LEFTFIELDS>Name</LEFTFIELDS>
                        
                    </LINE>
                    <FIELD NAME="Name" ISMODIFY="No" ISFIXED="No" ISINITIALIZE="No" ISOPTION="No" ISINTERNAL="No">
                        <SET>$Name</SET>
                        <XMLTAG>"NAME"</XMLTAG>
                    </FIELD>
                    
                    <COLLECTION NAME="Collection of Ledgers" ISMODIFY="No" ISFIXED="No" ISINITIALIZE="No" ISOPTION="No" ISINTERNAL="No">
                        <TYPE>Ledger</TYPE>
                    </COLLECTION>
                </TDLMESSAGE>
            </TDL>
        </DESC>
    </BODY>
</ENVELOPE>

将分类帐名称保存在列表中,并通过循环遍历列表使用以下 xml 单独获取每个分类帐

<ENVELOPE>
    <HEADER>
        <VERSION>1</VERSION>
        <TALLYREQUEST>EXPORT</TALLYREQUEST>
        <TYPE>Object</TYPE>
        <SUBTYPE>Ledger</SUBTYPE>
        <ID TYPE="Name">
            <!--Specify Ledgername here-->
        </ID>
    </HEADER>
    <BODY>
        <DESC>
            <STATICVARIABLES>
                <SVEXPORTFORMAT>$$SysName:XML</SVEXPORTFORMAT>
                <!--Specify other static variables here-->
            </STATICVARIABLES>
            <FETCHLIST>
                <FETCH>*</FETCH>
                <!--Fetch Fields here instead of "*" -->
                <!--
                <FETCH>PARENT</FETCH>
                <FETCH>ADDRESS</FETCH>
                -->
            </FETCHLIST>
        </DESC>
    </BODY>
</ENVELOPE>