2010-09-08 17 views
5

Soy nuevo en MS Dynamics y me gustaría saber si hay una manera de añadir la columna a una vista dentro de ese es una concatenación de algunas otras columnas, por ejemplo:Columnas concatenados/calculados en Dynamics CRM Ver

Firstname + ' ' + Lastname As Fullname 

No parece que haya una solución obvia (elegante) para esto, todas las sugerencias que he visto sugieren usar javascript para mantener un nuevo atributo.

Avanzado un paso más, si quiero derivar o calcular una columna de otra columna, por ejemplo, la edad de una persona a partir de su fecha de nacimiento, esto tendría que calcularse sobre la marcha cuando la vista se cargue, ¿correcto? De nuevo, no puedo ver de inmediato una forma de proporcionar esta funcionalidad simple con el marco de CRM. Tal vez me estoy perdiendo algo?

Cualquier consejo sería muy apreciado.

Respuesta

7

No te lo pierdas nada. NO hay una solución elegante para su problema. Si lo quiere en una vista, necesitará agregar una columna personalizada para mostrarlo.

Si está realmente calculado (almacenar un valor fijo en la base de datos podría ser obsoleto, como en el ejemplo de edad), entonces deberá agregar un complemento en el paso posterior de un mensaje de búsqueda, analizar el XML para determine si su entidad está siendo devuelta, analice los atributos que deberían calcularse, calcule el valor y luego inserte su atributo calculado en el resultado xml.

Digamos que no está mostrando el campo de fecha de nacimiento en la vista (solo desea mostrar la edad), entonces también tendrá que tener un complemento en el paso previo a la búsqueda Mensaje, analizar el XML para determinar si su entidad es la que se está buscando, determinar si se devuelve la columna de edad y, de ser así, inyectar las columnas de la base de cálculo en el conjunto de columnas que se devuelve.

Tenga en cuenta que estos pasos de complementos NO se ejecutan si utiliza la vista filtrada en los informes de SSRS, por lo que tendría que calcular la edad en TSQL en esos casos. No creo que alguna vez puedas mostrar la columna de edad en los informes del asistente creados por CRM (no puedes ingresar aquí el TSQL y los complementos no se ejecutarán).

Dado todo eso, si tiene algo que PUEDE ser reparado (concatenación), lo calcularía en un plugin de creación/actualización para esa entidad y lo almacenaría en un atributo personalizado (Nombre completo). En ese caso, el atributo solo funcionará para vistas de cuadrícula, todos los tipos de informes, etc.

+0

Gracias - Creo que esto responde mi pregunta, qué frustrante que algo tan simple debería ser tan complicado en CRM – bigtv

3

No hay nada como las columnas calculadas en Dynamics CRM. benjynito tiene razón sobre el uso de complementos, que es una solución viable.

Pero si es suficiente para calcular el campo que se mostrará en un formulario, generalmente uso JavaScript para "falsear" un atributo.

Para hacerte una idea de cómo hacerlo, aquí hay un fragmento de código donde utilizo jQuery para insertar la etiqueta y el cuadro de texto de solo lectura para mostrar el valor del campo de registros principales (número de teléfono en mi caso).

// create label 
$("#ad_contactid_c").next().next().find("label").text("Contact Phone:"); 
// create textbox 
var phoneNumber = $(document.createElement("input")).addClass("ms-crm-Text ms-crm-ReadOnly").attr("contentEditable", "false").attr("id", "d_phoneNumber"); 
$("#ad_contactid_c").next().next().next().append(phoneNumber); 
// fill textbox value 
$("#d_phoneNumber").val(phone); 
1

sólo para añadir que, además de la opción plugin y Javascript opción, también existe la opción de programar una tarea de calcular y establecer el atributo. Utilicé esta técnica para un atributo de 'tiempo transcurrido', por ejemplo, donde el atributo debía actualizarse todos los días.

La tarea podría ser un servicio personalizado o una aplicación de consola programada que utiliza el SDK para actualizar los datos, o un trabajo Scribe (o similar).

Cuestiones relacionadas