Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
¿Listo para escribir su primer script de cliente para ver las cosas en acción? Comencemos. Mantengámoslo simple.
Objetivo
Después de completar este tutorial, sabe cómo usar código JavaScript en aplicaciones controladas por modelos. Este proceso implica los siguientes pasos generales:
- Localizar o crear una solución para agregar su trabajo
- Escribir el código JavaScript para solucionar un problema del negocio
- Cargar su código como recurso web
- Asociar su recurso web a un formulario
- Configurar eventos de formulario y campo
- Probar su código
Paso 1: Localizar o crear una solución
Use soluciones para transportar personalizaciones de un entorno a otro. Escriba y pruebe el código JavaScript en un entorno de desarrollo como parte de una solución no administrada. Cuando termine de probar, exporte la solución como solución administrada e impórtela o instálela en el entorno de producción.
Es posible que una solución existente ya esté disponible para su uso. La aplicación basada en modelos que desea personalizar con su script ya debería formar parte de una solución. Puede editar esa solución o crear una solución que dependa de otra solución existente.
Para crear una nueva solución
Vaya a Power Apps.
En el panel de navegación izquierdo, seleccione Soluciones y luego seleccione Nueva solución.
En el cuadro de diálogo flotante, escriba un nombre para mostrar, un nombre y un publicador.
La mayoría de las empresas tienen un publicador existente que siempre usan. Use ese publicador. Si es la primera persona, cree su propio publicador.
Seleccione Nuevo publicador para abrir el cuadro de diálogo Nuevo publicador . En este tutorial, use un publicador con esta definición:
Observe el valor de Prefijo. Este valor debe identificar a su empresa. En este caso, use
example.Esta solución es la que se usa en este tutorial.
Busque o agregue una aplicación basada en modelo a su solución.
Una nueva solución no incluye ninguna aplicación controlada por modelos. Debe agregar una aplicación basada en modelos existente o crear una nueva.
Nota
Para este tutorial, asegúrese de que la aplicación incluya la tabla Cuenta. Los scripts e instrucciones siguientes esperan campos que se encuentran en un formulario para la tabla Cuenta.
Opción A: Agregar una aplicación basada en modelo existente a su solución
- En su solución, seleccione Agregar existente>Aplicación>Aplicación basada en modelo.
- Seleccione una aplicación existente y seleccione Agregar.
Opción B: Crear una nueva aplicación basada en modelo en su solución
En la solución, seleccione Nueva>>aplicación controlada por modelos de aplicación.
Consulte el tutorial Crear la primera aplicación basada en modelo. Cree una aplicación que incluya la tabla Cuenta.
Paso 2: Escribir su código JavaScript
El primer paso es identificar el problema empresarial que desea solucionar mediante scripting de cliente. Al identificar el problema, escriba el código de JavaScript que contiene la lógica de negocios personalizada que soluciona el problema empresarial.
Las aplicaciones controladas por modelos no proporcionan un editor de JavaScript. Use una herramienta de creación externa que proporciona características específicamente para la edición de archivos JavaScript, como Notepad++, Visual Studio Code o Microsoft Visual Studio.
En este tutorial se usa el código JavaScript siguiente:
// A namespace defined for the sample code
// As a best practice, you should always define
// a unique namespace for your libraries
var Example = window.Example || {};
(function () {
// Define some global variables
var myUniqueId = "_myUniqueId"; // Define an ID for the notification
var currentUserName = Xrm.Utility.getGlobalContext().userSettings.userName; // get current user name
var message = currentUserName + ": Your JavaScript code in action!";
// Code to run in the form OnLoad event
this.formOnLoad = function (executionContext) {
var formContext = executionContext.getFormContext();
// Display the form level notification as an INFO
formContext.ui.setFormNotification(message, "INFO", myUniqueId);
// Wait for 5 seconds before clearing the notification
window.setTimeout(function () { formContext.ui.clearFormNotification(myUniqueId); }, 5000);
}
// Code to run in the column OnChange event
this.attributeOnChange = function (executionContext) {
var formContext = executionContext.getFormContext();
// Automatically set some column values if the account name contains "Contoso"
var accountName = formContext.getAttribute("name").getValue();
if (accountName.toLowerCase().search("contoso") != -1) {
formContext.getAttribute("websiteurl").setValue("https://www.contoso.com");
formContext.getAttribute("telephone1").setValue("425-555-0100");
formContext.getAttribute("description").setValue("Website URL, Phone and Description set using custom script.");
}
}
// Code to run in the form OnSave event
this.formOnSave = function () {
// Display an alert dialog
Xrm.Navigation.openAlertDialog({ text: "Record saved." });
}
}).call(Example);
Copie este código en un archivo de texto y guárdelo como Example-form-script.js.
Explicación detallada del código
Veamos el código detalladamente:
Defina el espacio de nombres: el código comienza definiendo un espacio de nombres de su script personalizado. Como procedimiento recomendado, cree siempre bibliotecas javaScript con espacio de nombres para evitar que las funciones se invalidan en otra biblioteca.
var Example = window.Example || {};En este caso, puede usar todas las funciones definidas en esta biblioteca como
Example.[functionName]. Elija un espacio de nombres que coincida con el nombre del publicador de soluciones.Definir variables globales: en la sección siguiente se definen algunas variables globales que se van a usar en el script. Puede acceder a la información de contexto globalmente mediante el método Xrm.Utility.getGlobalContext .
// Define some global variables var myUniqueId = "_myUniqueId"; // Define an ID for the notification var currentUserName = Xrm.Utility.getGlobalContext().userSettings.userName; // get current user name var message = currentUserName + ": Your JavaScript code in action!";Función para ejecutarse en el evento OnLoad: esta sección contiene la función que se ejecuta cuando se carga el formulario de cuenta. Por ejemplo, cuando se crea un nuevo registro de cuenta o al abrir un registro de cuenta existente.
La función
Example.formOnLoadutiliza el parámetroexecutionContextpara obtener el objetoformContext. Cuando adjunte el código mediante el evento de formulario más adelante, seleccione la opción para pasar el contexto de ejecución a esta función.Esta función muestra una notificación de nivel de formulario mediante el método formContext.ui.setFormNotification .
Por último, esta función usa el JavaScript setTimeOut para retardar la ejecución del método formContext.ui.clearFormNotification para eliminar la notificación después de 5 segundos.
// Code to run in the form OnLoad event this.formOnLoad = function (executionContext) { var formContext = executionContext.getFormContext(); // Display the form level notification as an INFO formContext.ui.setFormNotification(message, "INFO", myUniqueId); // Wait for 5 seconds before clearing the notification window.setTimeout(function () { formContext.ui.clearFormNotification(myUniqueId); }, 5000); }Función que se ejecuta en el evento OnChange: asocie la
Example.attributeOnChangefunción a la columna Nombre de cuenta en el formulario de cuenta para que se ejecute solo cuando se cambia el valor del nombre de cuenta.Esta función realiza una búsqueda que no distingue entre mayúsculas y minúsculas de
Contosoen elnamede la cuenta y, si está presente, establece automáticamente valores para las columnaswebsiteurl,telephone1ydescriptiondel formulario de cuenta.// Code to run in the column OnChange event this.attributeOnChange = function (executionContext) { var formContext = executionContext.getFormContext(); // Automatically set some column values if the account name contains "Contoso" var accountName = formContext.getAttribute("name").getValue(); if (accountName.toLowerCase().search("contoso") != -1) { formContext.getAttribute("websiteurl").setValue("https://www.contoso.com"); formContext.getAttribute("telephone1").setValue("425-555-0100"); formContext.getAttribute("description").setValue("Website URL, Phone and Description set using custom script."); } }Función que se ejecuta en el evento OnSave: la
Example.formOnSavefunción muestra un cuadro de diálogo de alerta mediante el método Xrm.Navigation.openAlertDialog . Este cuadro de diálogo muestra un mensaje con un botón Aceptar: El usuario puede cerrar la alerta seleccionando Aceptar.Nota
Esta función no usa el contexto de ejecución porque los métodos Xrm.Navigation no lo requieren.
// Code to run in the form OnSave event this.formOnSave = function () { // Display an alert dialog Xrm.Navigation.openAlertDialog({ text: "Record saved." }); }
Paso 3: Cargar su código como recurso web
Ahora que el código está listo, cárguelo en la solución.
En la solución, seleccione Nuevo>recurso web.>
En el cuadro de diálogo Nuevo recurso web , seleccione Elegir archivo y seleccione el
Example-form-script.jsarchivo que guardó anteriormente.Escriba el nombre para mostrar, el nombre y, opcionalmente, una descripción. Asegúrese de que el Tipo es JavaScript (JS).
Nota
- El nombre tiene un prefijo que coincide con el prefijo de personalización del publicador de soluciones. Hay otras maneras de crear recursos web, pero la creación de un recurso web de esta manera garantiza que el recurso web forme parte de la solución.
- El nombre del recurso web es
example_example-form-script.
Paso 4: Asociar su recurso web a un formulario
En su solución, seleccione Objectos>Aplicaciones>Su aplicación y haga clic en Editar.
Expanda Cuenta y seleccione el formulario Cuenta. Haga clic en los puntos suspensivos (...) a la derecha del formulario Información y seleccione Editar.
En la navegación izquierda, seleccione Bibliotecas de formulario y haga clic en Agregar biblioteca.
En el cuadro de diálogo Agregar biblioteca de JavaScript, busque el recurso web de JavaScript que creó por nombre:
Example Script.
Selecciona el recurso web Script de ejemplo y haga clic en Agregar.
Paso 5: Configurar eventos de formulario y campo
Seleccione la pestaña Eventos.
Configurar el evento On Load de formulario
Seleccione el controlador de eventos On Load y haga clic en + Controlador de eventos.
Asegúrese de que la siguiente configuración es correcta:
- El Tipo de evento es On Load.
- La biblioteca example_example-form-script está seleccionada.
- Escriba el nombre de la función en el campo Función. En este caso, escriba
Example.formOnLoad. - Seleccione Pasar el contexto de ejecución como primer parámetro.
- Haga clic en Listo.
Configurar el evento Al guardar del formulario
Seleccione el controlador de eventos Al guardar y, a continuación, seleccione + Controlador de eventos.
Asegúrese de que la siguiente configuración es correcta:
- El Tipo de evento es On Save.
- La biblioteca example_example-form-script está seleccionada.
- Escriba el nombre de la función en el campo Función. En este caso, escriba
Example.formOnSave.Nota
No es necesario seleccionar Pasar contexto de ejecución como primer parámetro para esta función porque no lo usa.
- Seleccione Listo.
Configurar el campo On Change (evento)
Seleccione el campo Nombre de cuenta y la pestaña Eventos.
Seleccione el controlador de eventos On Change y haga clic en + Controlador de eventos.
Asegúrese de que la siguiente configuración es correcta:
- El Tipo de evento es On Change.
- La biblioteca example_example-form-script está seleccionada.
- Escriba el nombre de la función en el campo Función. En este caso,
Example.attributeOnChange. - Seleccione Pasar el contexto de ejecución como primer parámetro.
- Seleccione Listo.
Guardar y publicar sus cambios
Guarde el formulario y haga clic en Publicar.
Paso 6: Probar su código
Actualice el explorador para asegurarse de que los cambios surtan efecto en la instancia de aplicaciones controladas por modelos.
Para probar su código:
Vaya a Power Apps.
En el panel de navegación izquierdo, seleccione Aplicaciones.
Abra la aplicación controlada por modelos que acaba de editar o selecciónela y seleccione Reproducir.
Probar función On Load de formulario
Seleccione cualquier registro de cuenta en la lista para abrirlo.
Compruebe que aparezca la notificación.
Compruebe que la notificación desaparece en 5 segundos.
Probar función On Change de campo
Edite el nombre de la cuenta para incluir "Contoso" en el nombre y pasar a la siguiente columna presionando TAB.
Compruebe los valores esperados establecidos en las columnas Teléfono principal, Sitio web y Descripción
Probar función On Save de formulario
Haga clic en Guardar.
Compruebe que el cuadro de diálogo de alerta muestra el mensaje que configuró en el código.
Seleccione Aceptar para cerrar la alerta.
Artículos relacionados
Depuración del código JavaScript para aplicaciones basadas en modelo
Eventos en formularios y cuadrículas en aplicaciones basadas en modelos
Evento de formulario OnLoad
Evento OnSave de formulario (referencia de API de cliente) en aplicaciones basadas en modelos
Evento OnChange de la columna (referencia de la API de cliente)