【问题标题】:How to identify duplicate records with a plugin in Dynamics CRM 2011如何使用 Dynamics CRM 2011 中的插件识别重复记录
【发布时间】:2011-03-14 15:44:48
【问题描述】:

我希望在我的创建插件中为实体“帐户”设计一些逻辑。

它的作用基本上是检查帐户名称并识别创建时重复的帐户名称。

因此,如果有一个帐户名称,例如 Barclays,并且我尝试再次创建此帐户,我将通过错误消息提醒用户该帐户之前已创建,并阻止添加此记录。

public void Execute(IServiceProvider serviceProvider)
{
   var context = (IPluginExecutionContext)serviceProvider.GetService(typeof(Microsoft.Xrm.Sdk.IPluginExecutionContext));

   if (context.InputParameters.Contains("Target") &&
       context.InputParameters["Target"] is Entity)
   {
      // Obtain the target entity from the input parmameters.
      Entity entity = (Entity)context.InputParameters["Target"];

      if (entity.LogicalName == "account")
      {
         bool x = true;

         if (entity.Attributes.Contains("Name") != recordNamesinCRM)
         {                    
         }
         else 
         {
           throw new InvalidPluginExecutionException("You Cannot Have Duplicate Country Codes!.");
         }          
      } 
   }
}

在上面的代码中,我只是使用“recordNamesinCRM”作为示例,但我确信有一个内置函数或方法可以在创建新名称时与系统中的其余部分进行比较,或者一种计算重复出现实例的方法.

【问题讨论】:

  • 你最后找到解决方案了吗?我正在考虑根据联系人实体中唯一的电子邮件地址字段做类似的事情

标签: plugins duplicates dynamics-crm


【解决方案1】:

您可以在此处按照此示例使用 RetrieveDuplicatesRequest:

    /// <summary>
    /// Checks for duplicate Guid
    /// </summary>
    /// <param name="account"></param>
    /// <returns>First duplicate account id, if any duplicates found, and Guid.Empty if not</returns>
    public Guid DuplicateExists(Account account)
    {
        RetrieveDuplicatesRequest request = new RetrieveDuplicatesRequest();
        request.BusinessEntity = account;
        request.MatchingEntityName = Account.EntityLogicalName;
        request.PagingInfo = new PagingInfo();
        request.PagingInfo.PageNumber = 1;
        request.PagingInfo.Count = 1;

        RetrieveDuplicatesResponse response = (RetrieveDuplicatesResponse)ServiceProxy.Execute(request);
        return response.DuplicateCollection.Entities.Count > 0 ? response.DuplicateCollection.Entities[0].Id : Guid.Empty;
    }

有关示例,请参阅 http://crm-edinburgh.com/2011/08/crm-sdk-using-detect-duplicates-settings-in-code/

【讨论】:

    【解决方案2】:

    你知道内置的重复检测吗?

    查看以下链接:

    虽然链接描述了 Dynamics CRM 4 的重复检测,但它们对于 Dynamics CRM 2011 仍然有效

    查看 Dynamics CRM 2011 SDK 中的文章 Run Duplicate Detection

    您可以使用可选参数SuppressDuplicateDetection,也可以使用RetrieveDuplicatesRequest,尽管这仅适用于现有记录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-31
      • 1970-01-01
      相关资源
      最近更新 更多