viernes, 6 de julio de 2012

Como funciona la eliminación de valor de un Picklist (CRM 2011)

Hace casi un par de años, publiqué un artículo acerca de un tema que me sorprendió por su funcionamiento en relación con los Picklists en CRM 4.0 (http://crmtoall.blogspot.com.es/2010/09/como-funciona-la-eliminacion-de-un.html).

Hoy me propongo hacer lo mismo para comprobar si algo ha cambiado respecto a este funcionamiento.

La idea es explicar lo que ocurre cuando se elimina un valor de un campo de tipo Picklist (conjunto de opciones) en relación con los registros que ya tienen ese valor asignado.

Primero vamos a crear un atributo nuevo en la entidad de "Caso" y lo añadimos al formulario y publicamos. Será un desplegable con el nombre "new_categoria" con los valores "Uno", "Dos", "Tres":

image

Luego creamos un nuevo registro de Caso, con “Categoría” a “Dos” (valor 100.000.002). Luego hacemos un par de consultas en el SQL Server para ver que nos queda almacenado físicamente en la base de datos y en la FilteredView:

   1: SELECT * FROM IncidentExtensionBase  



   2: SELECT incidentid,New_Categoria,New_Categorianame FROM FilteredIncident  




image


Hasta este punto todo ok. Ahora imaginemos que necesitamos eliminar el valor del desplegable "Dos". Al eliminarlo nos aparece el siguiente mensaje:



image


Aceptamos, guardamos el campo y volvemos a publicar. Al hacer la consulta anterior ahora vemos lo siguiente:



image


Como se ve, en realidad en la base de datos seguimos teniendo el mismo valor, pero lo que ocurre, es que no puede recoger el texto del valor en la FilteredView, cosa que es normal ya que el valor se ha eliminado.


Imagínense que pasado el tiempo, añadimos un nuevo valor en este desplegable con el mismo valor (100.000.002) como índice, pero con otro texto que significa otra cosa:


image


Con esto sacamos como consecuencia, que al eliminar un valor de un desplegable, los registros relacionados con este valor, siguen teniendo el mismo, y no se eliminan, de hecho si hacemos una búsqueda avanzada por ese atributo filtrando por que "Contiene datos", lo encontrará ya que tiene datos, pero es un dato "inexistente". Además hay que tener en cuenta que si creamos nuevos elementos en el desplegable en índices ya existentes, podríamos estar reemplazando y modificando un valor antiguo que ya no nos interesaba.

La conclusión final y consejo que dejo es que se tenga mucho cuidado con los desplegables y en especial al eliminar los valores, creo que sería una buena práctica no permitir a usuarios finales gestionar este tipo de atributos. Además siempre se debería comprobar al crear un nuevo valor a un desplegable, si es que no hay registros que contengan ese valor, ya que podríamos estar dando un sentido diferente al deseado a los datos.


p>Por las pruebas hechas en CRM 2011, esta funcionalidad no ha cambiado en nada en relación con CRM 4.0. Lo único que sí que veo que ha cambiado es el mensaje de advertencia al eliminar el valor del picklist, que es un poco mas ajustado a la realidad, aunque es un poco confuso para mi gusto.


un saludo,

No hay comentarios:

Publicar un comentario