Compartilhar via


Executar detecção de duplicidades

 

Publicado: novembro de 2016

Aplicável a: Dynamics CRM 2015

Há várias maneiras de executar a detecção de duplicidades após habilitar e publicar as regras de detecção de duplicidades.

Ação

Descrição

Detectar duplicidades para um registro específico

Use a mensagem RetrieveDuplicatesRequest. Por exemplo, você pode usar esta mensagem para localizar todos os contatos que estão duplicados de um determinado registro de conta.

Detectar duplicidades para um tipo de entidade

Use a mensagem BulkDetectDuplicatesRequest message. Esta mensagem envia um trabalho de detecção de duplicidades assíncronos que é executado em segundo plano. A mensagem BulkDetectDuplicates é usada para localizar registros duplicados de um determinado tipo de entidade com base na expressão de consulta transmitida da solicitação da mensagem. As duplicidades são detectadas de acordo com as regras de duplicidades publicadas para o tipo de entidade. As duplicidades detectadas são armazenadas como registros duplicados (DuplicateRecord) no Microsoft Dynamics 365. Você pode recuperar registros duplicados usando o método Retrieve ou o método RetrieveMultiple.

Um máximo de 5.000 duplicidades são retornadas pelo trabalho de detecção de duplicidades.

Detectar duplicidades durante as operações Create e Update

Transmitir o parâmetro opcional de detecção de duplicidades SuppressDuplicateDetection adicionando um valor à propriedade Parameters das solicitações de mensagem CreateRequest e UpdateRequest. O valor do parâmetro SuppressDuplicateDetection determina se a operação Create ou de Update pode ser concluída:

  • true – cria ou atualiza registro, se uma duplicidade for encontrada.

  • false - não cria ou atualiza registro, se uma duplicidade for encontrada.

Observação

A transmissão do parâmetro opcional CalculateMatchCodeSynchronously não é obrigatória. Os códigos de correspondência usados para detectar duplicidades são calculados assincronamente independentemente do valor transmitido nesse parâmetro.

Observação

Se o parâmetro opcional de detecção de duplicidades estiver definido para false e uma duplicidade for encontrada, uma exceção é lançada e o registro não será atualizado ou criado.

O exemplo a seguir mostra como transmitir a opção de detecção de duplicidades como parte das solicitações de mensagem CreateRequest e 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);
}

Confira Também

Detectar dados duplicados
Habilitar detecção de duplicidades
Usar mensagens (classes de solicitação e resposta) com o método Execute
Mensagens de detecção de duplicidades

© 2017 Microsoft. Todos os direitos reservados. Direitos autorais