Partilhar via


Usar as ferramentas do XRM para atualização de dados

 

Publicado: janeiro de 2017

Aplicável a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Existem vários métodos disponíveis na classe CrmServiceClient para recuperar os dados em Microsoft Dynamics 365: UpdateEntity e UpdateStateAndStatusForEntity.

Uma ação de atualização que usa a API de Ferramentas do XRM requer uma carga de dados. A carga de dados toma a forma de um objeto de dicionário <string, CrmDataTypeWrapper>. O CrmDataTypeWrapper é usado para informar a interface sobre que tipo de tratamento precisa ser aplicado ao ponto de dados do qual você está fazendo referência.

UpdateEntity

Este é o método de âncora para atualizar qualquer registro no Dynamics 365, com exceção da configuração do status ou estado de um registro. Para usá-lo, é necessário saber as seguintes informações: o nome de esquema da entidade que você deseja atualizar, o campo de chave primária da entidade que deseja atualizar, o GUID do registro que deseja atualizar e, por último, a matriz da carga de dados com a qual a atualização será feita.

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

Este método é usado para definir o estado de um registro do Dynamics 365. Por exemplo, todos os registros geralmente são iniciados em um estado “aberto”. O nome das alterações de estado com base no tipo de registro ou mesmo as opções dos desenvolvedores. Uma cotação, por exemplo, tem vários status e estados possíveis, Rascunho, Ativa, Fechada, Perdida e Ganha.

Dica

É possível usar o arquivo OptionSets.cs da pasta SDK\SampleCode\CS\HelperCode do pacote de download do SDK para exibir e usar os conjuntos de opções globais disponíveis para várias entidades no Dynamics 365. Para obter mais informações sobre conjuntos de opções globais, consulte Personalizar conjuntos de opções globais.

Para atualizar o estado de uma entidade é necessário saber quais são o estado e status do destino, pelos nomes ou IDs. Os nomes e os IDs podem ser encontrados por meio da consulta dos metadados da entidade e da visualização dos campos estado e status. Neste exemplo, demonstraremos como definir o status de um registro da conta para Inativo.

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

Confira Também

Exemplo: Início rápido para API de ferramentas XRM
Os os construtores para conectar ao Dynamics 365
Usar as ferramentas do XRM para executar ações no Dynamics 365
Trabalhar com metadados de atributos

Microsoft Dynamics 365

© 2017 Microsoft. Todos os direitos reservados. Direitos autorais