2009-07-23 13 views
4

Quickbooksで従業員のタイムエントリを別のデータベースに同期させるC#アプリケーションを作成するという苦労の仕事を与えられました。私はQBプログラミングの新しさから、顧客のリストを取得し、次に各顧客のためのジョブを取得し、次に従業員を取得するなど、基本的なタスクを実行しようとしています。私はSDKのドキュメントを読んできましたが、私は今見ている例が私にとって現時点ではあまりにも進んでいるので、詳細についてはまだあまり詳しくは分かりません.-PQuickbooks QBFC(8.0 SDK)を使用して顧客、仕事、および雇用者のリストを取得する方法

初心者のための顧客のリストを提供するコードスニペットを求めています。

 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(); 

誰も私のために、「ここに顧客のリストを取得するためのコード」に記入できますか?A:ここで私が持っているコードですか事前にどうもありがとうございました!

ビクター

答えて

7

[OK]を、私は欠けていように思える:

ICustomerQuery customers = customerSet.AppendCustomerQueryRq(); 

をこれは一歩前進である各顧客に関連するすべてのデータを生成します。顧客のためにXMLを解析するのは簡単ですが、各タスクのサブノードがないため、個々のタスク/ジョブを解析するのは面倒です。基本的にすべての基本的な顧客情報(アドレス、課金顧客名にコロンを付加した「FullName」という名前のプロパティーと、タスクタイトル(サブタスクタイトルなどの別のコロンが後に続く)が続きます。私は、より良いxmlレスポンスを得るためにリクエストクエリを使って巧妙なものがあるかどうか疑問に思っています(たとえば、返されるプロパティを指定し、与えられた顧客の各タスクのサブノードの作成を強制するなど)コメントは高く評価されます。上記のリストに指定された

+0

はい、クエリから戻って通信量を制限する要素を指定できます。クエリを使用して作成することもできますが、別の手順で行う必要があります(正しく理解していれば)。 SDKメソッドではなく、XMLに精通していますので、正確な詳細を教えることはできません。 – Yishai

+0

FullName、Addresses、City、State、Postalcodeなどのすべての顧客の詳細が必要なので、どのタイプのリクエストが使用されているのですか。私はこのタイプのリクエスト "CustomerQueryRq"を使用しました。私はすべての顧客の詳細を得ることができません。 –

7
customers.IncludeRetElementList.Add("IsActive"); 
customers.IncludeRetElementList.Add("ListID"); 
customers.IncludeRetElementList.Add("EditSequence"); 
customers.IncludeRetElementList.Add("Name"); 
customers.IncludeRetElementList.Add("ParentRef"); 

フィールドだけのQuickBooksから返されます - 正しい場合には、正しい文字列を使用することは非常に重要である - 何かが間違っている場合はエラーメッセージが発生しません。サブフィールドを指定することはできません(たとえば、Addressブロック内のCity; Addressブロック全体を取得する必要があります)。カスタムフィールドの場合は、所有者IDも指定する必要があります(アプリケーションに非公開のカスタムフィールドには0を使用する必要があります)。

customers.IncludeRetElementList.Add("DataExtRet"); //will return non-private and/or private data extension fields depending on the OwnerIDList, below 
customers.OwnerIDList.Add("0"); // required for non-private data extn fields 
customers.OwnerIDList.Add("Your Appln GUID"); // Use this to get private data extns for the Appln identified by the GUID 
+0

IncludeRetElementListを指定すると、頑強なDataExtRetのヒントが+1になります。 –

+0

Upvoted。 OwnerIDList = 0はちょうど私のために魔法をしました。 –

関連する問題