- En este ejemplo trabajaremos con el objeto Xrm, para comprender el mecanismo de control del formulario CRM mediante Javascript
- En primer lugar, veamos el diagrama que forma el objeto Xrm.Page
- Mediante el control del formulario podemos introducir nuestra lógica de negocio en los procesos de creación, actualización, creación rápida, etc.
- En nuestro ejemplo estableceremos un control de datos básico sobre el formulario de “Nuevo Fax”, recogiendo los valores de cada campo y confirmando con el usuario los valores introducidos antes de guardar el registro
- El primer paso será codificar nuestro archivo Javascript e incluirlo entre los recursos web de nuestra organización CRM, para posteriormente referenciarlo desde el formulario en sus eventos onLoad y onSave
- El evento onLoad comprobará de que tipo de formulario se trata, ya que en nuestro ejemplo queremos que el código funcione en casos de creación de Nuevo Fax
- El evento onSave es el que realizará la parte de comprobación de datos y guardado en función de la respuesta de usuario
- El código de la función de chequeo de tipo de página que se ejecutará en el onLoad del formulario, y de la función de captura del evento onSave, son los siguientes:
var isNewForm;
var saveHolded;
function checkPage() {
var formType = Xrm.Page.ui.getFormType();
isNewForm = (formType == 1);
}
function holdSaveEvent() {
if (isNewForm && !saveHolded) {
event.returnValue = false;
confirmSave();
saveHolded = false;
}
}
- Cuando el usuario realice la entrada de datos, y guarde el registro, se lanzará la función confirmSave(), cuyo código se expone a continuación:
function confirmSave() {
var sender = Xrm.Page.getAttribute("from").getValue();
var recipient = Xrm.Page.getAttribute("to").getValue();
var faxnumber = Xrm.Page.getAttribute("faxnumber").getValue();
var direction = (Xrm.Page.getAttribute("directioncode").getValue())
? "Saliente" : "Entrante";
var subject = Xrm.Page.getAttribute("subject").getValue();
var regardingobjectid = Xrm.Page.getAttribute("regardingobjectid").getValue();
var owner = Xrm.Page.getAttribute("ownerid").getValue();
var duration = Xrm.Page.getAttribute("actualdurationminutes").getValue();
var priority;
switch (Xrm.Page.getAttribute("prioritycode").getValue()) {
case 0: priority = "Baja"; break;
case 1: priority = "Normal"; break;
case 2: priority = "Alta"; break;
}
var due = Xrm.Page.getAttribute("scheduledend").getValue();
var coverpage = Xrm.Page.getAttribute("coverpagename").getValue();
var category = Xrm.Page.getAttribute("category").getValue();
var subcategory = Xrm.Page.getAttribute("subcategory").getValue();
var message = "Remitente: " + sender[0].name;
message += "\nDestinatario: " + recipient[0].name;
message += "\nNúmero de fax: " + faxnumber;
message += "\nDirección: " + direction;
message += "\nAsunto: " + subject;
message += "\nReferente a: " + regardingobjectid[0].name;
message += "\nPropietario: " + owner[0].name;
message += "\nDuración " + duration;
message += "\nPrioridad: " + priority;
message += "\nVencimiento: " + due;
message += "\nPortada: " + coverpage;
message += "\nCategoría: " + category;
message += "\nSubcategoría: " + subcategory;
if(confirm('¿Guardar el registro con los datos siguientes\n\n' + message)) {
saveHolded = true;
Xrm.Page.data.entity.save();
}
}
- Este código ejemplifica la forma de referenciar valores del formulario según el tipo de campo, para finalmente llamar al método save() de la entidad desde código
- El resultado es el siguiente:
_
Desde Innovar Tecnologías esperamos que este documento les sea de ayuda en su desarrollo
Web de la empresa