Usar útiles de XRM para actualizar los datos
Publicado: noviembre de 2016
Se aplica a: Dynamics CRM 2015
Hay dos métodos disponibles en la clase CrmServiceClient para actualizar datos en Microsoft Dynamics 365: UpdateEntity y UpdateStateAndStatusForEntity.
Una acción de actualización que usa la API de los útiles de XRM requiere una carga de datos. La carga útil de datos requiere la forma de un objeto Dictionary<string, CrmDataTypeWrapper>.CrmDataTypeWrapper se usa para informes a la interfaz del tipo de control debe ser aplicado al punto de datos al que está haciendo referencia.
UpdateEntity
Este es el método de delimitador para actualizar cualquier registro de Dynamics 365, con la excepción del establecimiento del estado o del estado de un registro. Para usarlo, debe conocer la siguiente información: nombre de esquema de la entidad que desea actualizar, el campo de clave principal de la entidad que desea actualizar, el GUID del registro que desea actualizar y, por último, la matriz de carga de datos con la que desea actualizar.
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 se usa para establecer el estado de un registro en Dynamics 365. Por ejemplo, todos los registros comienzan normalmente en un estado "abierto". El nombre del estado cambia en función del tipo de registro o incluso de las decisiones de los desarrolladores. Una oferta, por ejemplo, tiene varios estados posibles, Borrador, Activo, Cerrar, Perdido, Ganado.
Sugerencia
Puede usar el archivo OptionSets.cs en la carpeta SDK\SampleCode\CS\HelperCode del paquete de descarga del SDK para ver y usar los conjuntos de opciones globales disponibles para varias entidades en Dynamics 365. Para obtener más información sobre estos conjuntos de opciones, vea Personalizar conjuntos de opciones globales.
Actualizar el estado de una entidad requiere que sepa cuál es el estado y de destino, por nombres o id. Los nombres y los id. se pueden encontrar consultando los metadatos de la entidad y mirando los campos de estado. En este ejemplo se mostrará cómo establecer el estado de un registro de cuenta en Inactivo.
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;
}
Ver también
Ejemplo: inicio rápido para la API de útiles de XMR
Usar herramientas XRM para conectarse a CRM
Usar herramientas XRM para ejecutar acciones en CRM
Trabajar con metadatos de atributos
© 2017 Microsoft. Todos los derechos reservados. Copyright