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):

ColumnaRótulo en FlexHubQué es
nombreTítuloEl nombre del script, del que sale su palabra clave. Mínimo 3 caracteres.
titulolegibleUn título alternativo que el motor no lee. FlexHub no lo muestra.
scriptCódigoEl código DinaScript. Si no compila, el servidor no lo guarda.
eventoCuándo se ejecutaEl valor de EventoScriptE. Solo se elige en el alta.
campoid, campoid2 a campoid10Campos que lo disparanHasta 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

ValorEventoScriptECuándo se ejecuta
1Formulario_Iniciado_AgregarNuevoAl empezar a crear un registro, antes de que el usuario escriba nada.
23Formulario_Iniciado_AgregarNuevo_PostRellenadoImportacionAl crear un registro, después de rellenarlo desde una importación o desde un destinador.
16Formulario_CargadoCuando el formulario termina de cargar sus datos.
17Formulario_ValoresDeCatalogosEstablecidosCuando los catálogos del formulario ya están cargados.
4Formulario_TickRecalculoEn cada ciclo de recálculo del formulario.
12Formuario_RecalcularListadoAl refrescar el listado de líneas.
2Formulario_PreACeptarJusto antes de guardar. Es el evento para validar y bloquear el guardado.
3Formulario_PreCancelarJusto antes de descartar los cambios.
19Formulario_AtajoDeTecladoAl pulsar la combinación de teclas asociada (rótulo Formulario_Macro).
20Formulario_AutoGuardarAl autoguardar (rótulo Formulario_Cargado_AutoGuardado).

Eventos de campo

ValorEventoScriptECuándo se ejecutaCampos
5Campo_CambiadoEl valor del campo cambia.Cualquiera menos los de tipo Botón.
6Campo_PierdeFocoEl usuario sale del campo.Cualquiera menos Botón y Sí/No.
7Campo_GanaFocoEl usuario entra en el campo.Cualquiera menos Botón y Sí/No.
8Campo_CierraRelacionCambiosEfectuadosSe cierra la ficha relacionada con cambios guardados.Solo Relación.
9Campo_CierraRelacionCambiosNoEfectuadosSe cierra la ficha relacionada sin cambios.Solo Relación.
10Campo_CierraRelacionSe cierra la ficha relacionada.Solo Relación.
11Campo_PreAgregarRelacionJusto antes de agregar un registro relacionado.Solo Relación. Exige un campo.
13Campo_ComboAplicarFiltroAl aplicar el filtro de un desplegable.Solo Relación.
15Campo_ClickEl 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.

En esta página