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 = '' ? salirIsEmpty_* 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.DataListLoadAddFilterrecorta la consulta; unifdentro del recorrido trae toda la sección y descarta después. - Pide las filas justas. El tercer parámetro de
F.DataListLoades cuántos resultados llegan. - No cargues dentro de un recorrido. Un
F.DataListLoaddentro deF.ProcessDataList_Inihace 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_CountoF.Aggregate_Averagecalcula 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.