Artículos sobre: Admins & desarrolladores

Visibilidad y obligatoriedad de campos por script

La visibilidad por script permite configurar visibilidades dinámicas para los campos del formulario. Así, puedes definir si ciertos campos deben ser requeridos, editables, solo lecutra u ocultos en base al valor de otro campo o a la decisión tomada en cierta tarea.

Los scripts pueden ser aplicados en la tarea de inicio, como también en las intermedias o en los estados finales.

Acerca del desarrollo de scripts en INTEGRADOC



Para conocer más acerca de la API JavaScript que ofrece INTEGRADOC, los métodos disponibles y las bases de la metodología de desarrollo de los mismos, debes revisar este post .


Metodología para el desarrollo de scripts de visibilidad



Salvo las funciones de la API de INTEGRADOC y la forma especial de referenciar los campos utilizanado [[ ]], el resto del código es JavaScript y se rige por las reglas de desarrollo Javascript.

Un script de visibilidad es básicamente un conjunto de funciones que determina bajo qué condiciones hay que modificar la visibilidad de un campo.

Además, cada función debe suscribirse al campo que quiere "escuchar" para que al cambiar el valor de ese campo, se ejecute la función automáticamente. Si una función debe ejecutarse ni bien se abre la instancia de proceso (ej.: para ocultar un campo), además deberá suscribirse mediante el método Integradoc.onInit.

REGLA: Para poder modificar la visibilidad de un campo en tiempo real, dependiendo de otros campos, el campo cuya visibilidad cambiará dinámicamente debe estar configurado como editable en el proceso (para la tarea que tenga el script). Caso contrario, por más que se modifique la visibilidad por script no se comportará adecuadamente.)


Estructura del script



Escribir todas las funciones necesarias para configurar la visibilidad dinámica. Para definir una función debes escribir: function nombreFuncion(){ ... contenido de la función ... }

Suscribir las funciones a los campos correspondientes y/o al evento de inicialización. Las suscripciones deben estar dejabo de la definición de la función.

//Suscribirse a un campo para ejecutar una función
Integradoc.onChange( [[nombre campo]] , nombreFuncion );_

//Suscribirse al evento de inicio
Integradoc.onInit(nombreFuncion);_



¿Dónde situar el script?



Durante la creación o edición del proceso debes hacer clic en el botón de Visibilidad y Scripts que se encuentra en la pestaña Formulario.






Dentro del pop-up de visibilidad debes hacer clic en la pestaña Scripts y luego seleccionar la tarea donde quieres que el script se ejecute.

Master Script: El script que se defina allí será ejecutado en todas las tareas activas del proceso (no estados finales). Esto es muy útil cuando hay un comportamiento que debe ser aplicado en todas las etapas del proceso.

Por último, coloca el script allí e INTEGRADOC lo evaluará. Si todo está correcto te dejará continuar, en cambio si hay algún error INTEGRADOC te notificará de la ubicación del error.





Ejemplos:




Ejemplo según valor de un campo



En este ejemplo, tenemos un campo combo manual llamado "Estado Civil" y cuando un usuario selecciona la opción "Otro", se mostrará el campo "Por favor especifique" (requerido). En caso contrario ese campo estará oculto.

En primer lugar definimos la siguiente función:

//Function maritalStatus para evaluar el contenido del campo "Estado Civil"
function maritalStatus(){
   if ( Integradoc.getFieldValue( [[Estado Civil]] ) ==  "Otro" ){ 
      //Establecemos el campo como requerido
      Integradoc.setRequired( [[Por favor especifique]] );
   } else {
      // En cualquier otro caso, el campo será oculto
      Integradoc.setHidden( [[Por favor especifique]] );
   }	
};

Luego es necesario suscribir a la función al campo correspondiente:

//Debemos "escuchar" el campo "Estado Civil" y cuando cambie ejecutar la funcion.
Integradoc.onChange( [[Estado Civil]] , maritalStatus);

//Dado que el campo "Estado Civil" estará editable (por REGLA), queremos que ni bien se abra la instancia de proceso,  si el valor no es "Otro", quede oculto. Por eso hay que suscribir a la función al evento de inicio.
Integradoc.onInit( maritalStatus );


Resultado final





Ejemplo según botón seleccionado



A veces la visibilidad de un campo dependerá de la decisión tomada. Por ejemplo, si se decide rechazar una solicitud podemos establecer que el campo "Motivo de rechazo" sea obligatorio. En cambio, si se aprueba ese campo estará oculto.
En ese caso la función tiene 2 parámetros que pueden ser utilizados para consultar que decisión (botón) se ha elegido:

function test(msg,boton){
    if(boton== "Rechazar"){
      Integradoc.setRequired([[Motivo de Rechazo]]);
   }
    else{	
       Integradoc.setHidden([[Motivo de Rechazo]]);
   }
}

Integradoc.onAction(test);

Actualizado el: 06/04/2020

¿Este artículo te resultó útil?

Comparte tu opinión

Cancelar

¡Gracias!