Scripts
Qué es un script de sección en Flex, los eventos de EventoScriptE que lo disparan, los campos que lo acotan y sus columnas.
Un script es código DinaScript que se ejecuta cuando pasa algo en una ficha de una sección: al crear un registro, antes de guardarlo, al cambiar un campo. En la Flex API es el tipo FlexObjectTypes.Scripts.
Antes de empezar
- Un script pertenece a una sección. Se crea con Nuevo en Contenido → Scripts de la sección o en el panel Scripts del diseñador. La pantalla: Scripts.
- El evento no se cambia después de crear el script: para otro evento, crea otro script.
- Comprobar en FlexHub, o
Flex_ValidateCodeAsync(code, sectionId, eventFields)en el SDK, compila el código sin guardarlo.
Las columnas de un script
Lo que publica Flex_GetEditablesAsync(FlexObjectTypes.Scripts):
| Columna | Rótulo en FlexHub | Qué es |
|---|---|---|
nombre | Título | El nombre del script, del que sale su palabra clave. Mínimo 3 caracteres. |
titulolegible | Un título alternativo que el motor no lee. FlexHub no lo muestra. | |
script | Código | El código DinaScript. Si no compila, el servidor no lo guarda. |
evento | Cuándo se ejecuta | El valor de EventoScriptE. Solo se elige en el alta. |
campoid, campoid2 a campoid10 | Campos que lo disparan | Hasta diez campos. Con campos en la lista, el script solo se ejecuta cuando cambia uno de ellos. |
Los eventos
El evento es el enum EventoScriptE. Los de formulario afectan a la ficha entera y no admiten campos; los de campo, a un campo concreto.
Eventos de formulario
| Valor | EventoScriptE | Cuándo se ejecuta |
|---|---|---|
| 1 | Formulario_Iniciado_AgregarNuevo | Al empezar a crear un registro, antes de que el usuario escriba nada. |
| 23 | Formulario_Iniciado_AgregarNuevo_PostRellenadoImportacion | Al crear un registro, después de rellenarlo desde una importación o desde un destinador. |
| 16 | Formulario_Cargado | Cuando el formulario termina de cargar sus datos. |
| 17 | Formulario_ValoresDeCatalogosEstablecidos | Cuando los catálogos del formulario ya están cargados. |
| 4 | Formulario_TickRecalculo | En cada ciclo de recálculo del formulario. |
| 12 | Formuario_RecalcularListado | Al refrescar el listado de líneas. |
| 2 | Formulario_PreACeptar | Justo antes de guardar. Es el evento para validar y bloquear el guardado. |
| 3 | Formulario_PreCancelar | Justo antes de descartar los cambios. |
| 19 | Formulario_AtajoDeTeclado | Al pulsar la combinación de teclas asociada (rótulo Formulario_Macro). |
| 20 | Formulario_AutoGuardar | Al autoguardar (rótulo Formulario_Cargado_AutoGuardado). |
Eventos de campo
| Valor | EventoScriptE | Cuándo se ejecuta | Campos |
|---|---|---|---|
| 5 | Campo_Cambiado | El valor del campo cambia. | Cualquiera menos los de tipo Botón. |
| 6 | Campo_PierdeFoco | El usuario sale del campo. | Cualquiera menos Botón y Sí/No. |
| 7 | Campo_GanaFoco | El usuario entra en el campo. | Cualquiera menos Botón y Sí/No. |
| 8 | Campo_CierraRelacionCambiosEfectuados | Se cierra la ficha relacionada con cambios guardados. | Solo Relación. |
| 9 | Campo_CierraRelacionCambiosNoEfectuados | Se cierra la ficha relacionada sin cambios. | Solo Relación. |
| 10 | Campo_CierraRelacion | Se cierra la ficha relacionada. | Solo Relación. |
| 11 | Campo_PreAgregarRelacion | Justo antes de agregar un registro relacionado. | Solo Relación. Exige un campo. |
| 13 | Campo_ComboAplicarFiltro | Al aplicar el filtro de un desplegable. | Solo Relación. |
| 15 | Campo_Click | El usuario pulsa el campo. | Solo Botón. Exige un campo. |
Elige campos del tipo que admite el evento (columna Campos). Campo_Click y Campo_PreAgregarRelacion exigen al menos uno.
No pongas «destinador» en el título de un script: el script pasa a ejecutarse en Formulario_Iniciado_AgregarNuevo_PostRellenadoImportacion (23). Al renombrar, el servidor lo rechaza con Título no permitido.
Lo que se escribe en el código
Los campos de la ficha se leen y escriben con C., los algoritmos con A., el contexto con D., las funciones con F. y las variables y preguntas con v.. Cada prefijo está en DinaScript.
En el código se escribe el Name de cada función, que es lo que devuelve el servidor al releer el script. Las rutas válidas de una sección las publica Flex_GetRoutesAsync(prefix, sectionId, path).
Sin errores en el editor significa que el código compila, no que haga lo esperado. Pruébalo con un registro de prueba antes de dejarlo en una sección en uso.
Scripts reales con su evento: Recetas de scripts.