【问题标题】:Setting IsActive for Employee through qbXML通过 qbXML 为员工设置 IsActive
【发布时间】:2013-05-06 13:55:43
【问题描述】:

使用 QbXml 添加或修改员工时出现以下错误:QuickBooks 在解析提供的 XML 文本流时发现错误。

我尝试过 true/false(这是它返回的值)、yes/no 和 1/0;这些似乎都不起作用。

是否可以为员工设置 IsActive 字段?我错过了什么吗?

谢谢!


抛出的异常是:

{System.Runtime.InteropServices.COMException (0x80040400): QuickBooks found an error when parsing the provided XML text stream.
   at Interop.QBXMLRP2.IRequestProcessor4.ProcessRequest(String ticket, String inputRequest)
   at PayrolImport.Program.Main(String[] args) in Program.cs:line 251
   at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
   at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
   at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()}

XML

<?xml version="1.0"?>
<?qbxml version="12.0"?>
<QBXML>
  <QBXMLMsgsRq onError="stopOnError">
    <EmployeeModRq>
      <EmployeeMod>
        <ListID>8000007D-1367847338</ListID>
        <EditSequence>1367850617</EditSequence>
        <FirstName>first name</FirstName>
        <MiddleName>middle name</MiddleName>
        <LastName>last name</LastName>
        <IsActive>true</IsActive>
        <Email></Email>
        <AccountNumber>1</AccountNumber>
      </EmployeeMod>
    </EmployeeModRq>
  </QBXMLMsgsRq>
</QBXML>

【问题讨论】:

  • 你的错误信息在哪里?
  • 已编辑以包含抛出的异常。
  • 发布您的 XML 请求,或您用于生成 XML 以发送到 QuickBooks 的代码。
  • 完成。删除“IsActive”节点,XML 工作。

标签: intuit-partner-platform qbxml


【解决方案1】:

qbXML matters 中 XML 元素的顺序

所以如果QuickBooks OSR 文档显示 XML 元素的顺序应该是这样的:

<ListID >IDTYPE</ListID> <!-- required -->
<EditSequence >STRTYPE</EditSequence> <!-- required -->
<IsActive >BOOLTYPE</IsActive> <!-- optional -->
... lots of other stuff here ... 

然后你发送这个:

<ListID>8000007D-1367847338</ListID>
<EditSequence>1367850617</EditSequence>
... lots of other stuff here ... 
<IsActive>true</IsActive>

然后你会得到那个错误:

(0x80040400): QuickBooks 在解析提供的 XML 时发现错误 文本流。

该错误本质上是 QuickBooks 试图告诉您您的 XML 文档中有一些错误。

如果您以正确的顺序发送节点,它将正常工作:

<ListID>8000007D-1367847338</ListID>
<EditSequence>1367850617</EditSequence>
<IsActive>true</IsActive>
<FirstName>first name</FirstName>
<MiddleName>middle name</MiddleName>
<LastName>last name</LastName>

附带说明,如果您使用 QuickBooks SDK 中包含的“XML 验证器”工具,它会准确地告诉您您提供给它的任何 XML 消息有什么问题。

希望有帮助!

【讨论】:

  • 谢谢,我会试一试。我发现另一个查询的顺序问题,所以这是有道理的。我还发现,如果您将 SDK 日志 INI 设置为详细,它会提供一些有助于调试的额外错误报告。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-02
相关资源
最近更新 更多