我有一个Google表格表单,该表单已设置为获取表单数据,将其格式化为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);
我假设(并希望)有一个我只是忽略的简单解决方案。但是,如果有的话,我已经躲过了很长时间,以至于我认为值得向你们寻求帮助。提前谢谢。
答案 0 :(得分:0)
您需要使用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);
答案 1 :(得分:0)
您可能会发现此工具有帮助:SDKTestPlus3。该工具处理与Quickbooks Desktop的连接,然后可以将XML文件传递过来。
答案 2 :(得分:0)
QBSessionManager
有一个.DoRequestsFromXMLString
,您可以将完整的XML字符串传递到(从文件中读取)。
它的定义是:
IMsgSetResponse DoRequestsFromXMLString(string qbXMLRequest);