2011-08-16 10 views
8

私の研究から、基本的に3つのオプションがあるように見えます。C#コードのquickbooksと統合する最良の方法は何ですか?

1:COMを使用して
2:サードパーティ製のコンポーネントを使用して(とそこに表示されることであることがかなりの数)

これらの各オプションは、問題の提示:Webサービスと
3 Webコネクタを使用私はWindowsサービスから統合する必要があるので、このソリューションは私にとって非常に厄介であると思う。
3:これらのソリューションの中には、かなり高価なものがあります。

私はサードパーティのルートを移動する必要がありますするつもりですし、私の心の中で2人のフロントランナーがあるように見えます:

1:QODBC(http://www.qodbc.com/usa.html)
2:次のようにAccessBooks(http://www.synergration.com/AccessBooksUpdater/default.aspx)

私の質問、親愛なる読者は、以下のとおりです。

1:どのソリューション(COM、Webサービス、どのサードパーティー)使用しますか?
2:なぜあなたは他のオプションよりもそれを選択しますか?
3:私が逃した他の選択肢はありますか?

+1

Windowsサービスの場合、COM相互運用機能は、それらの中から最善の解決策のようです。 –

+0

それは少し面倒かもしれないという事実にもかかわらず、COMを使用すると何が問題になりますか? –

+0

@JP、私たちはそれをビジネス要件と呼ぶ – iamkrillin

答えて

3

私はそれが明らかにQuickBooksのインテグレータの製品を作ると同じ人々

私はそれを選んだ理由のことで作られる「QuickBooksのADO.NETデータプロバイダ」と呼ばれる上に言及していない他の製品と一緒に行くことにしました...

1)それはあなたがリモートサーバーをインストール
リモートアクセスコンポーネントを持っており、リモートアクセスコンポーネントがサービスとして実行することができ、ネットワーク

2)上のどこからでもQuickBooksのデータにアクセスすることができます
途切れる)がQuickBooksのデータ
4へのSQLスタイルのインターフェイスを提供します)

3を言ったあなたは、ソースコードまたは.NETのために事前にパッケージ化何かを探している場合は、データアクセス

+1

COMを避けることが難しい場合、私はあなたに言いたいことはありませんが、QBを自動化するために使用するほとんどすべての方法が要件を破ります。 QBのAPI *は* COMであり、使用する抽象概念が最終的にCOMのレイヤーの上にあるかどうかにかかわらずです。つまり、これはIIFファイルのIM /エクスポートには適用されません。 – xanadont

+0

これはわかりました。要件は、COMで隠されていないということでした – iamkrillin

1

動作しない場合がありますが、最初の攻撃の方向は、Intuit developer centerにあるQuickbooks SDKです。

+0

intuitデベロッパーセンターは、私が研究を行った場所です。彼らはCOMインターフェイスとWebサービスコネクタを提示しています。また、さまざまなサードパーティコンポーネントもリストしています。 – iamkrillin

2

私は、自分が行っていたプロジェクトでnSoftwareのQuickBooksインテグレータを使用しました。それはQuickBooks SDKを使用するより簡単ですし、サポートは素晴らしいです。その製品は約8年間使用されています。

http://www.nsoftware.com/ibiz/quickbooks/

+0

リモートコネクタをサービスとして実行できるかどうか分かりませんか?あなたはいつも同期を利用できるようにする必要がありましたか?もしそうなら、どのようにしてコネクター・コンポーネントを回避しましたか? – iamkrillin

+0

しばらく前に使用していたときに、データベース接続を開くような気がしました。顧客を追加し、その後に製品を追加し、次に請求書を顧客に追加し、次に請求書の行を追加し、接続を閉じます。 –

7

私は友人のためのインポートツールを開発していたので、私はQuickbooksのSDKを使用して、我々は、サードパーティのライブラリを購入するの贅沢を持っていませんでした。

私はWebサービスとして開発を開始しましたが、Quickbooks SDKの再配布可能ファイルをサーバーに展開する必要があるだけでなく、Quickbooks自体をインストールする必要もありました。クイックブックでは、ダイアログボックスが表示され、サーバー上では問題が発生します。

このダイアログが開いていれば、Quickbooks SDKはそのダイアログボックスへの接続を拒否します。

私は純粋なC#Winformアプリケーションとしてやってしまいました。そこから、それはむしろストレートフォワードです。プログラムの中心に

は、セッションおよびメッセージその後

public static class Quickbooks 
{ 
    public static QuickbookSession CreateSession() 
    { 
     return new QuickbookSession(); 
    } 
} 

public class QuickbookSession : IDisposable 
{ 
    /// <summary> 
    /// Initializes a new instance of the <see cref="QuickbookSession"/> class. 
    /// </summary> 
    internal QuickbookSession() 
    { 
     this.SessionManager = new QBSessionManager(); 

     this.SessionManager.OpenConnection2(
      ConfigurationManager.AppSettings["QuickbooksApplicationId"], 
      ConfigurationManager.AppSettings["QuickbooksApplicationName"], 
      Utils.GetEnumValue<ENConnectionType>(ConfigurationManager.AppSettings["QuickbooksConnectionType"])); 

     var file = Quickbook.QuickbookDatabaseFilePath; 
     if (string.IsNullOrEmpty(file)) 
     { 
      file = ConfigurationManager.AppSettings["QuickbooksDatabaseLocalPath"]; 
     } 

     this.SessionManager.BeginSession(file, Utils.GetEnumValue<ENOpenMode>(ConfigurationManager.AppSettings["QuickbooksSessionOpenMode"])); 
    } 

    /// <summary> 
    /// Gets the Quickbook session manager that is owning this message. 
    /// </summary> 
    public QBSessionManager SessionManager { get; private set; } 

    public QuickbookMessage CreateMessage() 
    { 
     return new QuickbookMessage(this.SessionManager); 
    } 

    public void Dispose() 
    { 
     Dispose(true); 
     GC.SuppressFinalize(this); 
    } 

    protected virtual void Dispose(bool disposing) 
    { 
     if (disposing) 
     { 
      // get rid of managed resources 
     } 

     this.SessionManager.EndSession(); 
     this.SessionManager.CloseConnection(); 

     System.Runtime.InteropServices.Marshal.ReleaseComObject(this.SessionManager); 
    } 
} 

を扱っquickbookセッションクラスだった、それは、セッションを作成し、メッセージを作成し、別のクエリを追加の問題簡単でした。

using(var session = Quickbooks.CreateSession()) 
{ 
    // Check if the job already exist 
    using (var message = session.CreateMessage()) 
    { 
     var jobQuery = message.AppendCustomerQueryRq(); 
     jobQuery.ORCustomerListQuery.CustomerListFilter.ORNameFilter.NameFilter.Name.SetValue("something"); 
     jobQuery.ORCustomerListQuery.CustomerListFilter.ORNameFilter.NameFilter.MatchCriterion.SetValue(ENMatchCriterion.mcContains); 

     var result = message.Send(); 

     // do stuff here with the result 
    } 
} 

このコードは、Quickbooksの多くの落とし穴からの弾圧ではありません。 Quickbooks SDKもやや遅いです。たとえば、サプライヤのリストを取得するには、約1000のサプライヤに対して約2分かかります。

+1

統合が同じ会社ファイルにある場合、またはファイルが既にアプリケーションの署名との統合を受け入れるように設定されている場合、ダイアログは表示されません。ファイルがalways-allowで設定されている限り。 – xanadont

+0

QuickbooksがAuthorized Applicationダイアログ以外のダイアログを表示する理由は非常に多いです。 –

0

をスピードアップするためにいくつかのオートマジックキャッシングをい、Kentico、EktronおよびnopCommerceコネクタがQuickBooks用に存在します。私のstoreをチェックしてください。

関連する問題