0

最初の Dynamics Crm 2011 プラグインを作成しようとしています。

したがって、CRM11 SDK をダウンロードし、プラグインのサンプルを確認しました。ようやく最初のプラグインをインストールし、提供されたツールを使用して登録しました (少なくとも私にとっては、そのツールの学習曲線はかなり急です)。

基本から始めて、サンプルで提供されている「口座番号プラグイン」をまとめて、登録ツールを使用しました。すべてが正常にインストールされたと報告されましたが、新しいアカウントを作成すると、生成されたアカウント番号がまったく表示されませんでした。最初はプラグインが正しくインストールされていないと思っていましたが、アカウント番号が既に存在するとコードがエラーをスローすることに気づいた後、プラグインでエラーを発生させようとしました。これは初めて機能したので、インストールが正しいことをうれしく思います。

サンプル コードを見た後、生成されたアカウント番号を Dynamis Crm に保存する方法がわかりません。

// An accountnumber attribute should not already exist because it is system generated.

if (entity.Attributes.Contains("accountnumber") == false)    
{    
    // Create a new accountnumber attribute, set its value, and add
    // the attribute to the entity's attribute collection.

    Random rndgen = new Random();  
    entity.Attributes.Add("accountnumber", rndgen.Next().ToString());    
}    
else     
{    
    // Throw an error, because account numbers must be system generated.    
    throw new InvalidPluginExecutionException("The account number can only be set by the system.");    
}

他のいくつかのサンプルを調べてみると、新しいエンティティを作成するために呼び出されているように見える追加のコードがあることに気付きました。私はこれを調整し、それを新しい口座番号コードにコピーして展開し、口座番号が期待どおりに生成されました。

IOrganizationServiceFactory serviceFactory  = (IOrganizationServiceFactory)

    serviceProvider.GetService(typeof(IOrganizationServiceFactory));

IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);

service.Update(entity); // Originally - service.Create(entity);

これはサンプル コードのエラーですか、それとも何か間違っていますか? このコードが必要ない場合、エンティティはいつ変更をデータベースに送信しますか?

4

1 に答える 1

2

ちょうどそれを解決しました。このプラグインを「操作前」ステップとして登録する必要があります。

これは、登録ツールをデフォルトのままにしておくことを教えてくれます。「操作前」に設定すると、保存前にエンティティの設定が変更されます。したがって、save を再度呼び出す必要はありません。

于 2012-06-21T14:59:15.660 に答える