Principales respuestas
CRM Service - Retrieve() no devuelve columnas

Pregunta
-
hola
he creado un proxy a
http://<host>/XRMServices/2011/Organization.svc
el cual funciona la mas bien para recuperar y trabajar entidades, salvo por esta situacion
resulta que quiero actualizar la info de localizacion de las cuentas, para lo cual uso la funcionalidad de google maps, esto va perfecto
pero cuando llego al Retrieve() alli el problema
public static void UpdatePosition(string fetchxml) { List<Account> account = GetAccounts(fetchxml); using (OrganizationServiceClient crmService = new OrganizationServiceClient()) { foreach (var item in account) { GlobalPosition position = GetGeoPosition(item); if (position == null) continue; Entity entity = crmService.Retrieve("account", item.accountid, new ColumnSet() { Columns = new string[] { "name", "address1_latitude", "address1_longitude" } }); entity.Attributes.FirstOrDefault(x => x.key == "address1_latitude").value = position.Latitude; entity.Attributes.FirstOrDefault(x => x.key == "address1_longitude").value = position.Longitude; crmService.Update(entity); } } }
como veran en la imagen solo me devuelve dos atributos de la entidad, que paso con "address1_latitude" y "address1_longitude" ?
es que sino recupero estos no veo como podria actualizarlo para enviar la actualizacion con el Update()
estos usando .net 3.5
gracias, saludos
Leandro Tuttini
Blog
Buenos Aires
Argentinamartes, 30 de abril de 2013 15:05
Respuestas
-
Leandro,
Cuando un campo del CRM no tiene valor, este no es retornado. Pero, si este campo esta en el metadata puede ser actualizado sin ningún problema
Salu2 Atilin | http://www.dexrm.com
- Propuesto como respuesta frankhernandez martes, 30 de abril de 2013 15:41
- Marcado como respuesta Leandro TuttiniMVP martes, 30 de abril de 2013 19:53
martes, 30 de abril de 2013 15:35 -
Leandro,
Prueba con la siguiente linea de codigo
var account = new Entity("account"); account["address1_latitude"] = "";
acuerdate de importar
using Microsoft.Xrm.Sdk.Client; using Microsoft.Xrm.Sdk; using Microsoft.Xrm.Sdk.Messages;
Salu2 Atilin | http://www.dexrm.com
- Marcado como respuesta Leandro TuttiniMVP martes, 30 de abril de 2013 19:53
martes, 30 de abril de 2013 16:06
Todas las respuestas
-
Hola Leandro,
Tienen valores los campos "address1_latitude" y "address1_longitude" en tu CRM?
Salu2 Atilin | http://www.dexrm.com
martes, 30 de abril de 2013 15:25 -
no, no tiene
quiero recuperarlas para ponerles un valor
justamente del resultado de la geo localizacion es que asignaria esta info a la entidad
Leandro Tuttini
Blog
Buenos Aires
Argentinamartes, 30 de abril de 2013 15:29 -
Leandro,
Cuando un campo del CRM no tiene valor, este no es retornado. Pero, si este campo esta en el metadata puede ser actualizado sin ningún problema
Salu2 Atilin | http://www.dexrm.com
- Propuesto como respuesta frankhernandez martes, 30 de abril de 2013 15:41
- Marcado como respuesta Leandro TuttiniMVP martes, 30 de abril de 2013 19:53
martes, 30 de abril de 2013 15:35 -
Leandro,
Me parece que para el Update no es necesario traer el valor de las columnas en el Retrieve. Simplemente que existan esos atributos en la entidad, con eso basta para actualizarlo los mismos.
Saludos,
Frank
Frank Hernández | http://www.elblogcrm.com/ | http://www.twitter.com/ElBlogCRM | http://www.facebook.com/ElBlogCRM
If you consider this post as helpful please Vote as Helpful and/or Mark as Answer. Thanks you!
Si usted considera esta respuesta como útil por favor márquela como Útil y/o márquela como Respuesta. Gracias!
martes, 30 de abril de 2013 15:37 -
hola Atilio, Frank
gracias por el dato
ahora me pregunto, como asignan el atributo?, porque si se utiliza
entity.Attributes.FirstOrDefault(x => x.key == "address1_latitude").value = position.Latitude;
al no devolverlo falla porque no lo encuantra y retorna null
no vi que la entidad tenga un Add() en la propiedad Attributes, es mas solo se puede acceder por index, no se puede asignar un string como key, usar esto
entity.Attributes["address1_latitude"] = valor;
no me deja
------
Use the Entity Class for Create, Update and Delete
la doc me dice que puedo usar
entity["address1_latitude"] = valor;
pero a mi eso no me compila
quizas sea porque ellos usan las dll del sdk, cuando yo estos usando un proxy al servicio de wcf
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentinamartes, 30 de abril de 2013 15:58 -
Leandro,
Prueba con la siguiente linea de codigo
var account = new Entity("account"); account["address1_latitude"] = "";
acuerdate de importar
using Microsoft.Xrm.Sdk.Client; using Microsoft.Xrm.Sdk; using Microsoft.Xrm.Sdk.Messages;
Salu2 Atilin | http://www.dexrm.com
- Marcado como respuesta Leandro TuttiniMVP martes, 30 de abril de 2013 19:53
martes, 30 de abril de 2013 16:06 -
hola
pero si o si se debe usar las dll del sdk, no se puede realizar esto mismo desde el servicio de wcf ?
es que tengo la referencia al
http://<host>/XRMServices/2011/Organization.svc
la idea era trabajar solo con el servicio
en el servicio veo el metod Update() y Create() pero para que estan sino se pueden utilizar
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentinamartes, 30 de abril de 2013 17:34 -
hola
bien al final lo realice con las dll del sdk y funciono lo mas bien, pense que sera mas complicado
gracias por la ayuda
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentinamartes, 30 de abril de 2013 19:53