2017-12-12 18 views
0

Dynamics CRM 365のプラグインに問題があります。 アカウントとウェブサイトの2つのエンティティがあります。アカウントエンティティには、ウェブサイトエンティティに関連するサブグリッド。 私の仕事は、アカウントフォームのサブグリッドから新しいウェブサイトエンティティの作成後に実行されるプラグインを実行することです。プラグインは、作成した新しいウェブサイトレコードのテキストフィールドをアカウントフォームのウェブサイトテキストフィールドにコピーする必要があります。プラグインを使用してプライマリエンティティではないレコードのフィールドを更新

私は、プライマリエンティティとして のコードをウェブサイトエンティティのプラグインとして登録し、新しい作成されたウェブサイトに必要なファイルを読み込みます。私の問題はウェブサイトのフィールドをアカウントで更新できないことです。

マイコード:更新文に達し

var AccountId = entity.GetAttributeValue<EntityReference>("new_accountid"); 
var WebsiteDomain = entity.Attributes["new_url"].ToString(); 
    if (WebsiteDomain != null && WebsiteDomain != "" && AccountId != null && AccountId.Id!=null) 
    {      
     try 
     { 
      Entity obj = new Entity("account", new 
      Guid(AccountId.Id.ToString())); 
      obj["websiteurl"] = WebsiteDomain; 
      service.Update(obj); 
     } 
     catch (Exception e) 
     {     
      throw; 
     } 
    } 

エラー: error

+0

ウェブサイトurlは正しいスキーマ名ではありません。 –

+0

いいえ、このフィールドのスキーマ名はwebsiteurl – Alea

+0

です。このコードでは、辞書からのキーは、new_url new_accountidまたはwebsiteurlの3つしか使用できません。それはデバッグによって特定することができます。あなたは次に何をすべきかを知っていますか? –

答えて

1

は、私はそれを見落とし。この上記の行で

var WebsiteDomain = entity.Attributes["new_url"].ToString(); 

は、あなたが常にある& new_urlキーがされると仮定し .ToString()を変換しています。これは、キーが間違っているか、nullの可能性があるため、エラーが発生しやすくなります。

nullチェックまたは確認なしAttributes.Containsこのような属性キーは使用しないでください。

安全にGetAttributeValueを使用することができます。 Read Tips

+0

もう一つのアプローチは、 'new_url'が常に属性バッグに存在するようにPOSTイメージを使うことです – jasonscript

関連する問題