Ошибка добавления InventorySite в накладные Quickbooks в QBSDK 12
У меня есть приложение QBFC, написанное на C#, которое автоматически запускается из планировщика и, среди прочего, вставляет счета-фактуры от удаленного клиента в QB.
Недавно я обновил его, добавив "InventorySite" для выставления счетов клиентам, используя модуль "Расширенный инвентарь" QB. Я обновил до QBFC 12 в то же время.
Теперь программа выдает ошибку при попытке вставить счет, говоря, что элемент InventorySiteLocationRef не распознан. Все остальные функции работают как обычно.
Следующее является выдержкой из QBSDKLog.txt:
20130712.143859 I 736 QBSDKProcessRequest Application named 'IOS Briefcase Sync' starting requests (process 1264).
20130712.143859 W 736 QBNInvoiceAdd::HandleAggregate unexpected tag 'Memo'.
20130712.143859 E 736 XercesSAXErrorHandler Unknown element 'InventorySiteLocationRef' -- error at line 19, column 26 in XML data.
20130712.143859 I 736 MsgSetHandler Parser error, finishing.
20130712.143859 I 736 QBSDKProcessRequest Application named 'IOS Briefcase Sync' finishing requests (process 1264), ret = 1.
20130712.143859 E 1264 RequestProcessor Process Request error = 80042500, There was an error when parsing the provided XML file.
20130712.143937 I 1264 RequestProcessor Connection closed by app named 'IOS Briefcase Sync'
20130712.143937 I 1264 RequestProcessor ========== Ended Connection ==========
На клиенте запущены Quickbooks Enterprise Solutions, производство и оптовая продажа, выпуск 12
Я установил QBFC12_0 и QBXMLRP2, используя установщики, поставляемые с SDK. HostQuery возвращает 11 как наиболее поддерживаемую основную версию QBXML, и именно эту версию я использую при создании запросов.
Я не удалял QBFC7, которая ранее использовалась на этом клиентском сайте, потому что я хотел иметь возможность откатить (что я и сделал). Может ли это быть проблема?
Нужно ли устанавливать или удалять что-то еще? Поможет ли перезагрузка? Я не смог пока никого на клиентском сайте перезагрузить.
1 ответ
Проблема, в моем случае, оказалась в том, что я использовал неправильное поле. Я должен был использовать "InventorySiteRef", а не "InventorySiteLocationRef", который ссылается на номер корзины на сайте. Как только я сделал это исправление, все заработало.
Однако проблема с "InventorySiteLocationRef" остается. Это допустимое поле в QBFC, и якобы всезнающая экранная справка от Intuit не указывает на то, что он может потерпеть неудачу. Неудача это делает, однако, для многих, если не для всех версий QB. Наконец, в заметках о выпуске QBFC 12 я обнаружил довольно обширный список полей, которые кажутся законными, но на самом деле не работают. Вот как их описывает Intuit. Вы можете найти этот текст, чтобы найти список в примечаниях к выпуску:
ПРИМЕЧАНИЕ. Большинство этих изменений НЕ были внесены в Quick- Books. Это изменения спецификаций, предназначенные только для реализации в будущих версиях QuickBooks.