Partager via


Exécuter la détection des doublons

 

Date de publication : janvier 2017

S’applique à : Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Il existe plusieurs façons de détecter des doublons une fois que vous avez activé la détection et publié les règles de détection des doublons.

Pour

Description

Détecter les doublons pour un enregistrement spécifié

Utilisez le message RetrieveDuplicatesRequest. Par exemple, vous pouvez utiliser ce message pour rechercher tous les contacts qui sont des doublons d’un enregistrement de compte particulier.

Détecter les doublons pour un type d’entité

Utilisez le message BulkDetectDuplicatesRequest. Ce message envoie une tâche asynchrone de détection des doublons qui s’exécute en arrière-plan. Le message BulkDetectDuplicates est utilisé pour rechercher les enregistrements en double pour un type d’entité spécifié en fonction de l’expression de requête passée dans cette demande de message. Les doublons sont détectés en fonction des règles de détection des doublons publiées pour le type d’entité. Les doublons détectés sont enregistrés en tant qu’enregistrements en double (DuplicateRecord) dans Microsoft Dynamics 365. Vous pouvez récupérer des enregistrements en double à l’aide de la méthode Retrieve ou la méthode RetrieveMultiple.

5000 doublons au maximum sont retournés par la tâche de détection des doublons.

Détecter les doublons durant les opérations Create et Update

Passez le paramètre facultatif de détection des doublons SuppressDuplicateDetection en ajoutant une valeur à la propriété Parameters des demandes de message CreateRequest et UpdateRequest. La valeur du paramètre SuppressDuplicateDetection détermine si l’opération Create ou Update peut être effectuée :

  • true – Créez ou mettez à jour l’enregistrement si un doublon est détecté.

  • false – Ne créez pas ni ne mettez à jour l’enregistrement si un doublon est détecté.

Notes

La transmission du paramètre facultatif CalculateMatchCodeSynchronously n’est pas requise. Les codes de correspondance utilisés pour détecter les doublons sont calculés de façon synchrone, quelle que soit la valeur passée dans ce paramètre.

Notes

Si le paramètre facultatif de détection des doublons a la valeur false et qu’un doublon est détecté, une exception est levée et l’enregistrement n’est pas créé ou mis à jour.

L’exemple suivant montre comment passer l’option de détection des doublons en tant que partie des demandes de message CreateRequest et 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);
}

Voir aussi

Détecter les données dupliquées
Activer la détection des doublons
Utiliser les messages (classes de demande et de réponse) avec la méthode Execute
Messages de détection des doublons

Microsoft Dynamics 365

© 2017 Microsoft. Tous droits réservés. Copyright