Imprimir relatório através de link HTML (com filtro preenchido)
Neste tópico, você verá como gerar um relatório a partir de um formulário do tipo HTML (com link) em uma atividade de processo preenchendo seus filtros automaticamente com informações/variáveis do processo.
Além de uma solução diferente para imprimir relatório na atividade, possibilita múltiplos protocolos/relatórios para impressão na mesma atividade.
Para baixar o BPM deste exemplo, clique aqui.
- Crie um processo BPM simples.
- Uma atividade manual.
- Dois formulários de bloco HTML com apenas um título.
Na aba "Eventos" iremos incluir um evento PEX ao entrar na atividade. Este evento PEX estará responsável por carregar nos blocos HTML os link's para a impressão do relatório.
const
csLinkProtocolo1 = '1'; // codigo do formulario HTML
csLinkProtocolo2 = '2'; // codigo do formulario HTML
var
lsFiltro, lsHash, lsTemplate, lsRelatorio, lsJson, lsLink, lsUrlPortal : String;
loCDS : TLibCDS; // declaracao das variaveis
begin
loCDS := of_CriaCDSporSQL('SELECT valor URL FROM ini where secao = ''CRM'' and chave = ''DOXPORTAL_LINK_PORTAL''');
try
lsUrlPortal := loCDS.GetStr(['URL']);
finally
loCDS.Free;
end;
lsFiltro := TSO.Encode64String('{"IDPROCESSO":"'+aoVariaveis.GetStr('/*IDPROCESSO*/')+'"}');
lsHash := TSO.Encode64String(aoVariaveis.GetStr('/*HASHSESSAO*/'));
//Relatório 1
lsRelatorio := '398'; //alterar valor pelo código do relatório desejado
lsTemplate := '434'; //alterar valor pelo código do template do relatório desejado
lsJson := TSO.Encode64String('{"IDRELTEMPLATE":"' + lsTemplate + '","IDRELATORIO":"' + lsRelatorio + '"}');
lsLink := '<a style="font-family: Roboto, sans-serif; font-size: 0.8rem;" href="' + lsUrlPortal +
'/api/downloadrelatoriocadastrado?aoJson=' + lsJson + '&aoFiltrosJson=' + LsFiltro +
'&asHash=' + lsHash + '" target="_blank">IMPRIMIR RELATÓRIO</a>';
aoFormularios.GetJSON(csLinkProtocolo1).SetStr('TEXTO', lsLink);
//Relatório 2
lsRelatorio := '399'; //alterar valor pelo código do relatório desejado
lsTemplate := '435'; //alterar valor pelo código do template do relatório desejado
lsJson := TSO.Encode64String('{"IDRELTEMPLATE":"'+lsTemplate+'","IDRELATORIO":"'+lsRelatorio+'"}');
lsLink := '<a style="font-family: Roboto, sans-serif; font-size: 0.8rem;" href="' + lsUrlPortal +
'/api/downloadrelatoriocadastrado?aoJson=' + lsJson + '&aoFiltrosJson=' + LsFiltro +
'&asHash=' + lsHash + '" target="_blank">IMPRIMIR RELATÓRIO</a>';
aoFormularios.GetJSON(csLinkProtocolo2).SetStr('TEXTO', lsLink);
end;
Alterar os valores atribuídos às variáveis "lsRelatorio" e "lsTemplate" de acordo com os relatórios cadastrados que deseja imprimir. Caso tenha dificuldade para entender qual o template ou idrelatório especifico acessar:
- Dox estúdio
- Módulo de inteligência
- Relatórios
Ou pesquisar pelo banco de dados:
SELECT *
FROM RELATORIOGERADOR
Exemplo do processo no portal: