Esta documentación está en fase de desarrollo y puede contener errores.

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ónParámetrosDevuelveQué hace
IsEquals_* / CheckEquals_*(valor1, valor2)Entero (1/0) · Sí/NoLos dos valores son iguales.
IsDistinct_* / CheckDistinct_*(valor1, valor2)Entero (1/0) · Sí/NoLos dos valores son distintos.
IsGreater_* / CheckGreater_*(valor1, valor2)Entero (1/0) · Sí/NoEl primero es mayor que el segundo.
IsGreaterOrEquals_* / CheckGreaterOrEquals_*(valor1, valor2)Entero (1/0) · Sí/NoEl primero es mayor o igual.
IsSmaller_* / CheckSmaller_*(valor1, valor2)Entero (1/0) · Sí/NoEl primero es menor.
IsSmallerOrEquals_* / CheckSmallerOrEquals_*(valor1, valor2)Entero (1/0) · Sí/NoEl primero es menor o igual.
IsExact_*(valor1, valor2)Entero (1/0)Igualdad estricta, con comparación exacta.
IsExactDirect_*(valor1, valor2)Sí/NoComo IsExact_*, pero devuelve Sí/No.

Sufijos disponibles: _Int, _Num, _Text, _Time, _Date, _DateTime.

¿F.IsGreater_Num(v.total, 3000) = 1 ? v.descuento = 5

Vacío o relleno

Solo existen para _Text, _Time, _Date y _DateTime. Misma pareja Is…/Check… que arriba.

FunciónParámetrosDevuelveQué hace
IsEmpty_* / CheckEmpty_*(valor)Entero (1/0) · Sí/NoEl valor está vacío o nulo.
IsNotEmpty_* / CheckNotEmpty_*(valor)Entero (1/0) · Sí/NoEl valor está relleno.

Rangos

Sufijos disponibles: _Int, _Num, _Time, _Date, _DateTime (sin variante de texto).

FunciónParámetrosDevuelveQué 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ónParámetrosDevuelveQué 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ónParámetrosDevuelveQué hace
If_*(condición, opciónSí, opciónNo)Según sufijoDevuelve una opción u otra según la condición.
If_Numeric(condición, opciónSí, opciónNo)DecimalVersió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ónParámetrosDevuelve 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 texto

Encadenar 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ónParámetrosDevuelveQué hace
Case2_*Case10_*(evaluación1, valor1, …, evaluaciónN, valorN, otro)Según sufijoEl 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"

Índice de funcionesFunciones de texto

On this page