plugins duplicates dynamics-crm

plugins - Cómo identificar registros duplicados con un complemento en Dynamics CRM 2011



duplicates dynamics-crm (2)

Estoy buscando diseñar algo de lógica dentro de mi plugin de creación para la ''cuenta'' de la entidad.

Lo que hace es básicamente verificar los nombres de las cuentas e identifica los nombres de las cuentas que son duplicados en la creación.

Entonces, si hay un Nombre de cuenta, Barclays por ejemplo, y trato de crear esto de nuevo, voy a alertar al usuario con un mensaje de error de que esto se ha creado antes e impide que se agregue este registro.

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!."); } } } }

En el código anterior, simplemente estoy usando "recordNamesinCRM" como ejemplo, pero estoy seguro de que hay una función integrada o una forma de comparar en crear un nuevo nombre con el resto en el sistema o una manera de contar instancias recurrentes.


¿Conoces la detección de duplicados incorporada?

Ver los siguientes enlaces:

aunque los enlaces describen la detección duplicada de Dynamics CRM 4, siguen siendo válidos para Dynamics CRM 2011

Eche un vistazo al artículo Ejecutar detección de duplicados en Dynamics CRM 2011 SDK.

Puede usar el parámetro opcional SuppressDuplicateDetection o puede usar RetrieveDuplicatesRequest , aunque esto solo funcionará para los registros existentes.


Puede usar RetrieveDuplicatesRequest como en este ejemplo aquí:

/// <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; }

Consulte http://crm-edinburgh.com/2011/08/crm-sdk-using-detect-duplicates-settings-in-code/ para obtener un ejemplo.