我编写了一个痛苦的任务,即编写一个C#应用程序,将员工时间条目与Quickbooks同步到一个单独的数据库中.由于我是QB编程的新手,我正在尝试执行基本任务,例如获取客户列表,然后是每个客户的工作,然后是员工.我一直在阅读SDK文档,但我对细节仍然有点模糊,因为我发现的例子对我来说有点太先进了:-P
为了简单起见,我想要一个代码片段,它为我提供了初学者的客户列表.这是我得到的代码:
QBSessionManager SessionManager = new QBSessionManager();
IMsgSetRequest customerSet = SessionManager.CreateMsgSetRequest("US", 8, 0);
//
// Code to get list of customers here.
//
SessionManager.OpenConnection2("", "New App", ENConnectionType.ctLocalQBD);
SessionManager.BeginSession(string.Empty, ENOpenMode.omDontCare);
IMsgSetResponse Resp = SessionManager.DoRequests(customerSet);
MessageBox.Show(Resp.ToXMLString());
SessionManager.EndSession();
SessionManager.CloseConnection();
Run Code Online (Sandbox Code Playgroud)
任何人都可以填写"代码来获取客户名单"吗?非常感谢你提前!
胜利者
我收到此错误:
由于以下错误,检索具有CLSID {6C9E80E3-B780-4361-A693-5E5C6BDC83A9}的组件的COM类工厂失败:80040154.
Dim smgrGlobal As QBSessionManager
smgrGlobal = New QBSessionManagerClass()
Run Code Online (Sandbox Code Playgroud)
第二行是错误的一行.
我只在QB2013和QBFC12上出现此错误.任何以前的版本都不会发生这种情况.
我可以找到,这个错误是由于应用程序没有为x86编译(如果使用"任何CPU").但是我已经设置我的应用程序编译为x86而不是"任何CPU"我仍然收到此错误.
使用Quickbooks SDK QBFC 7.0。当我尝试获取快速簿中所有客户的列表时,如果其中任何一个客户的名字都带有诸如è的重音字符,那么我会遇到一个例外:
An Exception occurred! Type:UTFDataFormatException, Message: invalid byte 2 (<)
of a 3-byte sequence. SAXParseException: error ar line 1, column 23 in XML data.
Run Code Online (Sandbox Code Playgroud)
一些Intuit论坛已经说过,我必须将XML更改为UTF-8(这就是他们所说的,他们没有给出真正的解决方案),QBFC显然确实使用XML来发送和接收数据,但无论如何我都找不到覆盖默认编码。
该请求使用以下代码创建。发生在DoRequests()上的异常
IMsgSetRequest req = Session.GetLatestMsgSetRequest();
ICustomerQuery cq = req.AppendCustomerQueryRq();
IMsgSetResponse responseSet = Session.QBSM.DoRequests(req);
Run Code Online (Sandbox Code Playgroud) 我正在使用 QBXML 并尝试将付款应用于 ReceivePaymentAddRq 中的特定发票。我收到的消息显然很常见,“找不到请求中指定的对象 TxnID”。一旦将 ARAccountRef 字段添加到请求中,有关此主题的大多数其他论坛主题都会得到解决,这对我来说似乎没有什么影响。
我已查询了 TxnID 68B4-1290718970 的发票并验证了以下内容:
我的 XML 请求如下。我缺少什么?
谢谢
<QBXML>
<QBXMLMsgsRq onError = "continueOnError">
<ReceivePaymentAddRq requestID = "0">
<ReceivePaymentAdd>
<CustomerRef>
<ListID>80000111-1286514304</ListID>
</CustomerRef>
<ARAccountRef>
<ListID>80000091-1273734429</ListID>
</ARAccountRef>
<TxnDate>2010-11-10</TxnDate>
<RefNumber>2999 </RefNumber>
<TotalAmount>15.95</TotalAmount>
<PaymentMethodRef>
<ListID>80000002-1273560098</ListID>
</PaymentMethodRef>
<Memo>_32T0DE94J</Memo>
<DepositToAccountRef>
<ListID>80000090-1273734138</ListID>
</DepositToAccountRef>
<AppliedToTxnAdd>
<TxnID>68B4-1290718970</TxnID>
<PaymentAmount>15.95</PaymentAmount>
</AppliedToTxnAdd>
</ReceivePaymentAdd>
</ReceivePaymentAddRq>
</QBXMLMsgsRq>
</QBXML>
Run Code Online (Sandbox Code Playgroud) 我是C#和QBFC13代码的新手,我正试图在BillAdd部分下的intuit开发者网站上找到的代码添加账单.
这BillAddRq.ExternalGUID.SetValue(Guid.NewGuid().ToString());是一个错误:
GUID格式无效.必须对自定义字段使用零,或使用GuidGen.exe为私有数据扩展生成的GUID.
我试过了:
String guid = System.Guid.NewGuid().ToString("B");
// MessageBox to see that it creates the number
MessageBox.Show("guid", guid);
BillAddRq.ExternalGUID.SetValue(guid);
BillAddRq.ExternalGUID.SetValue(Guid.NewGuid().ToString("B"));
And
String guid = System.Guid.NewGuid().ToString("0");
Run Code Online (Sandbox Code Playgroud)
那些抛出:
QB测试8-14-2014.vshost.exe - 无磁盘"驱动器中没有磁盘.请将磁盘插入驱动器F."
我该如何解决这些错误?
我无法弄清楚如何使用qbfc删除发票或帐单(使用版本13).有一种方法可以删除列表项但无法找到类似的事务删除方法.
(我已经解决了这个问题。发布它以防其他人遇到这个问题。)
我有一个使用 QBFC13 库与 Quickbooks 集成的应用程序。从 Visual Studio 运行应用程序时,这一切都非常有效。但是,在作为 ClickOnce 应用程序发布和安装后,应用程序在调用 SessionManager.OpenConnection 方法时崩溃。
以下是 EventViewer 条目: 错误应用程序名称:*****.exe,版本:1.0.0.0,时间戳:0x5c9bc8e2 错误模块名称:ucrtbase.dll,版本:10.0.17763.348,时间戳:0x93e4fbe5 异常代码:0xc0000409 故障偏移:0x000a3652 故障进程 ID:0x47d4 故障应用程序启动时间:0x01d4e4dd895421ae 故障应用程序路径:C:\temp\test****.exe 故障模块路径:C:\Windows\System32\ucrtbase.dll 报告 ID: a081e5b3-502b-4591-9fc7-429d5658dba4 错误包全名: 错误包相关应用程序 ID:
我有一个使用 QBFC 12.0 用 C# 编写的 Quickbooks“集成应用程序”。它已在具有多个版本的 Quickbooks 的多个站点上安装并正常工作。今天,我尝试使用 Quickbooks 2012 Premiere 在新站点上安装它。要授权应用程序连接,必须打开 QB,以 QB 管理员身份登录,然后从集成应用程序启动连接。每次我在新站点上安装应用程序时都必须这样做。在这种情况下,当我尝试启动连接时,我收到以下错误消息:
无法打开 Quickbook。Quickbooks 无法启动,因为它已经在运行。只有 Quickbooks Accountant 和 Quickbooks Enterprise 可以打开多个公司文件。
由于我的应用程序正在尝试访问已打开的同一个公司文件,因此此消息具有误导性。查看 QBSDKLog.txt,我发现以下内容:
20131010.152314 I 5324 RequestProcessor ========= Started Connection =========
20131010.152314 I 5324 RequestProcessor Request Processor, QBXMLRP2 v11.0
20131010.152314 I 5324 RequestProcessor Connection opened by app named 'IOS Briefcase Sync'
20131010.152314 I 5324 RequestProcessor OS: Microsoft Windows 7 Professional Service Pack 1 (build 7601), 32-bit
20131010.152314 I 5324 RequestProcessor Current Process is elevated
20131010.152314 I …Run Code Online (Sandbox Code Playgroud)