如果我在SQL Server数据库登台表中有5张凭单,并且我使用tally XML API将所有5张凭单导入了tally。
如何仅使用凭证编号来验证和交叉检查理货和SQL之间的凭证?
我是否必须从理货中读取整个凭证摘要,然后从XML数据中提取凭证编号?提取凭证编号后,我可以将其与登台表进行比较。
我如何只从凭证中导出一份凭证号或一个特定字段?
答案 0 :(得分:1)
导入Tally后,您知道凭证编号吗?根据答案,我将更新答案。
案例1::如果您确实知道凭证编号,则可以使用Tally XML来请求该特定凭证编号,并且如果得到肯定的响应,则该凭证存在于计数中。无需阅读凭证摘要。您只需要在XML响应中查找特定的元素标签-如果该元素存在=凭证存在。
情况2:,但是我认为您不知道导入期间创建的凭证编号。在这种情况下。会比较棘手。让我知道,我将提供我所拥有的解决方案。
-更新-
讨论(请参阅评论)之后,我将根据案例1更新答案。 XML请求结构-
<ENVELOPE>
<HEADER>
<VERSION>1</VERSION>
<TALLYREQUEST>EXPORT</TALLYREQUEST>
<TYPE>COLLECTION</TYPE>
<ID>FindParticularVoucher</ID>
</HEADER>
<BODY>
<DESC>
<STATICVARIABLES>
<SVEXPORTFORMAT>$$SysName:XML</SVEXPORTFORMAT>
<SVCURRENTCOMPANY>FOO COMPANY</SVCURRENTCOMPANY>
<VCHNO>ABC1234</VCHNO>
</STATICVARIABLES>
<TDL>
<TDLMESSAGE>
<COLLECTION NAME="FindParticularVoucher" ISINITIALIZE="YES">
<TYPE>Voucher</TYPE>
<FILTER>GetInvoiceVoucher</FILTER>
</COLLECTION>
<VARIABLE NAME="VCHNO">
<TYPE>String</TYPE>
</VARIABLE>
<SYSTEM TYPE="FORMULAE" NAME="GetInvoiceVoucher">$VoucherNumber = $$String:##VCHNO</SYSTEM>
</TDLMESSAGE>
</TDL>
</DESC>
</BODY>
</ENVELOPE>
请记住在 SVCURRENTCOMPANY 和 VCHNO Xml标签中更改公司名称和凭证编号。
您可能会得到一个复杂的XML响应。您需要做的就是在“集合节点”中查找名为“凭证”的XML节点-信封/正文/数据/集合/凭证。如果此VoucherNode存在=您的凭证存在于理货中。在这种情况下,您无需导出任何数据或凭证编号。
答案 1 :(得分:0)
在Tally中使用XML创建凭证时,成功创建时将得到XML响应。该响应具有一个标签,其中包括您所提供的凭单编号以及LASTVCHID的标签。这就像提示中的主ID。然后,仅请求该主ID并检查响应就更容易了。如果找不到该主ID,则会产生错误(最重要的是,该错误只是一行XML响应,因此不需要解析)。
查看此stackoverflow链接以了解更多详细信息-how to filter tally xml response based on voucher number?