Saltar al contenido

Sustitución Dinámica

Sustitución dinámica es un tipo de sintaxis que se puede utilizar en Vinyl para sustituir dinámicamente el resultado de una expresión, ya sea en la capa de lógica empresarial o en la capa de interfaz de usuario de la aplicación. En la capa de lógica empresarial se utiliza para sustituir dinámicamente datos y en la capa de interfaz de usuario de aplicación se utiliza para sustituir dinámicamente el valor resultante que se muestra. La sustitución dinámica también se puede utilizar en Notificaciones, donde desea sustituir la información que se muestra, por ejemplo {{NombreCliente}}.

Al utilizar la sustitución dinámica en la capa de la interfaz de usuario de la aplicación, debe asignar la página a un objeto comercial para poder utilizar la sustitución dinámica. Esta información se configura a nivel de página, por lo que todos los campos necesarios para la sustitución deberán estar disponibles en el objeto comercial de la página.

Los beneficios de utilizar la sustitución dinámica en Business Logic son que le permite simplificar la cantidad de información contenida en una expresión y hacen que las expresiones sean más legibles para los humanos.

Sintaxis de Sustitución Dinámica

La sintaxis a utilizar para la sustitución dinámica es:

`{{AliasName}}`

Aquí, las llaves {{ }} (o llaves en EE. UU.) rodean el valor de Alias que se utilizará para la sustitución dinámica. Se recomienda que el valor real contenido entre llaves sea un valor de Alias frente a un valor de Nombre de columna o Expresión, ya que con el tiempo un valor de Alias generalmente se considera más estático que un Nombre de columna o Expresión.

Ejemplo de Lógica Empresarial

La sustitución dinámica es muy útil en las cláusulas Where, además de simplificar los cálculos en la capa de lógica empresarial. Aquí veremos ejemplos específicos en los que podemos aprovechar la sustitución dinámica.

Para este ejemplo, usaremos la base de datos de Northwinds como fuente y asumiremos que estamos viendo una página de Pedidos que contiene información sobre los pedidos realizados a través de una aplicación de cumplimiento de pedidos. Primero veremos cómo podemos usar la sustitución dinámica en una regla de lógica de negocios para restringir la información de Órdenes que se muestra solo a las Órdenes realizadas en los últimos 3 años:

  • Vaya a la página de Pedidos de la aplicación, vaya a Action Drawer > Live Designer
  • Profundice en el icono engranaje SQL del panel de pedidos
  • Copie el objeto comercial Pedido (Fuente) y cámbiele el nombre. Por ejemplo: Pedidos (últimos años)
  • Para la nueva regla, en la pestaña Columnas cree una nueva Expresión que calcule el número de años desde que se realizó un pedido usando DATEDIFF y proporcione un valor de Alias para esta expresión. Este alias es el que se utilizará para la sustitución dinámica. Por ejemplo: DifFecha
  • Establezca la opción de conversión adecuada para el tipo de datos lógicos de la expresión. Aquí lo configuramos en Número.
  • Validar para comprobar que los resultados sean los esperados

A continuación usaremos la sustitución dinámica en la cláusula Where de nuestro objeto de negocio, para restringir los resultados que queremos que se devuelvan.

  • Navegue a la pantalla Business Logic donde está configurando la regla desde arriba
  • Haga clic para seleccionar la pestaña Dónde
  • Haga clic en + Cláusula Dónde y agregue la sintaxis de sustitución dinámica, utilizando nuestro valor de Alias de la expresión que acaba de crear y proporcione información sobre cómo desea restringir los resultados. Por ejemplo:
    • Izquierda = {{DateDiff}}
    • Operador = <=
    • Derecha = 3
  • Validar y comprobar que los registros devueltos son sólo los Pedidos realizados en los últimos 3 años

Por último, con este ejemplo, veremos cómo podemos simplificar un cálculo mediante sustitución dinámica. Siguiendo trabajando con el objeto de negocio creado para el ejemplo que tenemos, lo modificaremos para incluir una expresión adicional que utilice sustitución dinámica para encadenar el número de años desde que se realizó un pedido con la palabra "años".

  • Haga clic en el botón Atrás de Vinyl para regresar a la pantalla Business Logic donde está configurando la regla.
  • Haga clic para seleccionar la pestaña Columnas
  • Haga clic en + Columna y agregue una expresión que emita el valor de sustitución dinámica y lo combine con la palabra 'años':
    • Por ejemplo: CAST({{FechaDiff}} as string) || 'years'
  • Proporcione un valor de Alias para esta expresión. Por ejemplo: Años
  • Validar resultados

Ejemplo de URL

Si busca sustituir dinámicamente una URL en un objeto de datos, puede usar una sintaxis como la del siguiente ejemplo:

'www.webpage.com/path/path/' || {{DynamicSubstitution}}

Ejemplo de Expresión Compleja

Si trabaja con sustitución dinámica en una expresión más compleja, tenga cuidado con la sintaxis. Puede haber casos en los que necesites agregar un conjunto adicional de paréntesis para que la sintaxis funcione correctamente (o como esperas).

Por ejemplo, si utilizara el siguiente Expression Vinyl, se devolverá un error de División por cero:

IIF({{Suma}}` = 0, 0,({{CompletedCount}}/{{Suma}}`)*100) 

Esto se debe a que el proceso y el orden en el que se evalúa la expresión requieren un conjunto adicional de paréntesis para generar los resultados deseados. Aquí está la versión de sintaxis corregida:

IIF(({{Suma}}`) = 0, 0,((CAST({{CompletedCount}} AS DECIMAL(15,5)))/(CAST({{Suma}}` AS DECIMAL(15,5))))*100)

Ejemplo de Nombre de Página o Panel

Las sustituciones dinámicas también se pueden utilizar para nombres de páginas o paneles. En este escenario de ejemplo, usaremos la sustitución dinámica para un nombre del panel del formulario de la página de empleados. Aquí sustituiremos dinámicamente el Nombre completo del empleado como Nombre del panel para el Formulario de empleado.

  1. Navegue hasta la página de su aplicación donde desea sustituir el nombre del panel. Por ejemplo: empleado
  2. Haga clic en el menú Cajón de acciones, seleccione Live Designer
  3. Seleccione el Objeto de negocio que contiene el valor de la columna que utilizará para Fuente en Opciones de página.
  4. Haga clic en la pestaña Opciones de etiqueta del panel cuyo nombre desea modificar. Por ejemplo: empleado
  5. Modifique el campo Etiqueta para que contenga el valor de la columna que está utilizando, utilizando la sintaxis adecuada para la sustitución dinámica.

    • Por ejemplo: {{NombreCompleto}}
  6. Haga clic en Guardar

  7. Vuelva a la página de la aplicación, actualice su navegador web y pruebe

Validaciones de Vinyl

Si desea utilizar sustituciones dinámicas con mensajes de validación de Vinyl, deberá colocar el valor de sustitución dinámica en el propio mensaje de validación y también en el objeto comercial del panel.

Ejemplo de mensaje de validación: No se puede exceder {{MaxDiscount}}

Limitaciones

Las siguientes son limitaciones conocidas al trabajar con sustituciones dinámicas:

  • Actualmente no se admite para nombres de columnas en un gráfico
  • El formato de moneda extranjera actualmente no permite la sustitución dinámica. La solución alternativa es formatear el objeto de datos y convertirlo en cadena, lo que hace que la función total funcione.