Buenas prácticas de DinaScript

Qué tipo de script elegir, cómo cargar listados sin consultas de más y cuándo un algoritmo calcula mejor que un recorrido.

Reglas para que un script de DinaScript no ralentice el guardado ni falle a medias. La sintaxis está en DinaScript.

El tipo de script

El tipo es TipoScriptE: Terminal para los eventos del formulario, Algoritmo para cálculos, PlantillaDeImpresion para documentos y FuncionAPI para lógica de servidor. Ver Scripts.

Comprueba antes de operar

Sin try, un fallo a mitad de script no se captura. Comprueba antes los valores que llegan del usuario o de campos vacíos:

¿F.IsEmpty_Text(v.emailCliente) = 1 ? v.error = 'Falta el email del cliente'
¿C.ReferenciaCliente = '' ? salir

IsEmpty_* e IsNotEmpty_* existen para Text, Time, Date y DateTime. Ver Lógica y comparación.

Carga solo lo necesario

Cada listado que cargas es una consulta a la base de datos.

  • Filtra en la carga. F.DataListLoadAddFilter recorta la consulta; un if dentro del recorrido trae toda la sección y descarta después.
  • Pide las filas justas. El tercer parámetro de F.DataListLoad es cuántos resultados llegan.
  • No cargues dentro de un recorrido. Un F.DataListLoad dentro de F.ProcessDataList_Ini hace una consulta por fila. Para cruzar datos, usa un informe con las columnas ya cruzadas o un algoritmo.
  • Calcula los totales con algoritmos. Para sumar, contar o promediar, un algoritmo con F.Aggregate_Sum, F.Aggregate_Count o F.Aggregate_Average calcula en el servidor sin recorrer filas.
@ El filtro viaja en la consulta: llegan solo las compras del periodo
F.DataListLoad(S.Sections.ComprasGastos.ID, 1, 200)
F.DataListLoadAddFilter(S.Sections.ComprasGastos.ID, S.Fields.ComprasGastos.FechaContable.ID, '>=', v.Fecha_Desde)
F.DataListLoadAddFilter(S.Sections.ComprasGastos.ID, S.Fields.ComprasGastos.FechaContable.ID, '<=', v.Fecha_Hasta)

Cómo se recalcula un campo calculado y qué tipo de algoritmo elegir: Algoritmos.

En esta página