1

CRM 2011で新しい連絡先レコードを手動で作成すると、通貨フィールドが適切に作成され、「$」が表示され、これらのフィールドにデータを入力してレコードを保存できます。

IOrganizationServiceをインスタンス化し、プログラムで連絡先レコードを作成すると、通貨フィールドを除くすべてが機能します。私が見ることができるエラーは生成されません。レコードが作成され、他のすべてのフィールドに値が入力されますが、通貨フィールドは空白のままになります。

プログラムでレコードを作成した後でこれらの通貨フィールドを手動で更新しようとすると、次 のエラーが発生します。金額フィールドに値が存在する場合は、通貨が必要です。通貨を選択して、再試行してください。

私のユーザーレコードは、通貨=米ドルで設定されています。

これがCRMでは機能するのにC#では機能しないのはなぜですか?それを機能させるために何をする必要がありますか?

4

4 に答える 4

2

通貨の設定

取得: -

var totalValue = ((Money)item.Attributes[attributeName]).Value;

役職: -

newSalesOrder[attributeName] = new Money((decimal)totalValue);
于 2018-02-20T05:31:33.680 に答える
0

トランザクション currencyid 型は、 http://msdn.microsoft.com/en-us/library/gg328530.aspxの連絡先エンティティ メタデータによると「ルックアップ」です。これはルックアップ タイプであるため、別の方法で値を渡す必要があります。Web サービスを介してレコードを作成する場合、CRM Web サービスで .create コマンドを呼び出す前に、連絡先エンティティの属性に渡す通貨の EntityReference を作成する必要があります。文字列として渡そうとしても、エラーは発生せず、説明したように受け入れられません。私はまだ CRM Web サービスに慣れていませんが、これを試してみて、機能するかどうかを確認してください。

おそらく次のようになります: (参照用のメタデータhttp://msdn.microsoft.com/en-us/library/gg327883.aspx )

EntityReference currencyType = new EntityReference();
currencyType.Id = "(The Guid Of The Currency Type Goes Here)";
currencyType.LogicalName = "transactioncurrency";

contactGoingToCrm.Attributes.Add(new keyvaluepair<string,object>("currencyid",currencyType));
于 2013-10-24T13:34:38.217 に答える