Partager via


Utiliser les outils XRM pour mettre à jour les données

 

Date de publication : novembre 2016

S’applique à : Dynamics CRM 2015

Il existe deux méthodes disponibles dans la classe CrmServiceClient pour mettre à jour les données dans Microsoft Dynamics 365: UpdateEntity et UpdateStateAndStatusForEntity.

Une action de mise à jour à l’aide de l’API des outils XRM exige une charge utile de données. La charge utile de données se manifeste sous la forme d’un objet Dictionary<string, CrmDataTypeWrapper>.CrmDataTypeWrapper est utilisé pour informer l’interface du type de gestion qu’il convient d’appliquer au point de données auquel vous faites référence.

UpdateEntity

Il s’agit de la méthode d’ancrage pour la mise à jour de tout enregistrement dans Dynamics 365, à l’exception de la définition du statut ou de l’état d’un enregistrement. Pour l’utiliser, vous devez connaître les informations suivantes : le nom de schéma de l’entité que vous souhaitez mettre à jour, le champ de clé primaire de l’entité que vous souhaitez mettre à jour, le GUID de l’enregistrement que vous souhaitez mettre à jour ainsi que le tableau de charge utile de données à mettre à jour en parallèle.

CrmServiceClient crmSvc = new CrmServiceClient(new System.Net.NetworkCredential("<UserName>", "<Password>", “<Domain>”),"<Server>", "<Port>", "<OrgName>");

// Verify that you are connected
if (crmSvc != null && crmSvc.IsReady)
{
    //Display the CRM version number and org name that you are connected to
    Console.WriteLine("Connected to CRM! (Version: {0}; Org: {1}", 
    crmSvc.ConnectedOrgVersion, crmSvc.ConnectedOrgUniqueName);

    // Update the account record
    Dictionary<string, CrmDataTypeWrapper> updateData = new Dictionary<string, CrmDataTypeWrapper>();
    updateData.Add("name", new CrmDataTypeWrapper("Updated Sample Account Name", CrmFieldType.String));
    updateData.Add("address1_city", new CrmDataTypeWrapper("Boston", CrmFieldType.String));
    updateData.Add("telephone1", new CrmDataTypeWrapper("555-0161", CrmFieldType.String)); 
    bool updateAccountStatus = crmSvc.UpdateEntity("account","accountid",_accountId,updateData);

    // Validate if the account record was updated successfully, and then display the updated information
    if (updateAccountStatus == true)
    {
        Console.WriteLine("Updated the account details as follows:");
        Dictionary<string, object> data = crmSvc.GetEntityDataById("account", accountId, null);
        foreach (var pair in data)
        {
            if ((pair.Key == "name") || (pair.Key == "address1_city") || (pair.Key == "telephone1"))
            {
                Console.WriteLine(pair.Key.ToUpper() + ": " + pair.Value);
            }
        }
    }
}
else
{
    // Display the last error.
    Console.WriteLine("An error occurred: {0}", crmSvc.LastCrmError);

    // Display the last exception message if any.
    Console.WriteLine(crmSvc.LastCrmException.Message);
    Console.WriteLine(crmSvc.LastCrmException.Source);
    Console.WriteLine(crmSvc.LastCrmException.StackTrace);

    return;
}

UpdateStateAndStatusForEntity

Cette méthode est utilisée pour définir l’état d’un enregistrement dans Dynamics 365. Par exemple, tous les enregistrements démarrent généralement avec un état « ouvert ». Le nom de l’état change en fonction du type d’enregistrement, voire des options de développeurs. Un devis, par exemple, possède plusieurs états et statuts possibles, Brouillon, Actif, Fermé, Perdu, Conclu.

Conseil

Vous pouvez utiliser le fichier OptionSets.cs dans le dossier SDK\SampleCode\CS\HelperCode du package de téléchargement du Kit de développement logiciel (SDK) pour afficher et utiliser les groupes d’options généraux disponibles pour différentes entités dans Dynamics 365. Pour plus d’informations sur ces groupes d’options généraux, voir Personnaliser les groupes d’options généraux.

La mise à jour de l’état d’une entité exige que vous connaissiez l’état et le statut cibles, que ce soit par les noms ou les ID. Les noms comme les ID sont accessibles en interrogeant les métadonnées pour l’entité et en observant les champs de statut et d’état. Dans cet exemple, nous vous montrerons comment définir le statut d’un enregistrement de compte sur Inactif.

CrmServiceClient crmSvc = new CrmServiceClient(new System.Net.NetworkCredential("<UserName>", "<Password>", “<Domain>”),"<Server>", "<Port>", "<OrgName>");

// Verify that you are connected
if (crmSvc != null && crmSvc.IsReady)
{ 
    //Display the CRM version number and org name that you are connected to
    Console.WriteLine("Connected to CRM! (Version: {0}; Org: {1}",
    crmSvc.ConnectedOrgVersion, crmSvc.ConnectedOrgUniqueName);

    // Here are the state and status code values
    // statecode = 1 ( Inactive ) 
    // statuscode = 2 ( Inactive ) 

    crmSvc.UpdateStateAndStatusForEntity("account" , accountId , 1 , 2 );

    // the same command using the second form of the method
    crmSvc.UpdateStateAndStatusForEntity("account" , accountId , "Inactive" , "Inactive");
}
else
{
    // Display the last error.
    Console.WriteLine("An error occurred: {0}", crmSvc.LastCrmError);

    // Display the last exception message if any.
    Console.WriteLine(crmSvc.LastCrmException.Message);
    Console.WriteLine(crmSvc.LastCrmException.Source);
    Console.WriteLine(crmSvc.LastCrmException.StackTrace);

    return;
}

Voir aussi

Exemple : Démarrage rapide de l’API des outils XRM
Utiliser les outils XRM pour se connecter à CRM
Utiliser les outils XRM pour exécuter des actions dans CRM
Utilisation des métadonnées d’attributs

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