O Editor de PDF do DataScope é uma ferramenta poderosa que permite personalizar e configurar seus relatórios de forma eficiente. Neste guia, explicaremos algumas funções e dicas para aproveitar ao máximo essa funcionalidade.
📌 Configuração e Uso do Editor de PDF Personalizado
Como acessar o Editor de PDF?
Acesse Formulários > Configurar > Configurar PDF > PDF Personalizado.
Clique no botão "Abrir Editor PDF".
📌 Estrutura do Editor de PDF
Componentes disponíveis: no lado esquerdo, você encontrará ferramentas como textos, tabelas, códigos de barras/QR, cabeçalhos, rodapés, entre outros.
Propriedades do componente: no lado direito, você poderá personalizar cada elemento selecionado.
📌 Como adicionar e vincular componentes
Adicionar um componente: arraste o elemento desejado para a posição correspondente no documento.
Vincular dados:
💡 Dica: os dados devem ser estruturados entre {% %}. Por exemplo:
{% {variable_aqui::value} %}
📌 Principais funções do Editor de PDF
1. Transformação de valores vazios
Os valores vazios são exibidos como um
-. Você pode usar essa lógica para configurar funções que transformem um valor vazio em um valor específico.Exemplo: para exibir um texto alternativo quando um campo estiver vazio, use:
{% {variable_aqui::value}=='-' ? 'Texto alternativo' : {variable_aqui::value} %}2. Configuração de perguntas repetíveis
Em perguntas repetíveis, as variáveis a partir de
_5devem usar a funçãoemptypara tratar valores vazios.
{% empty({variable_aqui::value}) ? ' ' : {variable_aqui::value} %}3. Ocultar páginas vazias
As páginas vazias são ocultadas automaticamente quando você configura a formatação condicional clicando com o botão direito na página.
4. Atribuidor de tarefas
Variáveis disponíveis ao atribuir tarefas:
Endereço
Código legal da empresa
Nome legal da empresa
Código único do local
Descrição do local
📌 Funções comuns
1. Exibir valores específicos
Para exibir um valor com base em uma condição:
{% {variable aqui::value}=='Sim' ? 'x' : ' ' %}Para exibir um valor quando não houver resposta:
{% {variable aqui::value}=='-' ? 'Texto padrão' : {variable aqui::value} %}Para tratar campos vazios:
{% empty({variable aqui::value}) ? ' ' : {variable aqui::value} %}2. Operações matemáticas
Somar valores quando houver respostas vazias (
-):
{% ({variable aqui::value}=='-' ? 0 : {variable aqui::value}) + ({variable 2 aqui::value}=='-' ? 0 : {variable 2 aqui::value}) … + ({variable n aqui::value}=='-' ? 0 : {variable n aqui::value}) %}Média de 2 variáveis:
{% (({variable aqui::value}=='-' ? 0 : {variable aqui::value}) + ({variable 2 aqui::value}=='-' ? 0 : {variable 2 aqui::value})) / (2) %}Condição para o denominador quando não houver respostas:
{% {variable aqui::value}=='-' ? 0.00001 : 1 %}Isso é usado para evitar que o denominador seja 0 caso não haja respostas (quando o valor for '-'). O valor mínimo para o denominador será 0.00001 quando não houver resposta.
Cálculo da média condicional entre 2 variáveis (somente se existirem 2 respostas):
{% (({variable aqui::value}=='-' ? 0 : {variable aqui::value}) + ({variable 2 aqui::value}=='-' ? 0 : {variable 2 aqui::value})) / (({variable aqui::value}=='-' ? 0.00001 : 1)+ ({variable 2 aqui::value}=='-' ? 0.00001 : 1)) %}Esse cálculo funciona da seguinte maneira:
Se uma das variáveis não tiver resposta (for
'-'), ela será considerada como0em vez de um valor nulo.Para o denominador, se alguma das variáveis não tiver resposta, será utilizado
0.00001para evitar uma divisão por zero.
É importante usar essa condição com decimais, pois se você usar 0 diretamente na divisão sem considerar essa regra, ocorrerá um erro de divisão por zero.
Soma e multiplicação de elementos quando não houver resposta (
'-'):
Se você quiser realizar cálculos com vários elementos e considerar 0 quando não houver resposta ('-'), poderá usar a seguinte fórmula:
{% (({variable aqui::value}=='-' ? 0 : {variable aqui::value}) * ({variable 2 aqui::value}=='-' ? 0 : {variable 2 aqui::value}) * ({variable 3 aqui::value}=='-' ? 0 : {variable 3 aqui::value}) … + ({variable n aqui::value}=='-' ? 0 : {variable n aqui::value}) %}Esse exemplo realiza uma multiplicação de várias variáveis. Se alguma variável não tiver resposta ('-'), ela será substituída por 0 para evitar erros.
Preste atenção aos parênteses, pois eles são muito importantes para considerar toda a expressão como um único valor e evitar erros de linguagem.
3. Datas e horários
Data atual:
{% date('now') %}Formato de data personalizado:
{% date({Variable aqui}, 'UTC', 0, 'd/m/Y') %}Converter uma variável do formulário criado para um formato específico:
{% date({created_at}, 'UTC', 0, 'd/m/Y') %}Converter minutos em horas:
{% floor({minutos_variable}/60) %} horas, {% (({minutos_variable}/60) - floor({minutos_variable}/60)) * 60 %} minutosHorário em horas e minutos:
{% floor((({Variable tempo aqui::value})/60) %}:{%(((({Variable tempo aqui::value})/60)-floor((({Variable tempo aqui::value})/60))*60 %}Formatar uma variável de data no formato dd/mm/yyyy para "10 de Abril de 2023":
{% split('-',{k_FechaHora 5_5::value})[0] %} de {% split('-',{k_FechaHora 5_5::value})[1] =='01' ? 'Janeiro' : split('-',{k_FechaHora 5_5::value})[1] =='02' ? 'Fevereiro' : split('-',{k_FechaHora 5_5::value})[1] =='03' ? 'Março' : split('-',{k_FechaHora 5_5::value})[1] =='04' ? 'Abril' :split('-',{k_FechaHora 5_5::value})[1] =='05' ? 'Maio' :split('-',{k_FechaHora 5_5::value})[1] =='06' ? 'Junho' : split('-',{k_FechaHora 5_5::value})[1] =='07' ? 'Julho' : split('-',{k_FechaHora 5_5::value})[1] =='08' ? 'Agosto' : split('-',{k_FechaHora 5_5::value})[1] =='09' ? 'Setembro' : split('-',{k_FechaHora 5_5::value})[1] =='10' ? 'Outubro' : split('-',{k_FechaHora 5_5::value})[1] =='11' ? 'Novembro' : split('-',{k_FechaHora 5_5::value})[1] =='12' ? 'Dezembro' : ' ' %} de {% split('-',{k_FechaHora 5_5::value})[2] %}Adicionar dias a uma data:
{% date ({k_Fecha_2_2::value}, 'UTC' ,27, 'd/m/Y' ) %} Isso adiciona 27 dias à data.Obter a diferença de horas em 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. Assinaturas e imagens em HTML
Fotos como HTML (para usar em tabelas):
<p><img src="{foto_aqui::value}" width="80" height="100"></p>Assinaturas como HTML (para usar em tabelas):
<p><img src="{firma_aqui::value}" width="80" height="100"></p>Deixar uma descrição vazia quando não houver imagem em uma pergunta repetível em
_4 (Repetição 5):
Usando uma condição para verificar se a variável possui o valor
'-'(sem imagem):
{% {variable aqui::value}=='-' ? ' ' : 'descrição da foto' %}Nesse caso, se não houver imagem (valor '-'), uma descrição vazia (' ') será exibida.
2. Usando a função empty para verificar se a variável está vazia:
{% empty({variable aqui::value}) ? ' ' : 'descrição da foto' %}Nesse caso, se a variável estiver vazia (sem imagem), uma descrição vazia também será exibida.
📌 Dicas avançadas
Condições aninhadas
Use & para "e" e | para "ou":
{% ({variable_1::value} + {variable_2::value}) <= 3 & ({variable_2::value}) >= 1 ? 'Aceito' : 'Rejeitado' %}Exibir GPS
Exibe um mapa estático com 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-bh6tzAfPcEWxeUh777cSeparador de listas relacionadas
Se você precisar dividir um valor usando um separador, poderá utilizar o seguinte código:
{% split('-',{variable aqui::value})[0] %}O número 0 indica a posição do texto que está antes do separador selecionado. Para obter o texto depois do separador, você pode alterar o índice (por exemplo, [1]).
Split sobre Split (2)
Se precisar usar um split dentro de outro split, utilize o seguinte exemplo:
{% split(':',{split('|',{variable aqui::value})[2] })[1] %}Primeiro, isso divide a variável usando o separador |, depois seleciona o terceiro elemento (índice [2]) e, em seguida, divide esse elemento novamente usando :.
Split sobre Split (3)
Se precisar fazer um split dentro de outro split de uma forma mais complexa, utilize este código:
{% split(‘-’,{split(':',{split('|',{variable aqui::value})[2] })[1]})[1] %}Este exemplo realiza várias divisões da variável: primeiro com o separador |, depois com : e, por fim, com -.
Usar HTML para exibir imagens
Se quiser exibir uma imagem dentro de um HTML usando um split, utilize este código:
<p><img src="{split(':',{split('| ',{assign_description})[16] })[1]}" width="80" height="100"></p>Este exemplo divide o valor de {assign_description}, seleciona o 17º elemento (índice [16]) e, em seguida, exibe uma imagem usando o src obtido.
Exibir um link para download de um arquivo anexado
Se quiser incluir um link para que os usuários possam baixar um arquivo anexado, utilize o seguinte código HTML:
<p><a href="{k_Adjuntar Archivo 0_247::value}">Baixar arquivo anexado 1</a></p>Esse código cria um link que permite aos usuários baixar o arquivo vinculado à variável {k_Adjuntar Archivo 0_247::value}. O texto do link será "Baixar arquivo anexado 1".
💡 Dica
Se precisar incluir condições nos seus relatórios personalizados, poderá usar expressões condicionais como esta:
{% {variable aqui::value}=='Sim' ? 'x' : ' ' %}Isso funciona da seguinte maneira:
?: define o resultado quando a condição é verdadeira (por exemplo, exibe'x'se a variável for igual a"Sim").:: define o resultado quando a condição é falsa (por exemplo, exibe um espaço em branco se a variável não for"Sim").
Exemplo prático:
{% {variable::value}=='Sim' ? 'Aprovado' : 'Pendente' %}Se a resposta for
"Sim", será exibido "Aprovado".Caso contrário, será exibido "Pendente".
Use essa lógica para criar relatórios dinâmicos e claros!
📌 Boas práticas
Valide seus códigos: sempre teste as funções em um ambiente de teste antes de implementá-las em produção.
Use os parênteses corretamente: certifique-se de que as expressões estejam corretamente agrupadas para evitar erros.
Configure formatações condicionais: simplifique a visualização ocultando elementos desnecessários.
Salve as alterações regularmente: certifique-se de salvar todas as alterações antes de fechar a sessão ou mudar de tela, pois não existe uma opção de desfazer (Ctrl+Z).
Evite usar Ctrl+Z: como ele não funciona para desfazer ações, é fundamental salvar com frequência.
Use apenas uma aba ao trabalhar no editor: para evitar conflitos ou perda de dados, é recomendado manter apenas uma aba aberta enquanto trabalha no editor.
Para mais informações ou assistência, entre em contato conosco pelo chat de suporte.



