使用XML请求创建Tally采购订单失败:凭证日期缺失报错
Tally采购订单XML导入报错:凭证日期缺失(已指定日期)
问题概述
- 向Tally导入采购订单XML时,系统提示“凭证日期缺失”,但XML中已包含日期字段
- 9000端口连通正常,其他XML查询命令可通过Postman正常执行
请求XML
<ENVELOPE> <HEADER> <VERSION>1</VERSION> <TALLYREQUEST>Import</TALLYREQUEST> <TYPE>Data</TYPE> <ID>Vouchers</ID> </HEADER> <BODY> <DESC> <STATICVARIABLES> <SVCURRENTCOMPANY>Tata Motors</SVCURRENTCOMPANY> <SVEXPORTFORMAT>$$SysName:XML</SVEXPORTFORMAT> </STATICVARIABLES> </DESC> <DATA> <TALLYMESSAGE> <VOUCHER> <DATE>20251127</DATE> <VOUCHERTYPENAME>Purchase Order</VOUCHERTYPENAME> <VOUCHERNUMBER>PO001</VOUCHERNUMBER> <PARTYLEDGERNAME>Supplier 1</PARTYLEDGERNAME> <PERSISTEDVIEW>Inventory Voucher View</PERSISTEDVIEW> <BASICPARTYNAME>Supplier 1</BASICPARTYNAME> <LEDGERENTRIES.LIST> <LEDGERNAME>Supplier 1</LEDGERNAME> <ISDEEMEDPOSITIVE>No</ISDEEMEDPOSITIVE> <ISPARTYLEDGER>Yes</ISPARTYLEDGER> <ISLASTDEEMEDPOSITIVE>No</ISLASTDEEMEDPOSITIVE> <AMOUNT>-136.00</AMOUNT> </LEDGERENTRIES.LIST> <ALLINVENTORYENTRIES.LIST> <STOCKITEMNAME>Rice</STOCKITEMNAME> <ISDEEMEDPOSITIVE>Yes</ISDEEMEDPOSITIVE> <RATE>34.00</RATE> <AMOUNT>136.00</AMOUNT> <ACTUALQTY>4</ACTUALQTY> <BILLEDQTY>4</BILLEDQTY> <BATCHALLOCATIONS.LIST> <GODOWNNAME>Main Location</GODOWNNAME> <AMOUNT>136.00</AMOUNT> <ACTUALQTY>4</ACTUALQTY> <BILLEDQTY>4</BILLEDQTY> </BATCHALLOCATIONS.LIST> <ACCOUNTINGALLOCATIONS.LIST> <LEDGERNAME>Purchase Account</LEDGERNAME> <ISDEEMEDPOSITIVE>Yes</ISDEEMEDPOSITIVE> <ISLASTDEEMEDPOSITIVE>Yes</ISLASTDEEMEDPOSITIVE> <AMOUNT>136.00</AMOUNT> </ACCOUNTINGALLOCATIONS.LIST> </ALLINVENTORYENTRIES.LIST> </VOUCHER> </TALLYMESSAGE> </DATA> </BODY> </ENVELOPE>
错误响应XML
<ENVELOPE> <HEADER> <VERSION>1</VERSION> <STATUS>1</STATUS> </HEADER> <BODY> <DATA> <IMPORTRESULT> <LINEERROR>Voucher date is missing for: 'Purchase Order' voucher PO001. Verify the data, resolve errors (if any) and retry Split.</LINEERROR> <CREATED>0</CREATED> <ALTERED>0</ALTERED> <DELETED>0</DELETED> <LASTVCHID>0</LASTVCHID> <LASTMID>0</LASTMID> <COMBINED>0</COMBINED> <IGNORED>0</IGNORED> <ERRORS>0</ERRORS> <CANCELLED>0</CANCELLED> <EXCEPTIONS>1</EXCEPTIONS> <VCHNUMBER>PO001</VCHNUMBER> </IMPORTRESULT> </DATA> <DESC> <CMPINFO> <COMPANY>0</COMPANY> <GROUP>0</GROUP> <LEDGER>15</LEDGER> <COSTCATEGORY>0</COSTCATEGORY> <COSTCENTRE>0</COSTCENTRE> <GODOWN>2</GODOWN> <STOCKGROUP>0</STOCKGROUP> <STOCKCATEGORY>0</STOCKCATEGORY> <STOCKITEM>1</STOCKITEM> <VOUCHERTYPE>3</VOUCHERTYPE> <CURRENCY>0</CURRENCY> <UNIT>0</UNIT> <BUDGET>0</BUDGET> <CLIENTRULE>0</CLIENTRULE> <SERVERRULE>0</SERVERRULE> <STATE>0</STATE> <TDSRATE>0</TDSRATE> <TAXCLASSIFICATION>0</TAXCLASSIFICATION> <STCATEGORY>0</STCATEGORY> <DEDUCTEETYPE>0</DEDUCTEETYPE> <ATTENDANCETYPE>0</ATTENDANCETYPE> <FBTCATEGORY>0</FBTCATEGORY> <FBTASSESSEETYPE>0</FBTASSESSEETYPE> <TARIFFCLASSIFICATION>0</TARIFFCLASSIFICATION> <EXCISEDUTYCLASSIFICATION>0</EXCISEDUTYCLASSIFICATION> <SERIALNUMBER>0</SERIALNUMBER> <ADJUSTMENTCLASSIFICATION>0</ADJUSTMENTCLASSIFICATION> <INCOMETAXSLAB>0</INCOMETAXSLAB> <INCOMETAXCLASSIFICATION>0</INCOMETAXCLASSIFICATION> <LBTCLASSIFICATION>0</LBTCLASSIFICATION> <TAXUNIT>21</TAXUNIT> <RETURNMASTER>0</RETURNMASTER> <GSTCLASSIFICATION>0</GSTCLASSIFICATION> <VOUCHERNUMBERSERIES>21</VOUCHERNUMBERSERIES> <VOUCHER>0</VOUCHER> </CMPINFO> <CMPINFOEX> <IDINFO> <LASTCREATEDVCHID>40</LASTCREATEDVCHID> </IDINFO> </CMPINFOEX> <MSTALTIDINFO> <EXPSUMID>0</EXPSUMID> </MSTALTIDINFO> </DESC> </BODY> </ENVELOPE>
解决方案
核心问题
Tally的采购订单凭证对日期字段的识别使用VOUCHERDATE而非通用的DATE字段,同时部分冗余字段可能干扰解析。
修改后的XML
将<DATE>20251127</DATE>替换为<VOUCHERDATE>20251127</VOUCHERDATE>,并移除不必要的PERSISTEDVIEW和BASICPARTYNAME字段:
<ENVELOPE> <HEADER> <VERSION>1</VERSION> <TALLYREQUEST>Import</TALLYREQUEST> <TYPE>Data</TYPE> <ID>Vouchers</ID> </HEADER> <BODY> <DESC> <STATICVARIABLES> <SVCURRENTCOMPANY>Tata Motors</SVCURRENTCOMPANY> <SVEXPORTFORMAT>$$SysName:XML</SVEXPORTFORMAT> </STATICVARIABLES> </DESC> <DATA> <TALLYMESSAGE> <VOUCHER> <VOUCHERDATE>20251127</VOUCHERDATE> <VOUCHERTYPENAME>Purchase Order</VOUCHERTYPENAME> <VOUCHERNUMBER>PO001</VOUCHERNUMBER> <PARTYLEDGERNAME>Supplier 1</PARTYLEDGERNAME> <LEDGERENTRIES.LIST> <LEDGERNAME>Supplier 1</LEDGERNAME> <ISDEEMEDPOSITIVE>No</ISDEEMEDPOSITIVE> <ISPARTYLEDGER>Yes</ISPARTYLEDGER> <ISLASTDEEMEDPOSITIVE>No</ISLASTDEEMEDPOSITIVE> <AMOUNT>-136.00</AMOUNT> </LEDGERENTRIES.LIST> <ALLINVENTORYENTRIES.LIST> <STOCKITEMNAME>Rice</STOCKITEMNAME> <ISDEEMEDPOSITIVE>Yes</ISDEEMEDPOSITIVE> <RATE>34.00</RATE> <AMOUNT>136.00</AMOUNT> <ACTUALQTY>4</ACTUALQTY> <BILLEDQTY>4</BILLEDQTY> <BATCHALLOCATIONS.LIST> <GODOWNNAME>Main Location</GODOWNNAME> <AMOUNT>136.00</AMOUNT> <ACTUALQTY>4</ACTUALQTY> <BILLEDQTY>4</BILLEDQTY> </BATCHALLOCATIONS.LIST> <ACCOUNTINGALLOCATIONS.LIST> <LEDGERNAME>Purchase Account</LEDGERNAME> <ISDEEMEDPOSITIVE>Yes</ISDEEMEDPOSITIVE> <ISLASTDEEMEDPOSITIVE>Yes</ISLASTDEEMEDPOSITIVE> <AMOUNT>136.00</AMOUNT> </ACCOUNTINGALLOCATIONS.LIST> </ALLINVENTORYENTRIES.LIST> </VOUCHER> </TALLYMESSAGE> </DATA> </BODY> </ENVELOPE>
验证步骤
- 使用修改后的XML重新发起导入请求
- 确认Tally中成功创建采购订单PO001
- 若仍报错,检查日期格式是否为
YYYYMMDD(需确保年份为4位,无分隔符)
内容的提问来源于stack exchange,提问作者Ajith
相关产品推荐
相关产品推荐

