英文:
How to limit nested fields in Tally XML Export Response
问题
For the given XML request, you want to limit the response to only include the "LedgerName" field under "ALLLEDGERENTRIES.LIST" and the "StockItemName" field under "INVENTORYALLOCATIONS.LIST." To achieve this, you can specify the desired fields in your request like this:
<ENVELOPE>
<HEADER>
<VERSION>1</VERSION>
<TALLYREQUEST>Export</TALLYREQUEST>
<TYPE>Collection</TYPE>
<ID>Vouchers</ID>
</HEADER>
<BODY>
<DESC>
<STATICVARIABLES>
<SVEXPORTFORMAT>$$SysName:XML</SVEXPORTFORMAT>
<SVCURRENTCOMPANY>CompanyName</SVCURRENTCOMPANY>
<SVFROMDATE TYPE="Date">01-01-2023</SVFROMDATE>
<SVTODATE TYPE="Date">01-01-2023</SVTODATE>
</STATICVARIABLES>
<TDL>
<TDLMESSAGE>
<COLLECTION ISMODIFY="No" ISFIXED="No" ISINITIALIZE="No" ISOPTION="No"
ISINTERNAL="No" NAME="Vouchers">
<TYPE> Vouchers : VoucherType</TYPE>
<CHILDOF>$$VchTypeSales</CHILDOF>
<BELONGSTO>Yes</BELONGSTO>
<NATIVEMETHOD>DATE</NATIVEMETHOD>
<NATIVEMETHOD>VOUCHERTYPENAME</NATIVEMETHOD>
<NATIVEMETHOD>ENTEREDBY</NATIVEMETHOD>
<NATIVEMETHOD>PARTYLEDGERNAME</NATIVEMETHOD>
<NATIVEMETHOD>VOUCHERNUMBER</NATIVEMETHOD>
<NATIVEMETHOD>ALLLEDGERENTRIES.LIST:LEDGERNAME</NATIVEMETHOD>
<NATIVEMETHOD>ALLLEDGERENTRIES.LIST:INVENTORYALLOCATIONS.LIST:STOCKITEMNAME</NATIVEMETHOD>
</COLLECTION>
</TDLMESSAGE>
</TDL>
</DESC>
</BODY>
</ENVELOPE>
In this modified request, I have specified only the "LEDGERNAME" field under "ALLLEDGERENTRIES.LIST" and the "STOCKITEMNAME" field under "INVENTORYALLOCATIONS.LIST" to be included in the response.
英文:
<ENVELOPE>
<HEADER>
<VERSION>1</VERSION>
<TALLYREQUEST>Export</TALLYREQUEST>
<TYPE>Collection</TYPE>
<ID>Vouchers</ID>
</HEADER>
<BODY>
<DESC>
<STATICVARIABLES>
<SVEXPORTFORMAT>$$SysName:XML</SVEXPORTFORMAT>
<SVCURRENTCOMPANY>CompanyName</SVCURRENTCOMPANY>
<SVFROMDATE TYPE="Date">01-01-2023</SVFROMDATE>
<SVTODATE TYPE="Date">01-01-2023</SVTODATE>
</STATICVARIABLES>
<TDL>
<TDLMESSAGE>
<COLLECTION ISMODIFY="No" ISFIXED="No" ISINITIALIZE="No" ISOPTION="No"
ISINTERNAL="No" NAME="Vouchers">
<TYPE> Vouchers : VoucherType</TYPE>
<CHILDOF>$$VchTypeSales</CHILDOF>
<BELONGSTO>Yes</BELONGSTO>
<NATIVEMETHOD>DATE</NATIVEMETHOD>
<NATIVEMETHOD>VOUCHERTYPENAME</NATIVEMETHOD>
<NATIVEMETHOD>ENTEREDBY</NATIVEMETHOD>
<NATIVEMETHOD>PARTYLEDGERNAME</NATIVEMETHOD>
<NATIVEMETHOD>VOUCHERNUMBER</NATIVEMETHOD>
<NATIVEMETHOD>ALLLEDGERENTRIES.LIST:LEDGERNAME</NATIVEMETHOD>
<NATIVEMETHOD>ALLLEDGERENTRIES.LIST:INVENTORYALLOCATIONS.LIST:STOCKITEMNAME</NATIVEMETHOD>
</COLLECTION>
</TDLMESSAGE>
</TDL>
</DESC>
</BODY>
</ENVELOPE>
I want to limit the fields in the response against above mentioned XML request, I am successfully able to do it for direct voucher fields but unable to get only "LedgerName" field under the ALLLEDGERENTRIES.LIST and "StockItemName" field under the INVENTORYALLOCATIONS.LIST.
When I send request to tally with the mentioned body it returns all the fields under ALLLEDGERENTRIES.LIST as well as INVENTORYALLOCATIONS.LIST.
答案1
得分: 0
这是一个XML报告生成的示例,其中包括了一些关于凭证和相关信息的字段。请注意,此XML通过TallyConnector生成,使用了对象导向的方式(凭证扩展了BaseTallyObject),这也在TDL中得到了支持。同时,从C#类生成TDL的功能并未向公众发布。
英文:
Its little complicated,
we need to create a new Report to achieve this.
I tried to restrict child fields but didn't find a way without creating custom report.
I will provide sample custom voucher report. with minimal fields, if you want more fields, you can customize it.
Input XML
<ENVELOPE>
<HEADER>
<VERSION>1</VERSION>
<TALLYREQUEST>EXPORT</TALLYREQUEST>
<TYPE>DATA</TYPE>
<ID>TC_VOUCHER</ID>
</HEADER>
<BODY>
<DESC>
<STATICVARIABLES>
<SVEXPORTFORMAT>$$SysName:xml</SVEXPORTFORMAT>
</STATICVARIABLES>
<TDL>
<TDLMESSAGE>
<REPORT ISMODIFY="NO" ISFIXED="NO" ISINITIALIZE="NO" ISOPTION="NO" ISINTERNAL="NO" NAME="TC_VOUCHER">
<FORM>TC_VOUCHER</FORM>
</REPORT>
<FORM ISMODIFY="NO" ISFIXED="NO" ISINITIALIZE="NO" ISOPTION="NO" ISINTERNAL="NO" NAME="TC_VOUCHER">
<PART>TC_VOUCHER</PART>
<XMLTAG>Voucher.LIST</XMLTAG>
</FORM>
<PART ISMODIFY="NO" ISFIXED="NO" ISINITIALIZE="NO" ISOPTION="NO" ISINTERNAL="NO" NAME="TC_BASETALLYOBJECT">
<LINE>TC_BASETALLYOBJECT</LINE>
<REPEAT>TC_BASETALLYOBJECT:TC_BASETALLYOBJECTCOLLECTION</REPEAT>
<SCROLLED>Vertical</SCROLLED>
</PART>
<PART ISMODIFY="NO" ISFIXED="NO" ISINITIALIZE="NO" ISOPTION="NO" ISINTERNAL="NO" NAME="TC_TALLYOBJECT">
<LINE>TC_TALLYOBJECT</LINE>
<REPEAT>TC_TALLYOBJECT:TC_TALLYOBJECTCOLLECTION</REPEAT>
<SCROLLED>Vertical</SCROLLED>
</PART>
<PART ISMODIFY="NO" ISFIXED="NO" ISINITIALIZE="NO" ISOPTION="NO" ISINTERNAL="NO" NAME="TC_VOUCHER">
<LINE>TC_VOUCHER</LINE>
<REPEAT>TC_VOUCHER:TC_VOUCHERCOLLECTION</REPEAT>
<SCROLLED>Vertical</SCROLLED>
</PART>
<PART ISMODIFY="NO" ISFIXED="NO" ISINITIALIZE="NO" ISOPTION="NO" ISINTERNAL="NO" NAME="TC_VOUCHERLEDGER">
<LINE>TC_VOUCHERLEDGER</LINE>
<REPEAT>TC_VOUCHERLEDGER:ALLLEDGERENTRIES</REPEAT>
<SCROLLED>Vertical</SCROLLED>
</PART>
<LINE ISMODIFY="NO" ISFIXED="NO" ISINITIALIZE="NO" ISOPTION="NO" ISINTERNAL="NO" NAME="TC_BASETALLYOBJECT">
<FIELDS>TC_GUID</FIELDS>
<XMLTAG>BASETALLYOBJECT</XMLTAG>
</LINE>
<LINE ISMODIFY="NO" ISFIXED="NO" ISINITIALIZE="NO" ISOPTION="NO" ISINTERNAL="NO" NAME="TC_TALLYOBJECT">
<FIELDS>TC_ALTERID,TC_MASTERID</FIELDS>
<XMLTAG>TALLYOBJECT</XMLTAG>
<USE>TC_BASETALLYOBJECT</USE>
</LINE>
<LINE ISMODIFY="NO" ISFIXED="NO" ISINITIALIZE="NO" ISOPTION="NO" ISINTERNAL="NO" NAME="TC_VOUCHER">
<FIELDS>TC_DATE,TC_VOUCHERTYPE,TC_VOUCHERNUMBER</FIELDS>
<XMLTAG>VOUCHER</XMLTAG>
<EXPLODE>TC_VOUCHERLEDGER:Yes</EXPLODE>
<USE>TC_TALLYOBJECT</USE>
</LINE>
<LINE ISMODIFY="NO" ISFIXED="NO" ISINITIALIZE="NO" ISOPTION="NO" ISINTERNAL="NO" NAME="TC_VOUCHERLEDGER">
<FIELDS>TC_LEDGERNAME,TC_AMOUNT</FIELDS>
<XMLTAG>ALLLEDGERENTRIES.LIST</XMLTAG>
</LINE>
<FIELD ISMODIFY="NO" ISFIXED="NO" ISINITIALIZE="NO" ISOPTION="NO" ISINTERNAL="NO" NAME="TC_GUID">
<SET>$GUID</SET>
<XMLTAG>GUID</XMLTAG>
</FIELD>
<FIELD ISMODIFY="NO" ISFIXED="NO" ISINITIALIZE="NO" ISOPTION="NO" ISINTERNAL="NO" NAME="TC_ALTERID">
<SET>$AlterId</SET>
<XMLTAG>ALTERID</XMLTAG>
</FIELD>
<FIELD ISMODIFY="NO" ISFIXED="NO" ISINITIALIZE="NO" ISOPTION="NO" ISINTERNAL="NO" NAME="TC_MASTERID">
<SET>$MasterId</SET>
<XMLTAG>MASTERID</XMLTAG>
</FIELD>
<FIELD ISMODIFY="NO" ISFIXED="NO" ISINITIALIZE="NO" ISOPTION="NO" ISINTERNAL="NO" NAME="TC_DATE">
<SET>$Date</SET>
<XMLTAG>DATE</XMLTAG>
</FIELD>
<FIELD ISMODIFY="NO" ISFIXED="NO" ISINITIALIZE="NO" ISOPTION="NO" ISINTERNAL="NO" NAME="TC_VOUCHERTYPE">
<SET>$VOUCHERTYPENAME</SET>
<XMLTAG>VOUCHERTYPENAME</XMLTAG>
</FIELD>
<FIELD ISMODIFY="NO" ISFIXED="NO" ISINITIALIZE="NO" ISOPTION="NO" ISINTERNAL="NO" NAME="TC_VOUCHERNUMBER">
<SET>$VoucherNumber</SET>
<XMLTAG>VOUCHERNUMBER</XMLTAG>
</FIELD>
<FIELD ISMODIFY="NO" ISFIXED="NO" ISINITIALIZE="NO" ISOPTION="NO" ISINTERNAL="NO" NAME="TC_LEDGERNAME">
<SET>$LEDGERNAME</SET>
<XMLTAG>LEDGERNAME</XMLTAG>
</FIELD>
<FIELD ISMODIFY="NO" ISFIXED="NO" ISINITIALIZE="NO" ISOPTION="NO" ISINTERNAL="NO" NAME="TC_AMOUNT">
<SET>$AMOUNT</SET>
<XMLTAG>AMOUNT</XMLTAG>
</FIELD>
<COLLECTION ISMODIFY="NO" ISFIXED="NO" ISINITIALIZE="NO" ISOPTION="NO" ISINTERNAL="NO" NAME="TC_VOUCHERCOLLECTION">
<TYPE>VOUCHERS</TYPE>
<NATIVEMETHOD>ALTERID</NATIVEMETHOD>
<NATIVEMETHOD>ALLLEDGERENTRIES.LEDGERNAME</NATIVEMETHOD>
</COLLECTION>
</TDLMESSAGE>
</TDL>
</DESC>
</BODY>
</ENVELOPE>
OuputXML
<VOUCHER.LIST>
<VOUCHER>
<GUID>52889497-5b6b-403d-8f83-224e3c7759b4-00001484</GUID>
<ALTERID>8816</ALTERID>
<MASTERID>5252</MASTERID>
<DATE>1-Apr-23</DATE>
<VOUCHERTYPENAME>Sales</VOUCHERTYPENAME>
<VOUCHERNUMBER>1</VOUCHERNUMBER>
<ALLLEDGERENTRIES.LIST>
<LEDGERNAME>ABCD India Pvt Ltd</LEDGERNAME>
<AMOUNT>35,070.00</AMOUNT>
</ALLLEDGERENTRIES.LIST>
<ALLLEDGERENTRIES.LIST>
<LEDGERNAME>Sales</LEDGERNAME>
<AMOUNT>35,070.00</AMOUNT>
</ALLLEDGERENTRIES.LIST>
</VOUCHER>
</VOUCHER.LIST>
Note: This XML is generated through TallyConnector and uses object orientation(Voucher Extends BaseTallyObject) which is also supported in TDL
and AutoTDL generation from C# class feature is not released to public.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论