El Editor de PDF de DataScope es una herramienta poderosa que te permite personalizar y configurar tus reportes de manera eficiente. En esta guía, te explicaremos algunas funciones y trucos para aprovechar al máximo esta funcionalidad.
📌 Configuración y Uso del Editor de PDF Personalizado
¿Cómo acceder al Editor de PDF?
Dirígete a Formularios > Configurar > Configurar PDF > PDF Personalizado.
Haz clic en el botón "Abrir Editor PDF".
📌 Estructura del Editor de PDF
Componentes disponibles: En el lado izquierdo, encontrarás herramientas como textos, tablas, códigos de barra/QR, encabezados, pies de página, entre otros.
Propiedades del componente: En el lado derecho, podrás personalizar cada elemento seleccionado.
📌 Cómo agregar y enlazar componentes
Agregar un componente: Arrastra el elemento deseado a la posición en el documento.
Enlazar datos:
Haz doble clic en el componente.
Selecciona "Insert Data Field" y elige la pregunta o campo correspondiente.
Campos principales:
name
: Nombre de la pregunta.value
: Respuesta ingresada en el formulario.
Protip: Los datos deben estar estructurados entre {% %}
. Por ejemplo:
{% {variable_aqui::value} %}
📌 Principales funciones del Editor de PDF
Transformación de Valores Vacíos:
Los valores vacíos se muestran como un "-". Puedes usar esta lógica para configurar funciones que transformen el vacío en un valor específico.
Ejemplo: Para mostrar un texto alternativo cuando un campo está vacío, utiliza:
{% {variable_aqui::value}=='-' ? 'Texto alternativo' : {variable_aqui::value} %}
Configuración de Preguntas Repetibles:
En preguntas repetibles, las variables desde _5 en adelante deben usar la función
empty
para manejar valores vacíos.{% empty({variable_aqui::value}) ? ' ' : {variable_aqui::value} %}
Ocultar Páginas Vacías:
Asignador de Tareas:
Variables disponibles al asignar tareas:
Dirección
Código legal de la empresa
Nombre legal de la empresa
Código único de local
Descripción del local
📌 Funciones Comunes
Mostrar valores específicos
Para mostrar un valor basado en una condición:
{% {variable aquí::value}=='Si' ? 'x' : ' ' %}
Para mostrar un valor cuando no hay respuesta:
{% {variable aquí::value}=='-' ? 'Texto por defecto' : {variable aquí::value} %}
Para manejar campos vacíos:
{% empty({variable aquí::value}) ? ' ' : {variable aquí::value} %}
2. Operaciones matemáticas
Sumar valores (Cuando hay respuestas vacías '-'):
{% ({variable aquí::value}=='-' ? 0 : {variable aquí::value}) + ({variable 2 aquí::value}=='-' ? 0 : {variable 2 aquí::value}) … + ({variable n aquí::value}=='-' ? 0 : {variable n aquí::value}) %}
Promedio de 2 variables:
{% (({variable aquí::value}=='-' ? 0 : {variable aquí::value}) + ({variable 2 aquí::value}=='-' ? 0 : {variable 2 aquí::value})) / (2) %}
Condición para denominador cuando no hay respuestas:
{% {variable aquí::value}=='-' ? 0.00001 : 1 %}
Esto se usa para evitar que el denominador sea 0 en caso de que no haya respuestas (cuando el valor sea
'-'
). El valor mínimo para el denominador será0.00001
si no hay respuesta.Cálculo del promedio condicional entre 2 variables (solo si existen 2 respuestas):
{% (({variable aquí::value}=='-' ? 0 : {variable aquí::value}) + ({variable 2 aquí::value}=='-' ? 0 : {variable 2 aquí::value})) / (({variable aquí::value}=='-' ? 0.00001 : 1)+ ({variable 2 aquí::value}=='-' ? 0.00001 : 1)) %}
Este cálculo realiza lo siguiente:
Si una de las variables no tiene respuesta (es
'-'
), se considera como0
en lugar de un valor nulo.Para el denominador, si alguna de las variables no tiene respuesta, se utiliza
0.00001
para evitar la división por cero.Es importante usar esta condición con decimales, ya que si se usa
0
directamente en la división sin tener en cuenta esta regla, se generará un error de división por cero.
Sumatoria y multiplicación de elementos cuando no hay respuesta (
'-'
):Si deseas realizar cálculos con varios elementos y considerar
0
cuando no haya respuesta ('-'
), puedes usar la siguiente fórmula:{% (({variable aquí::value}=='-' ? 0 : {variable aquí::value}) * ({variable 2 aquí::value}=='-' ? 0 : {variable 2 aquí::value}) * ({variable 3 aquí::value}=='-' ? 0 : {variable 3 aquí::value}) … + ({variable n aquí::value}=='-' ? 0 : {variable n aquí::value}) %}
Este ejemplo realiza una multiplicación de varias variables. Si alguna variable no tiene respuesta (
'-'
), se sustituye por0
para evitar errores.
Dar atención a los paréntesis, estos son muy importantes porque considera toda la expresión como un único valor y no se generan errores de lenguaje.
3. Fechas y horarios
Fecha actual:
{% date('now') %}
Formato de fecha personalizada:
{% date({Variable aquí}, 'UTC', 0, 'd/m/Y') %}
Variable del formulario creado convertir en formato:
{% date({created_at}, 'UTC', 0, 'd/m/Y') %}
Convertir minutos a horas:
{% floor({minutos_variable}/60) %} horas, {% (({minutos_variable}/60) - floor({minutos_variable}/60)) * 60 %} minutos
Horario en horas - minutos:
{% floor((({Variable tiempo aquí::value})/60) %}:{%(((({Variable tiempo aquí::value})/60)-floor((({Variable tiempo aquí::value})/60))*60 %}
Una variable de fecha dd/mm/yyyy dar formato a "10 de Abril del 2023":
{% split('-',{k_FechaHora 5_5::value})[0] %} de {% split('-',{k_FechaHora 5_5::value})[1] =='01' ? 'Enero' : split('-',{k_FechaHora 5_5::value})[1] =='02' ? 'Febrero' : split('-',{k_FechaHora 5_5::value})[1] =='03' ? 'Marzo' : split('-',{k_FechaHora 5_5::value})[1] =='04' ? 'Abril' :split('-',{k_FechaHora 5_5::value})[1] =='05' ? 'Mayo' :split('-',{k_FechaHora 5_5::value})[1] =='06' ? 'Junio' : split('-',{k_FechaHora 5_5::value})[1] =='07' ? 'Julio' : split('-',{k_FechaHora 5_5::value})[1] =='08' ? 'Agosto' : split('-',{k_FechaHora 5_5::value})[1] =='09' ? 'Septiembre' : split('-',{k_FechaHora 5_5::value})[1] =='10' ? 'Octubre' : split('-',{k_FechaHora 5_5::value})[1] =='11' ? 'Noviembre' : split('-',{k_FechaHora 5_5::value})[1] =='12' ? 'Diciembre' : ' ' %} del {% split('-',{k_FechaHora 5_5::value})[2] %}
Para sumarle días a una fecha
{% date ({k_Fecha_2_2::value}, 'UTC' ,27, 'd/m/Y' ) %} le suma 27 dias a la fecha
Para obtener la diferencia de horas en minutos:
{% empty(split(":",{k_Hora fin_12_17::value})[1]) || empty(split(":",{k_Hora inicio_12_15::value})[1]) ? '-' : 1440*(split(":",{k_Hora fin_12_17::value})[0] < split(":",{k_Hora inicio_12_15::value})[0]) + (split(":",{k_Hora fin_12_17::value})[0] - split(":",{k_Hora inicio_12_15::value})[0])*60 + split(":",{k_Hora fin_12_17::value})[1] - split(":",{k_Hora inicio_12_15::value})[1] %}
4. Firmas e Imágenes en HTML
Fotos como HTML (Para usar en tablas):
<p><img src="{foto_aqui::value}" width="80" height="100"></p>
Firmas como HTML (Para usar en tablas):
<p><img src="{firma_aqui::value}" width="80" height="100"></p>
Para dejar una descripción vacía cuando no hay imagen en una pregunta repetible bajo "_4 (Repetición 5)":
Usando la condición para verificar si la variable tiene un valor
'-'
(sin imagen):
{% {variable aquí::value}=='-' ? ' ' : 'descripción de la foto' %}
En este caso, si no hay imagen (valor
'-'
), se dejará una descripción vacía (' '
).2. Usando la función
empty
para verificar si la variable está vacía:{% empty({variable aquí::value}) ? ' ' : 'descripción de la foto' %}
Aquí, si la variable está vacía (sin imagen), también se dejará una descripción vacía (
' '
).
📌 Trucos Avanzados
Condiciones Anidadas
Usa
&
para "y" y|
para "o":{% ({variable_1::value} + {variable_2::value}) <= 3 & ({variable_2::value}) >= 1 ? 'Aceptado' : 'Rechazado' %}
Mostrar GPS
Muestra un mapa estático con coordenadas GPS:
https://maps.googleapis.com/maps/api/staticmap?size=700x700&maptype=roadmap&markers=icon:https://www.mydatascope.com/assets/favicon.ico%7Csize:mid%7Clabel:1%7C{k_Descripcin_9_9::latitude},+{k_Descripcin_9_9::longitude}&visible={k_Descripcin_9_9::latitude},+{k_Descripcin_9_9::longitude}&zoom=15&key=AIzaSyB39JUuV_2N_2i-bh6tzAfPcEWxeUh777c
Separador de listas relacionadas:
Si necesitas dividir un valor con un separador, puedes usar el siguiente código:
{% split('-',{variable aquí::value})[0] %}
El número
0
indica la posición del texto que está antes del separador seleccionado. Si quieres obtener el texto después del separador, puedes cambiar el índice (por ejemplo,[1]
).
Split sobre Split (2):
Si necesitas realizar un
split
dentro de otrosplit
, usa el siguiente ejemplo:{% split(':',{split('|',{variable aquí::value})[2] })[1] %}
Esto primero divide la variable en partes usando el separador
|
, luego toma el tercer elemento (índice[2]
), y luego lo divide nuevamente usando:
.
Split sobre Split (3):
Si necesitas realizar un
split
dentro de otrosplit
en una forma más compleja, puedes usar este código:{% split(‘-’,{split(':',{split('|',{variable aquí::value})[2] })[1]})[1] %}
Este ejemplo realiza múltiples divisiones de la variable, primero con el separador
|
, luego con:
, y finalmente con-
.
Usando HTML para mostrar imágenes:
Si deseas mostrar una imagen dentro de un HTML usando un
split
, usa este código:<p><img src="{split(':',{split('| ',{assign_description})[16] })[1]}" width="80" height="100"></p>
Este ejemplo divide el valor de
{assign_description}
, toma el 17º elemento (índice[16]
), y luego muestra una imagen con elsrc
obtenido.
Para mostrar un enlace de descarga para un archivo adjunto:
Si deseas incluir un enlace para que los usuarios puedan descargar un archivo adjunto, puedes utilizar el siguiente código HTML:
<p><a href="{k_Adjuntar Archivo 0_247::value}">Descargue Archivo Adjunto 1</a></p>
Este código crea un enlace que permite a los usuarios descargar el archivo que está vinculado a la variable
{k_Adjuntar Archivo 0_247::value}
. El texto del enlace será "Descargue Archivo Adjunto 1".
Pro Tip 💡
Si necesitas incluir condiciones en tus reportes personalizados, puedes usar expresiones condicionales como esta:
{% {variable aquí::value}=='Si' ? 'x' : ' ' %}
Esto funciona de la siguiente manera:
?
: Define el resultado cuando la condición es verdadera (por ejemplo, muestra'x'
si la variable es igual a"Si"
).:
: Define el resultado cuando la condición es falsa (por ejemplo, muestra un espacio en blanco si la variable no es"Si"
).
Ejemplo práctico:
{% {variable::value}=='Si' ? 'Aprobado' : 'Pendiente' %}
Si la respuesta es
"Si"
, mostrará "Aprobado".Si no, mostrará "Pendiente".
¡Usa esta lógica para crear reportes dinámicos y claros!
📌 Buenas Prácticas
Valida tus códigos: Siempre prueba las funciones en un ambiente de prueba antes de implementarlas en producción.
Usa paréntesis correctamente: Asegúrate de que las expresiones estén correctamente agrupadas para evitar errores.
Configura formatos condicionales: Simplifica la visualización ocultando elementos innecesarios.
Guarda los cambios regularmente: Asegúrate de guardar todos los cambios antes de cerrar la sesión o cambiar de pantalla, ya que no hay opción de deshacer (Ctrl+Z).
Evita el uso del Ctrl+Z: Dado que no funciona para deshacer acciones, es fundamental que guardes con frecuencia.
Usa una sola pestaña al trabajar en el editor: Para evitar conflictos o pérdida de datos, es ideal mantener una sola pestaña abierta mientras trabajas en el editor.
Para más información o asistencia, no dudes en contactarnos a través de nuestro chat de soporte.
----------------------------------------------------------------------------------------
Artículos Relacionados
----------------------------------------------------------------------------------------