如何使用按包含指定子文本的名称过滤的XML请求从Tally获取分类账列表?

How to get list of ledgers from tally using XML request filtered by name that contains a specified sub-text?

提问人:Shounak Katyayan 提问时间:7/14/2023 最后编辑:Shounak Katyayan 更新时间:7/14/2023 访问量:161

问:

我有以下 XML 请求,它从 Tally 返回所有账本的列表。

<ENVELOPE>
            <HEADER>
                <VERSION>1</VERSION>
                <TALLYREQUEST>Export</TALLYREQUEST>
                <TYPE>Collection</TYPE>
                <ID>Ledgers</ID>
            </HEADER>
            <BODY>
                <DESC>
                    <STATICVARIABLES>
                        <SVEXPORTFORMAT>SysName:XML</SVEXPORTFORMAT>
                    </STATICVARIABLES>
                    <TDL>
                        <TDLMESSAGE>
                            <COLLECTION ISMODIFY="No" ISFIXED="No" ISINITIALIZE="No" ISOPTION="No" ISINTERNAL="No" NAME="Ledgers">
                                <TYPE>Ledger</TYPE>                             
                                <BELONGSTO>Yes</BELONGSTO>
                                <NATIVEMETHOD>Name</NATIVEMETHOD>
                            </COLLECTION>
                        </TDLMESSAGE>
                    </TDL>
                </DESC>
            </BODY>             
        </ENVELOPE>

现在在上面的代码中,我添加了一个过滤器,如下所示:

<TDLMESSAGE>
     <COLLECTION ISMODIFY="No" ISFIXED="No" ISINITIALIZE="No" ISOPTION="No" ISINTERNAL="No" NAME="Ledgers">
            <TYPE>Ledger</TYPE>                             
            <BELONGSTO>Yes</BELONGSTO>
            <NATIVEMETHOD>Name</NATIVEMETHOD>
            <FILTERS>Site</FILTERS>
      </COLLECTION>
    <SYSTEM TYPE="Formulae" NAME="Site">$Name = 'Site'</SYSTEM>
</TDLMESSAGE>

因此,它的作用是检查是否存在一个名为“站点”的分类帐 这个过滤器工作得很好。它只给了我一个名为“Site”的分类账。但是,我需要的是所有在其名称中任何地方都包含“站点”一词的分类账的列表。 因此,我尝试使用 LIKE 运算符而不是 =

<SYSTEM TYPE="Formulae" NAME="Site">$Name LIKE 'Site'</SYSTEM>
XML 字符串 请求 比较 计数

评论


答:

0赞 Shounak Katyayan 7/14/2023 #1
<ENVELOPE>
    <HEADER>
        <VERSION>1</VERSION>
        <TALLYREQUEST>Export</TALLYREQUEST>
        <TYPE>Collection</TYPE>
        <ID>Ledgers</ID>
    </HEADER>
    <BODY>
        <DESC>
            <STATICVARIABLES>
                <SVEXPORTFORMAT>SysName:XML</SVEXPORTFORMAT>
            </STATICVARIABLES>
            <TDL>
                <TDLMESSAGE>
                    <COLLECTION ISMODIFY="No" ISFIXED="No" ISINITIALIZE="No" ISOPTION="No" ISINTERNAL="No" NAME="Ledgers">
                        <TYPE>Ledger</TYPE>                         
                        <BELONGSTO>Yes</BELONGSTO>
                        <NATIVEMETHOD>Name</NATIVEMETHOD>
                        <FILTERS>Site</FILTERS>
                    </COLLECTION>
                    <SYSTEM TYPE="Formulae" NAME="Site">$Name LIKE '%Site%'</SYSTEM>
                </TDLMESSAGE>
            </TDL>
        </DESC>
    </BODY>             
</ENVELOPE>

这成功了。

评论

0赞 Jeremy Caney 7/18/2023
请记住,Stack Overflow 不仅旨在解决眼前的问题,还旨在帮助未来的读者找到类似问题的解决方案,这需要了解底层代码。这对于我们社区中不熟悉语法的初学者来说尤其重要。鉴于此,您能否编辑您的答案以包括对您正在做的事情的解释以及您为什么认为这是最好的方法?
1赞 sai vineeth 7/14/2023 #2

喜欢是用于模式匹配的,它需要表达

如果要使用字符串进行搜索,请使用 Contains

<SYSTEM TYPE="Formulae" NAME="Site">$Name Contains 'Site'</SYSTEM>

enter image description here

评论

0赞 Shounak Katyayan 7/15/2023
我实际上是在寻找有关Tally XML请求的字符串运算符的文档。