Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
configuracionscripts [2025/05/29 23:45] – [Configuración de scripts] scantorconfiguracionscripts [2026/09/02 23:23] (actual) clopez
Línea 6: Línea 6:
  
 **Nota:** Los scripts son utilizados como tipo de tareas en las [[configuracionlistachequeo#Configuración de listas de chequeo|listas de chequeo]]. **Nota:** Los scripts son utilizados como tipo de tareas en las [[configuracionlistachequeo#Configuración de listas de chequeo|listas de chequeo]].
- 
- 
  
  
Línea 23: Línea 21:
   * La función **encodeURI(var)** permite utilizar espacios y otros caracteres como ''{}'' ''()'' en un mensaje sin necesidad de modificarlos por su código ASCII correspondiente. Por ejemplo, colocar %20 en lugar de espacio.   * La función **encodeURI(var)** permite utilizar espacios y otros caracteres como ''{}'' ''()'' en un mensaje sin necesidad de modificarlos por su código ASCII correspondiente. Por ejemplo, colocar %20 en lugar de espacio.
   * La función **variable.replace** reemplaza los caracteres especiales que no son soportados en una URL por los que sí son soportados. Por ejemplo, utilizarlo para reemplazar ñ por n, á por a, etc.   * La función **variable.replace** reemplaza los caracteres especiales que no son soportados en una URL por los que sí son soportados. Por ejemplo, utilizarlo para reemplazar ñ por n, á por a, etc.
 +
  
 **Ejemplo de código:** **Ejemplo de código:**
Línea 92: Línea 91:
     - Para utilizar algún campo de un objeto, por ejemplo //Caso//, se debe utilizar de la siguiente forma: ''caso.nombreCampo''. Ejemplo: ''caso.REFNUM''.     - Para utilizar algún campo de un objeto, por ejemplo //Caso//, se debe utilizar de la siguiente forma: ''caso.nombreCampo''. Ejemplo: ''caso.REFNUM''.
     - Para utilizar los custom fields de un objeto, por ejemplo //Caso//, se debe utilizar de la siguiente forma: ''caso.CF.nombreCustomField''. Ejemplo: ''caso.CF.nombre''.     - Para utilizar los custom fields de un objeto, por ejemplo //Caso//, se debe utilizar de la siguiente forma: ''caso.CF.nombreCustomField''. Ejemplo: ''caso.CF.nombre''.
-    - La función debe respectar el orden de los objetos: +    - La función debe respectar el orden de los objetos. La firma de la función depende de desde dónde se invoque el script
-      <code>function execute(caso, stage, contacto, usuario, cuenta, service){}</code> +            Como tarea de tipo Script en una lista de chequeo: ''function execute(caso, script, contacto, usuario, cuenta, service)''. El segundo parámetro es el registro del script, no el paso del flujo. 
-  - Clic en el botón **Guardar** ubicado en la parte superior derecha de la pantalla.+            - Asociado a un Contacto, una Cuenta, un Usuario o un Caso: ''function execute(usuario, cuenta, contacto, caso, service)''
 +            - **Importante:** los parámetros se enlazan por posición, no por nombre. Un script escrito para una de las dos formas y reutilizado en la otra no falla: recibe los objetos cambiados de lugar y opera sobre datos equivocados. Antes de reutilizar un script del catálogo en otro punto, ajuste el orden de los parámetros. 
 +            - **Nota:** los eventos de paso del flujo —''preIn'', ''postIn'', ''preOut'', ''preSave'' y ''postSave''— son funciones distintas de ''execute'' y sí reciben el paso: ''(caso, stage, contacto, usuario, cuenta, service)''
 +            - **Nota:** cuando el script se asocia a un Contacto, a una Cuenta o a un Usuario, solo llega con datos el objeto que se está creando o modificando. Los demás llegan vacíos. 
 +  -Clic en el botón **Guardar** ubicado en la parte superior derecha de la pantalla.
  
 ===== Modificar un script ===== ===== Modificar un script =====
Línea 287: Línea 290:
   * CF    * CF 
   * GRUPOCONTACTOS   * GRUPOCONTACTOS
 +
 +===== Límites de ejecución =====
 +
 +El script se ejecuta en un entorno restringido:
 +
 +  - No puede acceder a clases de Java. Dispone de JavaScript y de los objetos que recibe como parámetros, entre ellos ''service'' para invocar servicios externos.
 +  - La ejecución se corta a los 60 segundos. Superado el plazo, el paso no avanza.
 +
 +**Importante:** el bloqueo de clases Java es posterior a los ejemplos publicados
 +en esta página. Un script existente que resuelva llamadas externas construyendo
 +objetos de Java en lugar de usar ''service'' deja de funcionar. Revíselos antes
 +de la próxima actualización.
 +