#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>
Но я получаю
- Ошибка тайм-аута, даже на 30 минут (для разных аргументов тайм-аута) или
- Недостаточно ресурсов памяти для выполнения этой операции
в строке кода «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>