Как добавить и выставить счет в QBFC с помощью текстового файла XML?

У меня есть форма Google Sheets, настроенная для получения данных формы, форматирования их в запрос на добавление счета-фактуры QBXML, а затем сохранение в виде текстового документа (.gdoc). Моя проблема заключается в том, что образец кода QBFC C#, который я нашел, основан на построении запроса QBXML и последующей его отправке; Я не смог понять, как отправить готовый документ QBXML в Quickbooks Desktop в качестве запроса.

Например, этот код не работает, потому что DoRequests() нужно передать IMsgSetRequest и он не принимает строку:

String xmlDoc = File.ReadAllText("J:\\My Drive\\XML Test Doc.gdoc");
IMsgSetResponse responseMsgSet = sessionManager.DoRequests(xmlDoc);

И это тоже не сработает, потому что вы не можете преобразовать строку в IMsgSetRequest:

String xmlDoc = File.ReadAllText("J:\\My Drive\\XML Test Doc.gdoc");
IMsgSetRequest requestMsgSet = xmlDoc;
IMsgSetResponse responseMsgSet = sessionManager.DoRequests(requestMsgSet);

Я предполагаю (и надеюсь), что есть простое решение, которое я просто не замечаю. Но если и есть, то это ускользало от меня достаточно долго, чтобы я решил, что стоит обратиться к вам за помощью. Заранее спасибо.


person Derek Glissman    schedule 23.04.2018    source источник


Ответы (3)


QBSessionManager имеет .DoRequestsFromXMLString, которому вы можете передать полную строку XML (которую вы читаете из своего файла).

Его определение:

IMsgSetResponse DoRequestsFromXMLString(string qbXMLRequest);
person Ethan    schedule 11.02.2019

Вам нужно использовать QBXML вместо QBFC. QBFC — это оболочка, которая генерирует QBXML. Поскольку у вас уже есть сгенерированный QBXML, вы можете обойти QBFC. Включите ссылку на QBXMLRP2Lib, и следующий код позволит вам отправлять данные в QuickBooks.

String xmlDoc = File.ReadAllText("J:\\My Drive\\XML Test Doc.gdoc");
QBXMLRP2Lib.IRequestProcessor5 rp = new QBXMLRP2Lib.RequestProcessor3();
rp.OpenConnection2("AppID", "AppName", QBXMLRP2Lib.QBXMLRPConnectionType.localQBD);
string ticket = rp.BeginSession("", QBXMLRP2Lib.QBFileMode.qbFileOpenDoNotCare);
string response = rp.ProcessRequest(ticket, xmlDoc);
person TravestyOfCode    schedule 27.06.2018

Вам может помочь этот инструмент: SDKTestPlus3. Инструмент обрабатывает подключение к Quickbooks Desktop, после чего вы можете передать свой XML-файл.

person user3665624    schedule 27.08.2018