Следующий XML-запрос используется для экспорта Master из tally

#xml #export #tally

#xml #экспорт #tally

Вопрос:

Следующий XML-запрос используется для экспорта Master из tally

 <!--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.Отправить sendxml»

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

В главном файле большое количество учетных записей (около 30000 регистров).Работает должным образом для файлов tally меньшего размера.
Я использую приведенный ниже код для чтения ответа:

 RequestXML = objtally.responseText
adostream.Write objtally.responseBody
 

Но я получаю сообщение об ошибке до получения ответа.
Я использую Tally Erp9.

Как решить эту проблему?

Ответ №1:

Сначала получите только имена регистров, используя приведенный ниже 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>