Интегрированное приложение Quickbooks не может открыть соединение, когда Quickbooks уже открыт

У меня есть «Интегрированное приложение» Quickbooks, написанное на С# с использованием QBFC 12.0. Он установлен и корректно работает на ряде сайтов с несколькими версиями Quickbooks. Сегодня я попытался установить его на новый сайт с Quickbooks 2012 Premiere. Чтобы авторизовать приложение для подключения, необходимо открыть QB, войдя в систему как администратор QB, а затем инициировать подключение из интегрированного приложения. Это нужно делать каждый раз, когда я устанавливаю приложение на новый сайт. В этом случае, когда я пытаюсь установить соединение, я получаю следующее сообщение об ошибке:

Не могу открыть QuickBooks. 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   5324    RequestProcessor    Current User is in AdminGroup
20131010.152314 I   5324    RequestProcessor    Current Process is ran as Admin
20131010.152314 I   5324    RequestProcessor    Current Process Integrity Level : 3000
20131010.152314 I   5324    RequestProcessor    Getting the IUnknown COM instance of QB
20131010.152514 E   5324    RequestProcessor    An internal error occured while looking for a running instance of QuickBooks and getting its COM reference. Cannot continue. hr = 80080005
20131010.152514 E   5324    RequestProcessor    Could not find or create an instance of QuickBooks using InstanceFinder hr = 8004041c
20131010.152514 I   5324    RequestProcessor    Connection closed by app named 'IOS Briefcase Sync'
20131010.152514 I   5324    RequestProcessor    ========== Ended Connection ==========

Есть идеи, что может быть причиной ошибок COM?


person AndyL    schedule 10.10.2013    source источник
comment
Я думаю, что это может быть связано с stackoverflow.com/questions/17409766/ . Убедитесь, что вы установили последнее обновление для QB 2012. Я бы также посоветовал выполнить обновление в программе (Справка›Обновить QuickBooks›Обновить сейчас), так как внутреннее обновление загружает больше, чем файлы обновления на веб-сайте Intuit.   -  person TravestyOfCode    schedule 14.10.2013
comment
Вы решили эту проблему? Если да, пожалуйста, дайте мне знать, как это сделать. Спасибо   -  person user1253073    schedule 12.11.2013


Ответы (1)


У меня была аналогичная проблема, я получал сообщение «Не удается открыть Quickbooks. Quickbooks не запускается, потому что он уже запущен». ошибка.

В некоторых ситуациях я также получал сообщение «Если файл данных компании QuickBooks не открыт, вызов метода BeginSession должен включать имя файла данных». когда в QuickBooks определенно действительно был открыт файл данных.

В конце концов я отследил его до файла QBINSTANCEFINDER17.INI (C:\ProgramData\INTUIT\QuickBooks\QBINSTANCEFINDER17.INI). Я очистил записи в этом файле, и теперь все работает.

QuickBooks использует ini-файл QBINSTANCEFINDER для отслеживания открытых экземпляров. По-видимому, когда процесс QBW32.exe аварийно закрывается, записи в этом файле не всегда очищаются должным образом. Обычно это не вызывает проблем, но может при определенных обстоятельствах.

РЕДАКТИРОВАТЬ: комментарий...

Я также обнаружил, что в некоторых ситуациях должна быть проблема с токеном безопасности (или что-то подобное). В 64-разрядной системе Windows 7 я обнаружил, что не могу получить доступ к QuickBooks из своего приложения, когда оно запущено под управлением отладчика (Delphi 2007). Однако тот же файл .EXE, скопированный в его обычную установочную папку в Program Files (x86) при запуске, может получить доступ к QuickBooks без проблем.

В противном случае (запустите из отладчика или даже просто из моей папки разработки) всегда происходит то, что работающий экземпляр QuickBooks не обнаруживается, а вызовы QBXML вызывают запуск второго экземпляра QuickBooks, что приводит к ошибкам, которые вы описываете.

person Mark Wilsdorf    schedule 09.10.2014