Diferencia entre revisiones de «DEV AUXILIARES/EVALUACION»
Sin resumen de edición |
|||
Línea 58: | Línea 58: | ||
Por ejemplo, si definimos un auxiliar que evalúa si un artículo está activo podemos usarlo desde cualquier clase (tabla) que define un campo de tipo artículo. | Por ejemplo, si definimos un auxiliar que evalúa si un artículo está activo podemos usarlo desde cualquier clase (tabla) que define un campo de tipo artículo. | ||
Para suscribir la evaluación tenemos que ir a la definición del campo y seleccionar las opciones picando en el botón cuyo texto es "AtributoUDT":: | |||
[[Archivo:20250331 1607 SUSCRIBIR UNA EVALUACION.png|miniaturadeimagen|no|Seleccionar la opción de suscribir evaluación.]] | |||
Una vez seleccionada la opción de suscribir evaluaciones veremos la lista de evaluaciones asociadas a ese atributo donde podremos seleccionar las que necesitemos. | |||
[[Archivo:20250331 1609 SUSCRIBIR UNA EVALUACION II.png|miniaturadeimagen|no|Suscripción de evaluaciones.]] | |||
=Ejemplo= | =Ejemplo= |
Revisión del 21:13 31 mar 2025
Descripción
Los auxiliares de tipo EVALUACION permiten crear una evaluación sobre alguna tabla del sistema. Por ejemplo, para determinar si un artículo está activo.
Esta evaluación puede ser suscripta en cualquier campo del sistema cuyo atributo sea igual al que define esa evaluación.
Las evaluaciones se usan durante la edición de datos en pantallas relacionadas con clases.
Las evaluaciones son muy convenientes ya que el SQL de verificación puede cambiar en el tiempo sin la necesidad de hacer ningún otro tipo de ajuste en la aplicación.
Este tipo de auxiliar aplica a:
Modo de operación
Cuando se evalúa un auxiliar el sistema mantiene 'en memoria' el registro asociado al valor que ingresamos en la pantalla:
- Si estamos evaluando el estado de un artículo el código que ingresamos en la pantalla de edición será el de un artículo.
- Previo a aplicar la evaluación el sistema carga en memoria ese registro de la tabla de artículos para tener acceso a todos sus datos.
Etiquetas
Las etiquetas en uso son:
<MENSAJE>
Permite definir un mensaje para retornar al usuario.
Cierra con </MENSAJE>.
<SELECT>
Permite definir el SQL que hace la evaluación, este SQL pude ser tan complejo y extenso como se necesite y puede consultar cualquier objeto presente en el sistema.
El valor de retorno debe ser de tipo BIT.
Cierra con </SELECT>.
<TAG TIPO>
Permite dos valores:
- ADVERTENCIA: Retorna un mensaje de advertencia.
- ERROR: Retorna un mensaje de error.
En la operación del sistema:
- Ambos tipos retornan una pantalla indicando el tipo de situación y la leyenda asociada.
- Los mensajes de advertencia permiten continuar con el ingreso de datos.
- Los mensajes de error no permiten seguir con el ingreso de datos hasta resolver la situación a la que refiere el mensaje.
No tiene etiqueta de cierre, la sintaxis es:
<TAG TIPO>ADVERTENCIA
O:
<TAG TIPO>ERROR
Uso del auxiliar
Este auxiliar define las evaluaciones, éstas deben ser posteriormente suscriptas por campos definidos en el sistema.
Por ejemplo, si definimos un auxiliar que evalúa si un artículo está activo podemos usarlo desde cualquier clase (tabla) que define un campo de tipo artículo.
Para suscribir la evaluación tenemos que ir a la definición del campo y seleccionar las opciones picando en el botón cuyo texto es "AtributoUDT"::

Una vez seleccionada la opción de suscribir evaluaciones veremos la lista de evaluaciones asociadas a ese atributo donde podremos seleccionar las que necesitemos.

Ejemplo
Existe una evaluación sobre la tabla de artículos (ART) que verifica que el artículo esté activo, el comando completo es:
<TAG TIPO>ERROR <SELECT> SELECT FBN(FACTIVO) </SELECT> <MENSAJE> El artículo ha sido marcado como no activo y no debería usarse, consulte con quienes administran los artículos para mayor información. </MENSAJE>
La etiqueta <TAG TIPO> indica que es un mensaje de error.
Los comandos dentro del <SELECT> y </SELECT> operan en este caso directamente sobre la tabla ART retornando el valor del campo FACTIVO (El comando FBN, FieldByName retorna el valor del campo cuyo nombre se indica dentro de los paréntesis). El comando podría ser cualquier otra cosa, por ejemplo:
SELECT RESULTADO = CASE WHEN EXISTS (SELECT * FROM ART WHERE FCODIGO = 'LBEN' AND FACTIVO = 1) THEN 1 ELSE 0 END