Funciones de lógica y comparación
Condicionales If y Case, comprobaciones de igualdad, rangos y listas para decidir valores en fórmulas DinaScript sin escribir bloques de código.
Funciones del espacio F. para comparar valores y decidir resultados: igualdad, mayor/menor, rangos, condicionales de dos salidas y cadenas de casos. Casi todas son familias tipadas: el sufijo (_Int, _Num, _Text, _Time, _Date, _DateTime) indica el tipo de dato de cada variante. La leyenda de sufijos y las convenciones comunes están en el índice de funciones.
Comparar dos valores
Cada comparación existe en dos formas con el mismo comportamiento: Is… devuelve Entero (1/0) y Check… devuelve Sí/No. Elige según el tipo que espere tu fórmula o campo.
| Función | Parámetros | Devuelve | Qué hace |
|---|---|---|---|
IsEquals_* / CheckEquals_* | (valor1, valor2) | Entero (1/0) · Sí/No | Los dos valores son iguales. |
IsDistinct_* / CheckDistinct_* | (valor1, valor2) | Entero (1/0) · Sí/No | Los dos valores son distintos. |
IsGreater_* / CheckGreater_* | (valor1, valor2) | Entero (1/0) · Sí/No | El primero es mayor que el segundo. |
IsGreaterOrEquals_* / CheckGreaterOrEquals_* | (valor1, valor2) | Entero (1/0) · Sí/No | El primero es mayor o igual. |
IsSmaller_* / CheckSmaller_* | (valor1, valor2) | Entero (1/0) · Sí/No | El primero es menor. |
IsSmallerOrEquals_* / CheckSmallerOrEquals_* | (valor1, valor2) | Entero (1/0) · Sí/No | El primero es menor o igual. |
IsExact_* | (valor1, valor2) | Entero (1/0) | Igualdad estricta, con comparación exacta. |
IsExactDirect_* | (valor1, valor2) | Sí/No | Como IsExact_*, pero devuelve Sí/No. |
Sufijos disponibles: _Int, _Num, _Text, _Time, _Date, _DateTime.
¿F.IsGreater_Num(v.total, 3000) = 1 ? v.descuento = 5Vacío o relleno
Solo existen para _Text, _Time, _Date y _DateTime. Misma pareja Is…/Check… que arriba.
| Función | Parámetros | Devuelve | Qué hace |
|---|---|---|---|
IsEmpty_* / CheckEmpty_* | (valor) | Entero (1/0) · Sí/No | El valor está vacío o nulo. |
IsNotEmpty_* / CheckNotEmpty_* | (valor) | Entero (1/0) · Sí/No | El valor está relleno. |
Rangos
Sufijos disponibles: _Int, _Num, _Time, _Date, _DateTime (sin variante de texto).
| Función | Parámetros | Devuelve | Qué hace |
|---|---|---|---|
Between_MinMax_* | (valor, desde, hasta) | Entero (1/0) | El valor cae dentro del rango, extremos incluidos. |
Between_MinMax_Advanced_* | (valor, desde, desdeInclusive, hasta, hastaInclusive) | Entero (1/0) | Como la anterior, pero eliges si cada extremo cuenta. |
Intersect_* | (rango1Desde, rango1Hasta, rango2Desde, rango2Hasta) | Entero (1/0) | Los dos rangos se solapan. |
Buscar en una lista
| Función | Parámetros | Devuelve | Qué hace |
|---|---|---|---|
ExistIn_* | (valor, lista) | Entero (1/0) | El valor está en la lista separada por comas. |
ExistIn_Reference | (valor, lista) | Entero (1/0) | Igual, para relaciones (GUID). |
A diferencia del resto de la página, ExistIn_* y ExistIn_Reference solo ejecutan en fórmulas de algoritmo y vía API, no en formularios.
Elegir entre dos valores
El condicional básico: una condición Sí/No y dos posibles resultados.
| Función | Parámetros | Devuelve | Qué hace |
|---|---|---|---|
If_* | (condición, opciónSí, opciónNo) | Según sufijo | Devuelve una opción u otra según la condición. |
If_Numeric | (condición, opciónSí, opciónNo) | Decimal | Versión decimal del condicional. |
If_* existe con sufijos _Int, _Text, _Time, _Date y _DateTime; para decimales usa If_Numeric.
Comparar y elegir en una llamada
La familia If_<TipoComparado>_<Comparación>_<TipoDevuelto> combina comparación y condicional: compara dos valores del primer tipo y devuelve uno de dos resultados del segundo. Por ejemplo, If_Num_IsGreater_Text compara dos decimales y devuelve un texto.
| Comparación | Parámetros | Devuelve el valor Sí cuando… |
|---|---|---|
If_<T>_IsEquals_* | (valor1, valor2, valorSí, valorNo) | Los dos valores son iguales. |
If_<T>_IsDistinct_* | (valor1, valor2, valorSí, valorNo) | Son distintos. |
If_<T>_IsGreater_* | (valor1, valor2, valorSí, valorNo) | El primero es mayor. |
If_<T>_IsGreaterOrEquals_* | (valor1, valor2, valorSí, valorNo) | El primero es mayor o igual. |
If_<T>_IsSmaller_* | (valor1, valor2, valorSí, valorNo) | El primero es menor. |
If_<T>_IsSmallerOrEquals_* | (valor1, valor2, valorSí, valorNo) | El primero es menor o igual. |
If_<T>_Between_* | (valor, desde, hasta, valorSí, valorNo) | El valor cae dentro del rango. |
If_<T>_IsEmpty_* | (valor, valorSí, valorNo) | El valor está vacío o nulo. |
If_<T>_IsNotEmpty_* | (valor, valorSí, valorNo) | El valor está relleno. |
<T> es el tipo comparado (Int, Num, Text, Time, Date, DateTime) y * el sufijo del tipo devuelto (_Int, _Num, _Text, _Time, _Date, _DateTime). Dos excepciones: Between no existe para Text, y IsEmpty/IsNotEmpty no existen para Int ni Num.
txt aviso = F.If_Num_IsGreater_Text(v.total, 5000, "Revisar con dirección", "")
@ compara dos decimales y devuelve un textoEncadenar varios casos
Las familias Case2_* a Case10_* encadenan de 2 a 10 pares evaluación-valor más un valor por defecto. Cada evaluación es un Entero (1/0), normalmente el resultado de una función Is…. Gana el primer par cuya evaluación se cumple; si ninguna se cumple, se devuelve otro.
| Función | Parámetros | Devuelve | Qué hace |
|---|---|---|---|
Case2_* … Case10_* | (evaluación1, valor1, …, evaluaciónN, valorN, otro) | Según sufijo | El valor del primer par que se cumple, u otro. |
Sufijos disponibles: _Int, _Num, _Text, _Time, _Date, _DateTime (tipo de los valores devueltos).
txt tramo = F.Case2_Text(F.IsSmaller_Num(v.total, 100), "Pequeño", F.IsSmaller_Num(v.total, 1000), "Medio", "Grande")
@ menor de 100: "Pequeño" · menor de 1000: "Medio" · resto: "Grande"Funciones de fecha y hora
Construir y descomponer fechas, sumar periodos, saltar a inicios y finales de mes o año, calcular diferencias, edades y rangos dinámicos en DinaScript.
Funciones matemáticas y de conversión
Redondear decimales, aplicar y deshacer porcentajes, forzar el signo y convertir entre texto, números y fechas en DinaScript.