簡體   English   中英

CRM 2011 Online C#檢查機會是否獲勝

[英]CRM 2011 Online C# Check if Opportunity is Won

我需要檢查插件在執行任何代碼之前是否已贏得機會。 據我了解,您無法在CRM在線部署中使用機會贏得的插件消息。

這是我的代碼片段:

//Get the target entity
Entity entity = (Entity)context.InputParameters["Target"];

OptionSetValue entityStatusCode =
(OptionSetValue)entity.Attributes["statuscode"];
if (entityStatusCode.Value == 3)
    {
//Code to execute if opportunity won
}

這會引發錯誤'給定的密鑰不在字典中'。 我用Google搜索,似乎無法找到解決方案。 任何人都可以解釋我在這里需要做什么嗎?

提前致謝。

(OptionSetValue)entity.Attributes["statuscode"];

我猜這條線會給你錯誤。

當一個插件觸發時,默認情況下它只提供在調用插件的事件中已更改的屬性。

換句話說,如果更新商機名稱,則會觸發插件,但屬性包僅包含name屬性。

所以statuscode這里沒有被傳遞,因此該代碼失敗,因為,作為異常說,它是不是在字典。

至於如何解決它,有點取決於你需要檢查機會是否贏得的原因。 但最簡單(但不一定最有效)的方法是回調CRM以獲取價值。

var entity = service.Retrieve(Target.LogicalName, Target.Id, new ColumnSet(true));
var entityStatusCode = (OptionSetValue)entity.Attributes["statuscode"];
if (entityStatusCode.Value == 3)
{
    //Code to execute if opportunity won
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM