Ejecutar detección de duplicados

 

Publicado: noviembre de 2016

Se aplica a: Dynamics CRM 2015

Hay varios métodos para realizar la detección de duplicados una vez activada la lista y publicadas las reglas de detección de duplicados.

Acción

Descripción

Detectar duplicados para un registro especificado

Use el mensaje de RetrieveDuplicatesRequest. Por ejemplo, puede usar este mensaje para buscar todos los contactos que son duplicados de un determinado registro de cuenta.

Detectar duplicados para un tipo de entidad

Use el mensaje de BulkDetectDuplicatesRequest. Este mensaje envía un trabajo de detección de duplicados asincrónico que se ejecuta en segundo plano. El mensaje de BulkDetectDuplicates se usa para buscar los registros duplicados de un tipo determinado de entidad en función de la expresión de consulta pasada en esta solicitud de mensajes. Los duplicados se detectan mediante las reglas de duplicados publicadas para el tipo de entidad. Los duplicados detectados se almacenan como un registro duplicado de registros(DuplicateRecord) en Microsoft Dynamics 365. Puede recuperar los registros duplicados mediante el método de Retrieve o el método de RetrieveMultiple.

El trabajo de detección de duplicados devuelve un máximo de 5000 duplicados.

Detectar duplicados durante las operaciones Create y Update

Pase el parámetro opcional de detección de duplicados de SuppressDuplicateDetection al agregar un valor a la propiedad de ParametersCreateRequest y a las solicitudes de mensajes de UpdateRequest. El valor de parámetro de SuppressDuplicateDetection determina si la operación de Create o de Update puede completarse:

  • true: Crear o actualizar el registro, si se encuentra un duplicado.

  • false: No crear o actualizar el registro, si se encuentra un duplicado.

Nota

No es obligatorio pasar los parámetros opcionales de CalculateMatchCodeSynchronously. Los códigos de coincidencia usados para detectar duplicados se calculan de forma sincrónica independientemente del valor pasado en este parámetro.

Nota

Si el parámetro opcional de detección de duplicados se establece en false y se encuentra un duplicado, se genera una excepción y el registro no se crea ni se actualiza.

En el siguiente ejemplo se muestra cómo pasar la opción de detección de duplicados como una parte de las solicitudes de mensaje de CreateRequest y de UpdateRequest:


// Connect to the Organization service. 
// The using statement assures that the service proxy will be properly disposed.
using (_serviceProxy = new OrganizationServiceProxy(serverConfig.OrganizationUri, serverConfig.HomeRealmUri,serverConfig.Credentials, serverConfig.DeviceCredentials))
{
    // This statement is required to enable early-bound type support.
    _serviceProxy.EnableProxyTypes();

    _service = (IOrganizationService)_serviceProxy;

    CreateRequiredRecords();

    // Create and account record with the named Proseware, Inc. and already existing Account Number.
    Account account = new Account 
    {
        Name = "Proseware, Inc.",
        AccountNumber = "ACC005"
    };

    // Create operation by suppressing duplicate detection
    CreateRequest reqCreate = new CreateRequest();
    reqCreate.Target = account;
    reqCreate.Parameters.Add("SuppressDuplicateDetection", true); // Change to false to activate the duplicate detection.
    CreateResponse createResponse = (CreateResponse)_service.Execute(reqCreate);
    _dupAccountId = createResponse.id;
    Console.Write("Account: {0} {1} created with SuppressDuplicateDetection to true, ", 
        account.Name, account.AccountNumber);

    // Retrieve the account containing with its few attributes.
    ColumnSet cols = new ColumnSet(
        new String[] { "name", "accountnumber"});

    Account retrievedAccount = (Account)_service.Retrieve("account", _dupAccountId, cols);
    Console.Write("retrieved, ");

    // Update the existing account with new account number.
    retrievedAccount.AccountNumber = "ACC006";                   

    // Update operation – update record, if a duplicate is not found.
    UpdateRequest reqUpdate = new UpdateRequest();
    reqUpdate.Target = retrievedAccount;
    reqUpdate["SuppressDuplicateDetection"] = false; // Duplicate detection is activated.

    // Update the account record.
    UpdateResponse updateResponse = (UpdateResponse)_service.Execute(reqUpdate);
    Console.WriteLine("and updated.");

    DeleteRequiredRecords(promptforDelete);
}

Ver también

Detectar datos duplicados
Habilitar detección de duplicados
Usar mensajes (clases de respuesta y solicitud) con el método Execute
Mensajes de detección de duplicados

© 2017 Microsoft. Todos los derechos reservados. Copyright