DinaScript
DinaScript es el lenguaje de scripting propietario de Dinaup para logica de negocio dentro de las secciones. Permite definir comportamientos avanzados que se ejecutan cuando el usuario interactua con formularios y datos.
Eventos disponibles
Los scripts se asocian a eventos dentro de una seccion. Cada evento tiene un contexto de ejecucion diferente:
| Evento | Momento de ejecucion | Uso tipico |
|---|---|---|
campo_click | El usuario hace clic en un campo | Abrir dialogos, navegar a otra seccion |
campo_cambiado | El valor de un campo cambia | Recalcular campos dependientes, validar datos |
formulario_tickrecalculo | Cada ciclo de recalculo del formulario | Logica continua que debe evaluarse constantemente |
formulario_guardarpre | Antes de guardar el registro | Validaciones finales, transformaciones de datos |
formulario_guardarpost | Despues de guardar el registro | Acciones posteriores como notificaciones o creacion de registros relacionados |
Espacios de nombres
DinaScript se organiza en dos espacios de nombres principales:
F (Functions)
Funciones para manipulacion de datos: operaciones matematicas, texto, fechas, conversiones y utilidades generales.
S (Schema)
Acceso a la estructura del esquema: secciones, campos, informes y documentos dinamicos. Permite referenciar elementos por su ID.
Donde se ejecutan los scripts
Los scripts de DinaScript se ejecutan en el servidor, dentro del contexto del formulario activo. Tienen acceso a:
- Los valores actuales de todos los campos del registro.
- La sesion del usuario (empresa, permisos, idioma).
- Las funciones del espacio de nombres F y S.
Los scripts no se ejecutan en el navegador del usuario. Toda la logica se procesa en el servidor de Dinaup, lo que garantiza seguridad y consistencia.
Sintaxis basica
// Evento: cuando cambia el campo "cantidad", recalcular el total
campo_cambiado(cantidad) {
total = F.Multiplicar(cantidad, precio_unitario)
}
// Evento: antes de guardar, validar que el total sea positivo
formulario_guardarpre() {
si (total <= 0) {
F.Error("El total debe ser mayor que cero")
}
}
Ejemplo: Autorrellenado al seleccionar cliente
// Al cambiar la relacion "cliente", autorrellenar datos fiscales
campo_cambiado(cliente) {
nif = F.ObtenerCampo(cliente, S.Entidades.NIF)
direccion = F.ObtenerCampo(cliente, S.Entidades.Direccion)
}
Los scripts de DinaScript deben configurarse desde Dinaup Desktop. Cambios incorrectos en los eventos pueden afectar al comportamiento del formulario para todos los usuarios.