La descripción del ejemplo de hoy es la siguiente:
Formulario: Cuenta
Evento: OnLoad() y OnChange()
Atributos: para este ejemplo, todos los requeridos y recomendados.
Funcionalidad: Añade una notificación general de información del formulario, y verifica todos los atributos requeridos o recomendados y añade una alerta si es que están vacíos. Además en el OnChange() se actualiza el mensaje, dependiendo de si se ha introducido o no.
La idea es que en el formulario se enseñen notificaciones de la siguiente manera:
El javascript puede descargarse desde la página de Codeplex de EBDDCRM, en donde también iremos añadiendo mas funciones:
http://elblogdedynamicscrm.codeplex.com/documentation
El método principal que debe ser llamado tanto desde el OnLoad() como en el OnChange() es el siguiente:
function Verificaciones() { addNotification ("",1); addNotification ("Formulario con la información general de la Cuenta.",2); var attributes = Xrm.Page.data.entity.attributes.get(); for (var i in attributes) { var attribute = attributes[i]; var requiredLevel = attribute.getRequiredLevel(); var value=""; if (attribute.getValue()!=null){value=attribute.getValue()}; var control=Xrm.Page.getControl(attribute.getName()); switch (requiredLevel) { case "required": if (value=="") { addNotification ("El campo "+control.getLabel()+" es requerido.",1); } break; case "recommended": if (value=="") { addNotification ("El campo "+control.getLabel()+" es opcional.",3); } break; } } }
Lo que hacemos aquí es primero eliminar todas las notificaciones y luego recorrer los atributos del formulario y añadir notificaciones según estén rellenos o no los mismos.
Para hacer las llamadas a añadir notificaciones simplemente se debe llamar a la función “addNotificacion” con el texto y el tipo de notificación (1 crítico, 2 información, 3 advertencia).
El método que añade la notificación es el siguiente:
function addNotification (message, level) { /// The warning level of the message: [1 critial, 2 information, 3 warning] var notificationsArea = document.getElementById('crmNotifications'); if (notificationsArea == null) { alert('div not found'); return; } if (level == 1) { //critical notificationsArea.AddNotification('mep1', 1, 'source', message); } if (level == 2) { //Info notificationsArea.AddNotification('mep3', 3, 'source', message); } if (level == 3) { //Warning notificationsArea.AddNotification('mep2', 2, 'source', message); } if (message == "") { notificationsArea.SetNotifications(null, null); } }
Este método se apoya en ciertos métodos de CRM que no están documentados en la SDK y que por lo tanto no están soportados, que hay que tener en cuenta, pero que aporta mucha funcionalidad de cara a los usuarios finales.
Lo bueno de este ejemplo es verlo “en acción”, en donde se puede ver como va cambiando el listado de notificaciones según se van rellenando los valores del formulario.
Espero les sirva.
Un abrazo!
No hay comentarios:
Publicar un comentario