Scripts y eventos
Asocia lógica a los eventos de tus secciones y campos para que Dinaup ejecute acciones cuando el usuario opera con los datos.
Un script es lógica que se ejecuta cuando ocurre un evento. El evento es el disparador (el usuario abre un formulario, cambia un campo, pulsa un botón); el script es lo que pasa a continuación (recalcular un total, validar antes de guardar, lanzar un informe).
Esta es la pieza de Flex que da comportamiento a tus secciones: mientras las secciones y los campos definen qué datos hay, los scripts definen qué ocurre cuando se trabaja con ellos.
Un script siempre responde a la pregunta "cuándo" antes que a la de "qué". Primero eliges el evento que lo dispara; después decides la lógica que ejecuta. Sin evento no hay script.
Tipos de script
Según la lógica que quieras ejecutar, eliges un tipo. Todos se asocian a un evento de la misma forma; lo que cambia es lo que hacen al dispararse.
| Tipo | Para qué sirve |
|---|---|
| Terminal | Ejecuta instrucciones en el terminal del dispositivo: abrir una ventana, navegar a otra sección, refrescar datos, mostrar un mensaje. Es la forma de orquestar la interfaz. |
| Algoritmo | Calcula valores y aplica reglas con DinaScript. Se usa para totales, validaciones y derivar campos a partir de otros. → Ver Algoritmos. |
| Plantilla de impresión | Genera un documento (factura, albarán, listado) a partir de los datos. → Ver Documentos dinámicos. |
| Función API | Invoca una operación expuesta por la API para integrar con servicios externos o disparar procesos. |
Scripts de formulario y scripts de campo
Hay dos ámbitos según dónde viva el script. Es la primera decisión que tomas: ¿reacciona a algo que pasa en todo el formulario, o a algo que pasa en un campo concreto?
| Ámbito | Reacciona a… | Ejemplo |
|---|---|---|
| Script de formulario | El ciclo de vida del registro completo: abrirlo, cargarlo, aceptarlo, cancelarlo, recalcularlo. | Recalcular el total de una factura justo antes de aceptarla. |
| Script de campo | Lo que ocurre en un campo individual: cambiar su valor, ganar o perder el foco, pulsarlo. | Al cambiar la cantidad, recalcular el subtotal de esa línea. |
La diferencia práctica: un script de formulario se dispara una vez por operación sobre el registro; un script de campo se dispara cada vez que el usuario interactúa con ese campo. Elige el ámbito según la granularidad que necesites.
Eventos de formulario
Se disparan en distintos momentos del ciclo de vida del registro que el usuario tiene abierto.
| Evento | Cuándo se dispara |
|---|---|
| Iniciado al agregar nuevo | Al empezar a crear un registro nuevo, antes de que el usuario escriba nada. Ideal para fijar valores por defecto. |
| Pre-aceptar | Justo antes de guardar. El momento para validar y bloquear el guardado si algo no cuadra, o para recalcular totales finales. |
| Pre-cancelar | Justo antes de descartar los cambios. Útil para confirmar o limpiar estado. |
| Tick de recálculo | En cada ciclo de recálculo del formulario, para mantener valores derivados al día mientras se edita. |
| Recalcular listado | Al refrescar el listado de líneas o registros asociados. |
| Cargado | Cuando el formulario termina de cargar sus datos. Para ajustes que dependen del registro ya disponible. |
| Valores de catálogos establecidos | Cuando los catálogos (listas de opciones) ya están cargados y disponibles para usarse. |
| Atajo de teclado / Macro | Al pulsar una combinación de teclas asociada, para lanzar una acción rápida. |
Eventos de campo
Se disparan por la interacción del usuario con un campo concreto del formulario.
| Evento | Cuándo se dispara |
|---|---|
| Cambiado | El valor del campo cambia. El evento más habitual para recalcular dependencias. |
| Pierde foco | El usuario sale del campo. Buen momento para validar lo que acaba de introducir. |
| Gana foco | El usuario entra en el campo. |
| Cierra relación | Se cierra una relación asociada al campo. |
| Pre-agregar relación | Justo antes de añadir un registro relacionado, para validar o preparar la nueva relación. |
| Combo aplicar filtro | Al aplicar un filtro sobre un campo de tipo lista o combo, para acotar las opciones que se muestran. |
| Click | El usuario pulsa el campo (típico en campos que actúan como botón o acción). |
Otros disparadores
Más allá del formulario y los campos, un script puede ejecutarse de forma independiente o desde los informes.
| Disparador | Qué hace |
|---|---|
| Independiente | El script no cuelga de un formulario ni de un campo: se ejecuta por sí mismo cuando se invoca. |
| Informe | Se lanza sobre el resultado de un informe completo. |
| Informe (filas seleccionadas) | Se lanza solo sobre las filas que el usuario ha seleccionado en un informe, para actuar sobre un subconjunto. |
Contextos
El contexto indica dónde aparece y se puede activar un script. Determina en qué parte de la interfaz queda disponible para el usuario.
| Contexto | Dónde aparece |
|---|---|
| Todos | Disponible en todos los contextos aplicables. |
| Campos personales | Asociado a campos personalizados de la sección. |
| Botones de informe | Como acción accesible desde los botones de un informe. |
| Botones de widget | Como acción accesible desde los botones de un widget. |
Cómo encajan los scripts en Flex
Los scripts son el pegamento entre las piezas de Flex: las secciones aportan los datos, los algoritmos calculan, los documentos imprimen, y los scripts deciden cuándo se dispara cada cosa.
- Operan sobre secciones y sus campos, reaccionando a lo que el usuario hace con ellos.
- Un script de tipo Algoritmo ejecuta lógica de DinaScript para calcular o validar valores. → Ver Algoritmos.
- Un script de tipo Plantilla de impresión genera salida con documentos dinámicos.
- Los disparadores de informe conectan los scripts con los informes, para actuar sobre sus resultados.
Un script es lógica que se ejecuta sola sobre tus datos. Defínelo con criterio y prueba el resultado antes de dejarlo en producción, igual que cualquier automatización. Un Pre-aceptar mal planteado puede bloquear guardados; un Cambiado que recalcula de más puede ralentizar la edición.
Preguntas frecuentes
→ Secciones → Campos → Algoritmos → Documentos dinámicos → Informes