Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Quickbooks QBFC“无效票证参数”_Quickbooks_Qbxml_Qbfc - Fatal编程技术网

Quickbooks QBFC“无效票证参数”

Quickbooks QBFC“无效票证参数”,quickbooks,qbxml,qbfc,Quickbooks,Qbxml,Qbfc,从QBFC得到一个奇怪的错误。此代码失败: var qbRequest = sessionManager.CreateMsgSetRequest("US", 7, 0); qbRequest.Attributes.OnError = ENRqOnError.roeStop; var qbQuery = qbRequest.AppendCustomerQueryRq(); // Don't get al

从QBFC得到一个奇怪的错误。此代码失败:

        var qbRequest = sessionManager.CreateMsgSetRequest("US", 7, 0);
        qbRequest.Attributes.OnError = ENRqOnError.roeStop;
        var qbQuery = qbRequest.AppendCustomerQueryRq();                
        // Don't get all fields (would take forever) - just get these...
        qbQuery.IncludeRetElementList.Add("ListID");
        qbQuery.IncludeRetElementList.Add("Phone");
        qbQuery.IncludeRetElementList.Add("AltPhone");
        qbQuery.IncludeRetElementList.Add("Fax");
        var qbResponses = sessionManager.DoRequests(qbRequest);// <<- EXCEPTION:  INVALID TICKET PARAMETER !!!
然而,如果我只是在那里放一个延迟,它工作得很好。e、 g

        System.Threading.Thread.Sleep(1000);
        var qbResponses = sessionManager.DoRequests(qbRequest);// <<- WORKS FINE!!
我发现这一点是因为每当我在代码中设置断点来调试问题时,问题就会消失。然后我知道我可以在那里睡上一秒钟,然后模拟同样的行为。顺便说一句-半秒延迟没有帮助-仍然抛出异常

这让我抓狂。我在应用程序开始时初始化sessionManager,并在整个代码中重用它。除此之外,它在该应用程序中的其他任何地方都有效。我已经查看了请求和响应的原始XML,没有发现任何错误。响应只是有一个错误:数据文件不再打开。无法继续。但没有说明原因。数据文件是打开的,在这个异常之后,我可以用它做任何其他事情

我怀疑这与调用此代码有关。我有一个侦听器,用于侦听来自用于进程间通信的XDMessaging插件的消息。当侦听器收到消息时,事件调用此代码。但这段代码是在同一个应用程序和同一个线程中调用的,就像我有很多其他的QBFC代码一样,它们做的事情非常相似,没有任何问题。如果这是一个线程问题,我认为无论我是否睡眠一秒钟,错误都会发生


有人有什么想法吗?

您使用的是什么版本的QBSDK和什么版本的QuickBooks?尽管我在创建消息请求时指定了版本7,但我还是使用QBSDK 13进行了测试,版本为14.0 Enterprise R5P。我没有遇到任何问题或例外,没有延误。也许您的SessionManager出现了问题,因为您似乎已经打开了连接并在其他地方开始了会话

以下是我没有问题的代码:

QBSessionManager SessionMananger = new QBSessionManager();
SessionMananger.OpenConnection2("Sample", "Sample", ENConnectionType.ctLocalQBD);
SessionMananger.BeginSession("", ENOpenMode.omDontCare);
IMsgSetRequest MsgRequest = SessionMananger.CreateMsgSetRequest("US", 7, 0);
MsgRequest.Attributes.OnError = ENRqOnError.roeStop;
var qbQuery = MsgRequest.AppendCustomerQueryRq();
qbQuery.IncludeRetElementList.Add("ListID");
qbQuery.IncludeRetElementList.Add("Phone");
qbQuery.IncludeRetElementList.Add("AltPhone");
qbQuery.IncludeRetElementList.Add("Fax");
IMsgSetResponse MsgResponse = SessionMananger.DoRequests(MsgRequest);

for (int index = 0; index < MsgResponse.ResponseList.Count; index++)
{
    IResponse response = MsgResponse.ResponseList.GetAt(index);
    if (response.StatusCode != 0)
    {
        MessageBox.Show(response.StatusMessage);
    }
}