1

アプリケーションに書き戻し機能を追加しようとしています。Java SDK を使用しています。既存の顧客を更新するために 2 つの方法を試しています

方法 1

  1. customerQuery を使用して顧客オブジェクトを取得する
  2. 同じ顧客オブジェクトを使用して更新します
  3. 正常に更新されました。

方法 2

  1. 新しい顧客オブジェクトを作成する
  2. 新しく作成されたオブジェクトの SetId() メソッドを使用して ID を設定します
  3. 顧客を更新する
  4. 次の例外を取得する

-2001Error Detail :: cvc-complex-type.2.4.a: 要素「MiddleName」で始まる無効なコンテンツが見つかりました。'{" http://www.intuit.com/sb/cdm/v2 ":SyncToken, " http://www.intuit.com/sb/cdm/v2 ":MetaData, " http://wwwのいずれか.intuit.com/sb/cdm/v2 ":ExternalKey, " http://www.intuit.com/sb/cdm/v2 ":Synchronized, " http://www.intuit.com/sb/cdm/v2 ":AlternateId, " http://www.intuit.com/sb/cdm/v2 ":CustomField, " http://www.intuit.com/sb/cdm/v2 ":Draft, " http://www .intuit.com/sb/cdm/v2 ":ObjectState, " http://www.intuit.com/sb/cdm/v2 ":PartyReferenceId, "":TypeOf}' が予期されます。com.intuit.ds.qb.IDSException: エラー (-2001): cvc-complex-type.2.4.a: 要素 'MiddleName' で始まる無効なコンテンツが見つかりました。'{" の 1 つhttp://www.intuit.com/sb/cdm/v2 ":SyncToken, " http://www.intuit.com/sb/cdm/v2 ":MetaData, " http://www.intuit.com/ sb/cdm/v2 ":ExternalKey, " http://www.intuit.com/sb/cdm/v2 ":Synchronized, " http://www.intuit.com/sb/cdm/v2 ":AlternateId, " http://www.intuit.com/sb/cdm/v2 ":CustomField, " http://www.intuit.com/sb/cdm/v2 ":Draft, " http://www.intuit.com/ sb/cdm/v2 ":ObjectState, " http://www.intuit.com/sb/cdm/v2 ":PartyReferenceId, "http://www.intuit.com/sb/cdm/v2 ":TypeOf}' が期待されます。

方法 1 は完全に機能しています。しかし、私は方法 2 に疑問を持っています.最初の方法は正しいですか? 2番目の方法の問題は何ですか?

4

1 に答える 1

3

方法 2

新しく作成されたオブジェクト更新顧客の SetId() メソッドを使用して、新しい顧客オブジェクト セット Id を作成します。次の例外を取得します。

SyncToken 値を提供していないため、この ^^^ は機能しません。

ドキュメントを見て、常に表示される SyncToken タグに特に注意して、QuickBooks の顧客の例の更新を見てください。

QuickBooks で更新/変更操作を行うときは常に、最新のSyncToken タグを提供する必要があります。つまり、顧客を更新するには、まずクエリを実行して最新の SyncToken 値を取得し、mod/update リクエストで SyncToken を設定してから、リクエストを送信する必要があります。

SyncTokens の詳細については、QuickBooks 統合 wikiを参照してください。

于 2013-02-19T13:06:52.187 に答える