我试图使用以下代码通过Intuit.IPP API (Interop.QBFC12)向供应商发出检查:
IMsgSetRequest messageSet = session.CreateMsgSetRequest("US", 7, 0);
ICheckAdd cheque = messageSet.AppendCheckAddRq();
cheque.AccountRef.ListID.SetValue(vendor.ListID.GetValue());
cheque.AccountRef.FullName.SetValue("myAccountName");
cheque.TxnDate.SetValue(DateTime.Today);
IMsgSetResponse responseSet = session.DoRequests(messageSet);
IResponse response = responseSet.ResponseList.GetAt(0);
responseType = (ENResponseType)response.Type.GetValue();
if (responseType == ENResponseType.rtCheckAddRq)
returnMessage = response.StatusMessage;结果response.StatusMessage =“无法找到请求中指定的对象80000005-1374598713”。指定的对象ID是我为供应商提取的ListID。
我的编码非常盲目,因为我发现IPP文档对版本12并没有很大帮助,或者是最新的。
我遗漏了什么?
发布于 2013-07-24 00:58:01
这是:
cheque.AccountRef.ListID.SetValue(vendor.ListID.GetValue());
cheque.AccountRef.FullName.SetValue("myAccountName");是什么导致了你的问题。
AccountRef节点用于指定帐户,而不是供应商。帐户是QuickBooks帐户图表( " Account“对象)中的内容。供应商是供应商列表中的内容(“供应商”对象),它们不是可互换的对象。
因为您已经设置了AccountRef/FullName:
cheque.AccountRef.FullName.SetValue("myAccountName");您不需要设置AccountRef/ListID。
您应该始终设置一个ListID或一个FullName --没有理由同时设置它们(这只是引用同一个对象的替代方法--它们都是QuickBooks的“外键”)。
您可能要做的是像您想要的那样设置AccountRef,但也要设置PayeeEntityRef。例如:
cheque.PayeeEntityRef.ListID.SetValue(vendor.ListID.GetValue());此外,关于这一点:
我的编码非常盲目,因为我发现IPP文档对版本12并没有很大帮助,或者是最新的。
IPP是一个与您所使用的完全不同的API。IPP文档不会对您有用,因为它与您使用的API不太接近。
您应该参考的是QuickBooks OSR:
还有QuickBooks SDK可下载的.EXE,它有大量相关的.EXE文档。
https://stackoverflow.com/questions/17821405
复制相似问题