Preguntas frecuentes sobre scripts de cliente
1. ¿Dónde puede ver la lista de ZDK compatibles con el script de cliente?
La biblioteca de kits de desarrollo de Zoho (ZDK) comprende un amplio conjunto de API de cliente y web que amplían el alcance de las aplicaciones de Zoho. Puede utilizarlos para realizar operaciones de interfaz de usuario y activar llamadas de API de REST. Para ver la documentación de ZDK, haga clic en el ícono de ayuda de la Biblioteca en Información de la IDE de script de cliente.
2. ¿Las llamadas de la API de CRM se activarán desde el recuento de script de cliente hasta los límites diarios de la API?
Sí, cada API web de ZDK en el script de cliente realiza una llamada de API a Zoho CRM, por lo que cada ejecución de una API web de ZDK afecta los límites de la API.
3. ¿Cuál sería la forma correcta de establecer el valor de un campo de búsqueda a través del script de cliente?
Tiene que mencionar la ID del registro junto con el nombre cuando intente establecer el valor en un campo de búsqueda.
Ejemplo: supongamos que hay un campo de búsqueda llamado Categoría y que el requisito es que se debería completar en función del Producto seleccionado por el usuario. Batería, Termostato e Interruptor de encendido pertenecen a la categoría de Interruptores eléctricos. Sensor de nivel de combustible, Sensor de luz y Sensor del airbag pertenecen a la categoría de Sensores. Es decir, si el usuario selecciona el producto “Batería”, la categoría del campo de búsqueda se deberá completar automáticamente como Interruptores eléctricos. Este es el código para lograrlo.
if (value.name == 'Airbag sensor' || value.name == 'Light sensor' || value.name == 'Fuel level sensor') {
//Populate value for lookup field Category based on the condition
ZDK.Page.getField('Category').setValue({ "id": "4967860000001049208", "name": "Sensors" });
}
else if (value.name == 'Ignition Switch' || value.name == 'Thermostat' || value.name == 'Battery') {
//Populate value for lookup field Category based on the condition
ZDK.Page.getField('Category').setValue({ "id": "4967860000001049217", "name": "Electrical Switches" });
}
4. ¿Cómo depurar un script de cliente en Zoho CRM?
Puede utilizar la instrucción log() para depurar el script. Los resultados de la ejecución de esta instrucción log() se mostrarán en el panel de mensajes de la opción Ejecutar. Además, también se muestra la información sobre el estado de ejecución, los registros, los mensajes de excepción y el tiempo que se toma para la ejecución. Por ejemplo, considere el siguiente script. Tiene dos instrucciones de registro. Puede ver el resultado de las instrucciones de registro en el panel de mensajes de la opción Ejecutar.
var user = ZDK.Apps.CRM.Users.fetchById($Crm.user.id);
var field_obj = ZDK.Page.getField('Phone_Number');
log(field_obj.getValue());
log("Profile name of the user is "+ user.profile.name);
if(user.profile.name != 'Administrator')
{
field_obj.mask({ character: '*', length: 5, reverse: true });
}
Cualquier operación de CRM realizada dentro del modo de ejecución se reflejará en su cuenta de Zoho CRM.
5. ¿El script de cliente admite idiomas distintos de JavaScript?
No. El script de cliente en Zoho CRM solo admite JavaScript.
6. ¿Se ejecutará un script de cliente para todos los diseños del módulo?
No. El script de cliente se ejecutará solo para el diseño especificado mientras se configura el script de cliente. Si desea que se ejecute el script para otros diseños o para todos los diseños de un módulo, deberá crear un script de cliente separado para cada diseño.
7. ¿Cuál es el uso de la sección Terminal en el IDE de script de cliente?
Puede ejecutar las API de ZDK de forma instantánea en la sección Terminal del IDE de script de cliente. Por ejemplo, cuando escribe el siguiente script en la sección Terminal y presiona Intro, puede ver el mensaje de alerta en la pantalla.
ZDK.Client.showMessage('Welcome to Client Script IDE', { type: 'info' });
8. ¿Cuándo debería usar el evento de página onChange y el evento de campo onChange?
- Evento de campo - onChange
- Si desea que el script se ejecute solo cuando se actualice el campo específico, puede utilizar el evento onChange de campo.
- Evento de página - onChange
- Si desea que el script se ejecute cuando se actualice cualquiera de los campos en esa página, puede utilizar el evento onChange de página.
- Cuando tenga que escribir un script para más de un campo en la misma página, puede usar las instrucciones “if” y “switch..case”.
9. Mediante el uso del script de cliente, ¿cómo evito que se guarde el registro cuando el valor de un campo específico ingresado no es válido?
Para evitar que se guarde un registro, deberá seguir los siguientes pasos: Tiene que usar el tipo de evento onSave, ya que desea evitar que el registro se guarde. Agregue la instrucción “return false” (Entrega de resultado negativo). Siempre muestre errores/alertas/mensajes, de modo que el usuario sepa por qué no se está guardando el registro.
Ejemplo: supongamos que el campo “cantidad” no debe tener un valor inferior a 100. Para lograrlo, tiene que crear un script de cliente con el tipo de evento onSave, mostrar un mensaje de error y agregar una instrucción de entrega de resultado negativo (return false) si el registro no se debe guardar para esa condición en particular.
//Get the value of the field Quantity of Products
var qty_field = ZDK.Page.getField("Quantity_of_products");
log(qty_field);
//Invoke the static method by passing the value of Quantity of Products
if(qty_field.getValue() < 100)
{
qty_field.showError('The minimum value should be 100'); // or
// ZDK.Client.showMessage('The minimum value should be 100', { type: 'error' });//or
//ZDK.Client.showAlert('The minimum value should be 100');//or
return false;
}
10. ¿Cuáles son todos los lugares donde se puede ejecutar el script de cliente?
Actualmente, el script de cliente se puede ejecutar en las siguientes páginas.
- Página Crear
- Página Editar
- Página Clonar
- Página Detalles (lienzo)
- Página Detalles (estándar)
- Página Lista (estándar)
- Página Crear (asistente)
- Página Editar (asistente)
11. ¿Se puede ejecutar el script de cliente en la página Creación rápida?
No, actualmente el script de cliente en Zoho CRM no se puede ejecutar en la página Creación rápida.
12. ¿Funciona el script de cliente con todas las versiones del navegador?
El script de cliente en Zoho CRM es compatible con todos los navegadores web compatibles con Zoho CRM. Puede encontrar la lista de navegadores compatibles y sus respectivas versiones en este enlace.
13. ¿Cuáles son todos los eventos compatibles que activan la ejecución del script de cliente?
Hay un conjunto de eventos (acciones del usuario) disponibles que desencadenan la ejecución del script de cliente. Consulte la lista de eventos compatibles aquí.
14. ¿Cómo obtener/configurar valores en filas de subformularios mediante el uso del script de cliente?
Puede utilizar Form.getValues() y Form.setValues() para obtener/configurar valores en subformularios o cualquier otro campo admitido en el formulario actual. Además, consulte este código de ejemplo para saber cómo completar los datos en filas de subformularios mediante el uso del script de cliente.
15. ¿Es posible mostrar archivos PDF de sistemas de terceros en Zoho CRM mediante el uso del script de cliente?
Puede mostrar archivos PDF de sistemas de terceros mediante el uso de Widget en Zoho CRM. Es posible representar un widget con el script de cliente.
16. ¿Podemos utilizar el script de cliente para mostrar una página HTML personalizada o cualquier página web de terceros dentro de Zoho CRM?
Sí. Es posible mediante la representación de un widget con el script de cliente. Consulte cómo representar un widget en una ventana emergente/referencia/submenú mediante el script de cliente.
17. ¿Es posible completar datos de forma dinámica en campos basados en otras entradas de campo mediante el uso del script de cliente?
Sí. Es posible. Revise este código de ejemplo que explica cómo completar los datos del formulario en función del campo de búsqueda mediante el uso del script de cliente.
18. ¿Está permitido utilizar window.localStorage para el almacenamiento temporal de datos?
No. Actualmente, no es posible con el script de cliente.
19. ¿Podemos declarar variables con “let” y “const” al escribir un script?
Sí. Puede declarar variables con “var”, “let” y “const” en el script de cliente. Además, se admiten todas las funciones JavaScript principales hasta ES7.
20. ¿Es posible registrar el resultado obtenido de la ejecución del script de cliente en el registro de consola de un navegador web?
Sí. Para registrar el resultado de la ejecución de scripts de cliente, puede utilizar el método log() o console.log() para enviar los datos a la consola del navegador.
21. ¿Las funciones asincrónicas son compatibles con el script de cliente?
Sí. Actualmente, se admiten todas las funciones JavaScript principales hasta ES7.
22. ¿Se pueden crear eventos personalizados, además de eventos estándar, para activar la ejecución del script de cliente?
Lamentablemente, en la actualidad no es posible crear eventos personalizados para activar la ejecución del script de cliente. A partir de ahora, solo se admite un conjunto limitado de eventos de CRM. Consulte esta documentación sobre eventos para obtener más información acerca de los eventos que activan la ejecución del script de cliente.
23. Cuando se invocan conexiones con el script de cliente, es necesario especificar el “param_type”. ¿Cuáles son todos los tipos de parámetros compatibles?
param_type = 1 → parámetro de la solicitud param_type = 2 → cuerpo de la solicitud/carga útil
24. ¿Es posible activar el script en un evento de edición de campo en Zoho CRM?
Sí. Puede utilizar eventos de campo que activarán su script cuando ingrese/edite un valor en un campo. Consulte este enlace para obtener más información sobre estos eventos.
25. ¿Es posible establecer un valor en la página Detalles (lienzo) mediante el script de cliente?
Actualmente, no se admiten las ediciones de campo (setValue( )) mediante el script de cliente en los campos de la página Detalles (lienzo) y la página Detalles (estándar). Sin embargo, esta función se admite en los formularios con campos obligatorios que se incluyen en la página Detalles (lienzo/estándar). Como solución alternativa, puede utilizar la API de actualización de registros para actualizar el registro en la página Detalles (lienzo) junto con el método $Client.Refresh().
26. ¿Cómo obtener valores de un módulo Búsqueda?
Para obtener valor del campo Búsqueda, utilice el método ZDK.Page.getField('Lookup').getValue(). Además, consulte este código de ejemplo, en el que explicamos cómo capturar valores del módulo Búsqueda y completar los datos en el módulo actual.
27. ¿Cuáles son todos los operadores admitidos para aplicar el filtro Búsqueda mediante el método setCriteria( )?
Actualmente, solo se admiten los operadores “starts_with” y “equals”. Sin embargo, pronto admitiremos otros operadores también.
28. ¿Se puede acceder a los recursos estáticos cargados en un script de cliente en toda la organización o solo se puede acceder a ellos dentro del módulo o la página donde se cargaron?
Los recursos estáticos, una vez agregados, estarán disponibles para todos los scripts de esa página en particular. Los usuarios pueden agregar estos recursos a sus scripts y utilizarlos. Haga clic aquí para obtener más información sobre los recursos estáticos.
29. ¿Necesitamos guardar el script antes de probarlo durante el tiempo de ejecución?
No es necesario guardar el código para probar el script en el modo Ejecución.
30. ¿Es posible deshabilitar los botones personalizados?
Sí. Es posible habilitar/deshabilitar los botones personalizados y los botones del sistema.
31. ¿Podemos utilizar el script de cliente en la página Detalles (lienzo)?
Sí. El script de cliente puede utilizarse en varias páginas, por ejemplo, página Crear, página Editar, página Clonar, página Detalles (lienzo), página Crear (asistente), página Editar (asistente), página Lista (estándar) y página Detalles (estándar). Haga clic aquí para obtener más información al respecto.
32. ¿Es compatible el script de cliente con el filtro de búsqueda contextual de selección múltiple?
Actualmente, el filtro contextual se puede aplicar en el campo Búsqueda única y también se admitirá en el campo Búsqueda de selección múltiple.
33. ¿Podemos importar bibliotecas personalizadas en el script de cliente?
Sí. Podemos cargarlas como un recurso estático y utilizarlas en el script.
34. ¿Es posible capturar datos de un servicio de terceros y completar automáticamente la respuesta en los campos respectivos de Zoho CRM con el script de cliente?
Sí. Los usuarios pueden utilizar el script de cliente para capturar datos de un servicio de terceros mediante una llamada de API de terceros y completar los datos en el campo. El script solo puede realizar llamadas a los dominios agregados a la lista de dominios de confianza. Consulte este ejemplo para aprender cómo lograrlo con el script de cliente.
35. ¿Qué hace el método getForm()?
El método getForm() se puede usar para obtener todos los campos del formulario actual (como página Crear, página Clonar, etc.). Incluso puede configurar valores en varios campos en una página con la ayuda del método getForm().setValues().
36. ¿Se puede filtrar un campo de búsqueda contextualmente en función de otros dos campos mediante el uso del script de cliente?
Sí. Es posible aplicar un filtro en función de los valores de dos campos adicionales mediante el script de cliente.
37. ¿Podemos deshabilitar el botón Eliminar o es posible realizar la validación antes de eliminar un registro?
Sí. Puede deshabilitar el botón Eliminar mediante el script de cliente, pero por ahora no es posible realizar la validación antes de eliminar un registro.
38. ¿Es posible mostrar mensajes personalizados al pasar el cursor sobre los campos? Además, ¿hay algún evento disponible para el desplazamiento del mouse en el script de cliente?
Se puede utilizar el método addTooltip() para mostrar un mensaje personalizado para un campo específico cuando el cursor del mouse pasa sobre ellos. Sin embargo, actualmente no hay ningún evento disponible para el desplazamiento del mouse en el script de cliente.
39. ¿Puedo incluir una función de copia con un ícono personalizado en el lienzo con el script de cliente?
Esta función está en desarrollo.
40. ¿Es posible crear formularios mediante los valores de campo dinámicos en CRM con el script de cliente?
Puede utilizar el método getInput() para crear un formulario con pseudocampos basados en valores de campo dinámicos. Además, puede representar un widget para crear un formulario y luego pasar los datos a la página mediante el uso del script de cliente. También es posible ocultar/mostrar los campos en la página basándose en valores dinámicos utilizando el método setVisibility() en el script de cliente.
41. En el futuro, ¿será posible incluir texto formateado en un submenú sin tener que representar un widget?
Verificaremos la posibilidad de admitirlo.
42. Supongamos que un script de cliente se activa en un evento de edición de campo en la página Detalles (estándar). En tal caso, ¿reflejará los cambios en otro campo vinculado con este campo o será necesario volver a cargar la página? P. ej.: población del campo de edad según la fecha de nacimiento.
Cuando se actualiza un campo en la página Detalles (lienzo), el campo vinculado solo se actualizará después de que se vuelva a cargar la página. Para volver a cargar la página en la página Detalles (lienzo), puede utilizar el método $Client.Refresh(). Esta posibilidad estará disponible pronto en la página Detalles (estándar).
43. ¿Existe un tiempo de espera de ejecución para el script de cliente?
Sí, el script de cliente aplica un tiempo de ejecución de 10 segundos. Siempre que el script exceda este tiempo de ejecución, puede manejarlo con un cargador. Haga clic aquí para obtener más información.
44. ¿Por qué los métodos como document.close() y document.doctype() no funcionan en el script de cliente?
El script de cliente no es compatible con ciertos métodos de JavaScript, por lo que no funcionarán como se espera si se utilizan. Tenga en cuenta esto y evite incluir métodos no compatibles para garantizar que su script funcione correctamente.
Los siguientes métodos de JavaScript no son compatibles con el script de cliente:
- postMessage
- importScripts
- close
- addEventListener
- removeEventListener
- getEventListeners
- WebSocket
- setInterval
- setTimeout
- clearTimeout
- clearInterval
- Worker
- MessagePort
- MessageEvent
- MessageChannel
- onmessage
- onmessageerror
- window
- document
45. ¿Cómo puedo ver el objeto de respuesta ZDK si no se muestra correctamente en el panel de mensajes?
Si el objeto de respuesta no se representa claramente en el panel de mensajes, puede registrarlo en un formato serializado.
log("response:", ZDK.Apps.CRM.Leads.fetch()); log("response stringified:", JSON.stringify(ZDK.Apps.CRM.Leads.fetch()));
Utilice JSON.stringfy() para convertir el objeto en un formato de cadena legible para facilitar la visualización en el panel de mensajes. También puede verlo en la consola del navegador mediante la instrucción console.log().
46. ¿Cómo puedo agregar un salto de línea en los mensajes de alertas?
Para agregar un salto de línea en los mensajes de alerta, utilice “\n” dentro de la cadena de mensajes.
Por ejemplo:
ZDK.Client.showAlert('This is an __important__ message\nThis is an *important* message');
Esto mostrará el mensaje en dos líneas separadas en el cuadro de alerta.