2017-01-02 56 views
1

我有一個在停用記錄時觸發的插件。CRM 2016停用插件在記錄合併時不會觸發

下面是代碼 -

if (context.InputParameters.Contains("EntityMoniker") && context.InputParameters["EntityMoniker"] is EntityReference) 
      { 
       EntityReference EntityRef = (EntityReference)context.InputParameters["EntityMoniker"]; 

//code continues 

}

,我已經註冊了SETSTATE和SetStateDynamicEntity步驟的插件。

插件在記錄直接激活或停用時觸發。但是,當兩條記錄合併時,另一條記錄被取消激活,此時停用插件不起作用。

來自同一博客收到建議後 -

我註冊了相同的插件與代碼中的一些修改,在「合併」事件。

下面是代碼 -

if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is EntityReference) 
      { 

       EntityReference EntityRef = (EntityReference)context.InputParameters["Target"]; 


       if (EntityRef.LogicalName != "account") 
        return; 


       SubOrdinateRecord = (Guid)context.InputParameters["SubordinateId"]; 

後,但是我得到的從屬記錄我需要得到它的相關記錄,並停用

但是我無法獲得相關記錄。

請提出建議。

回答

0

您的觀察結果是正確的。一個MergeRequest不會觸發一個SetStateRequest,所以你將不得不在兩個消息上註冊一個插件。

+0

謝謝您的回覆。但是,在合併時註冊時,它會在兩個記錄上觸發。我怎樣才能防止這個? –

+0

你的意思是「它會在兩個記錄上激發」?只有1個MergeRequest會觸發。然後,您可以查看[MergeRequest.SubordinateId](https://msdn.microsoft.com/en-us/library/microsoft.crm.sdk.messages.mergerequest.aspx)以獲取將被停用的記錄的GUID合併期間。 –

+0

好吧,你的意思是我需要在合併事件上註冊插件,然後在插件代碼中找到subordinateid? –

相關問題