Настройка IsActive для сотрудника через qbXML

У меня возникает следующая ошибка при добавлении или изменении сотрудников с помощью 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>

person user2354924    schedule 06.05.2013    source источник
comment
Где ваше сообщение об ошибке?   -  person webmonkey    schedule 06.05.2013
comment
Отредактировано, чтобы включить выброшенное исключение.   -  person user2354924    schedule 06.05.2013
comment
Опубликуйте свой XML-запрос или код, который вы используете для создания XML для отправки в QuickBooks.   -  person Keith Palmer Jr.    schedule 06.05.2013
comment
Сделанный. Удалив узел IsActive, XML работает.   -  person user2354924    schedule 06.05.2013


Ответы (1)


Порядок элементов XML в qbXML имеет значение.

Таким образом, если документация 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>

В качестве примечания: если вы используете инструмент «XML Validator», включенный в SDK QuickBooks, он точно скажет вам, что не так с любым XML-сообщением, которое вы ему передаете.

Надеюсь, это поможет!

person Keith Palmer Jr.    schedule 07.05.2013
comment
Спасибо, попробую. Я обнаружил проблему с заказом с помощью другого запроса, так что это имеет смысл. Я также обнаружил, что если вы установите подробный INI-файл журнала SDK, он предоставит некоторые дополнительные отчеты об ошибках, которые помогут при отладке. - person user2354924; 07.05.2013