KEPLIN Docs

Criar um relatório

O desenho de um relatório — bandas, papel e margens, conjuntos de dados, parâmetros, elementos e regras, e a saída em PDF ou Excel.

Um relatório é um documento impresso a partir dos dados da app: uma listagem, uma factura, um mapa de fecho do mês. Sai em PDF — paginado, com cabeçalhos que se repetem e totais no fim — ou em Excel, e pode ser gerado à mão, por um botão de um ecrã, por um script, por um workflow, ou por um agendamento que o envia por email.

O modelo é o de bandas: um relatório não é um ecrã que cresce para baixo, é uma sequência de faixas que o motor repete conforme a regra de cada uma — uma vez, por página, por linha, por grupo. É isso que torna a paginação possível.

A unidade é o milímetro, em todo o lado. É a unidade do papel e sobrevive à mudança de A4 para Letter.

Nesta página desenhamos o relatório Oportunidades por conta da app Gestão de Clientes: o pipeline comercial agrupado por conta, com os contactos de cada uma, o total por conta e um gráfico no fim.

Onde vivem os relatórios

Os relatórios estão no minitab Dados da árvore da app, por baixo das fontes de dados. Clicar no nome abre o desenho num separador.

O grupo Relatórios no minitab Dados
O grupo Relatórios no minitab Dados

Uma app sem relatórios mostra "Sem relatórios — cria um para o desenhares.".

Criar um relatório

  1. Passa o rato pela linha do grupo Relatórios e clica em Novo relatório.
  2. Escreve o Nome — por exemplo Facturas do mês.
  3. Clica em Criar.

O diálogo Novo relatório
O diálogo Novo relatório

"Cria um relatório na raiz. Podes movê-lo para uma pasta depois." O relatório nasce em A4 retrato, com as cinco bandas fixas e sem dados ligados, e o desenho abre logo.

O desenho

O desenho de Oportunidades por conta
O desenho de Oportunidades por conta

O separador tem três colunas e uma barra em cima:

Zona O que é
Barra do topo O nome, o identificador do relatório (rpt_…, o que o código usa para lhe chamar), o estado da gravação, desfazer/refazer, as medidas do papel e os botões Excel e Pré-visualizar.
Coluna da esquerda A paleta Elementos, os Dados, os Agrupamentos, os Parâmetros e os Agendamentos.
Centro A superfície de desenho: uma régua em milímetros e as bandas, umas por cima das outras pela ordem em que saem no papel.
Direita As propriedades — do relatório, da banda seleccionada ou do elemento seleccionado.

Como no resto da plataforma, não há botão de gravar: o desenho grava-se sozinho.

As bandas

As bandas são um conjunto fixo — não se acrescentam faixas à vontade, porque cada uma tem uma regra de repetição própria que o motor conhece pelo nome.

A banda Detalhe seleccionada na superfície de desenho
A banda Detalhe seleccionada na superfície de desenho

Banda Quando sai
Cabeçalho do relatório "Sai uma única vez, no início da primeira página." Logótipo, título, data de emissão.
Cabeçalho de página "Repete-se no topo de todas as páginas — logótipo, títulos de coluna."
Detalhe "Sai uma vez por cada linha de dados. É esta banda que enche o relatório."
Rodapé de página "Repete-se no fundo de todas as páginas — número de página, data."
Rodapé do relatório "Sai uma única vez, no fim — totais gerais." Nasce desligado.

A estas juntam-se, quando há agrupamentos, um cabeçalho e um rodapé por nível — ver Gráficos e subrelatórios.

Clicar no título de uma banda selecciona-a; o painel da direita passa a mostrar as propriedades dela.

As propriedades de uma banda
As propriedades de uma banda

Propriedade O que faz
Altura (mm) A altura da faixa. Também se arrasta a linha divisória, na superfície de desenho.
Activa "Desligada, a banda não sai no relatório nem ocupa espaço."
Regras da banda Suprimir a banda conforme os dados.

Sobre as regras: "suprimir a banda conforme os dados. Suprimida, não sai nem ocupa espaço — é o que substitui ter várias bandas de detalhe". Em vez de três faixas de detalhe com condições diferentes, uma faixa e regras que a escondem quando não é caso disso.

O papel

Com nada seleccionado, o painel da direita mostra as propriedades do relatório e da página:

As propriedades do relatório e da página
As propriedades do relatório e da página

Campo Opções
Nome / Descrição Identificação, para quem constrói.
Formato A4, A3, A5, Letter, Legal ou Personalizado (largura e altura em mm).
Orientação Retrato ou Paisagem.
Margens (mm) Superior, Inferior, Esquerda, Direita.

"O espaço entre o papel e o conteúdo. A largura útil que sobra é a da superfície de desenho" — mudar as margens muda a largura em que desenhas, e a régua acompanha.

A secção Vista, no fim do painel, tem o Zoom da superfície de desenho. Não afecta o documento; é só a lupa de quem desenha.

Os dados

Um relatório sem dados ligados não tem campos para arrastar. Abre Conjuntos de dados no + da secção Dados:

O diálogo Conjuntos de dados
O diálogo Conjuntos de dados

Cada conjunto tem:

Campo Notas
Nome do conjunto Como os elementos lhe chamam (oportunidades, contactos).
Papel principal, ligado ou avulso — ver a tabela abaixo.
API de tabela A API da app de onde vêm as linhas.
Filtros (where) A mesma gramática de filtros do resto da plataforma. Pode comparar com parâmetros do relatório.
Carregamento / Por página Como as linhas são lidas.

Os três papéis:

Papel O que significa
principal "A banda de detalhe percorre-o, uma linha impressa por cada linha dele." Só há um.
ligado "Pertence a uma linha de outro conjunto pelo campo que indicares — a factura e as linhas dela."
avulso "Nem percorrido nem ligado, serve para o cabeçalho ou para um total geral."

Um conjunto ligado pede mais três campos: o Conjunto pai, o Campo no pai ("o campo que identifica a linha do pai — normalmente a chave") e o Campo neste conjunto ("o campo que aponta de volta para o pai").

Nota

A ligação é uma declaração, e é isso que a torna rápida: o motor carrega tudo de uma vez e agrupa em memória, em vez de fazer uma consulta por cada linha do conjunto principal.

Na coluna da esquerda, cada conjunto aparece com o número de campos e expande-se com a seta. Arrastar um campo para uma banda cria um elemento Campo já ligado — é a forma mais rápida de encher a banda de detalhe.

Os parâmetros

Parâmetros são "valores que o relatório recebe de quem o manda correr" — o mês, a fase, o cliente. Usam-se nos filtros dos conjuntos de dados.

O diálogo Parâmetros
O diálogo Parâmetros

Campo Notas
Nome Como o filtro e o código lhe chamam.
Etiqueta O que se lê quando o valor é pedido.
Tipo Texto, Número, Data ou Sim/Não.
Obrigatório Sem valor, o relatório recusa-se a correr.
Valor por omissão Usado quando quem chama não dá nenhum.

Os elementos

A paleta Elementos tem tudo o que se põe numa banda. Arrasta-se para a banda; larga-se onde deve ficar.

A coluna da esquerda: paleta, dados, agrupamentos, parâmetros e agendamentos
A coluna da esquerda: paleta, dados, agrupamentos, parâmetros e agendamentos

Elemento Para que serve
Texto Texto fixo — títulos, etiquetas, rodapés.
Campo O valor de um campo do conjunto. É o que sai de arrastar um campo.
Agregado Uma conta sobre um conjunto: Soma, Média, Contagem, Mínimo, Máximo.
Campo de sistema Número da página, Total de páginas, Página X de Y, Data de emissão, Nome do relatório.
Linha Separadores e molduras.
Rectângulo Fundos e caixas, com preenchimento, contorno e cantos.
Imagem Um ficheiro da app, um endereço, ou o conteúdo de um campo.
Gráfico Nove tipos, com os mesmos dados dos ecrãs.
Subrelatório Outro relatório desenhado dentro deste.
Código de barras Code 128, EAN-13 ou QR.

Os últimos três têm página própria: Gráficos e subrelatórios.

As propriedades de um elemento

Clica num elemento na superfície de desenho:

Um elemento seleccionado, com as propriedades à direita
Um elemento seleccionado, com as propriedades à direita

Secção O que tem
Posição e tamanho X (mm), Y (mm), Largura (mm), Altura (mm). O y conta a partir do topo da banda.
Aspecto Tipo de letra, Corpo (pt), negrito/itálico/sublinhado, alinhamento, Alinhamento vertical, cor, Preenchimento, Contorno (mm) e Cor do contorno, Quebrar linha.
Formato (campos e agregados) Máscara de apresentação, com a mesma gramática das colunas da tabela.
Exportação Nome da coluna no Excel. "Vazio usa o nome do campo. No papel não aparece — lá o cabeçalho é um texto que desenhas onde quiseres."
Regras de formatação Ver abaixo.

Sobre Quebrar linha: "desligado, o texto que não cabe é cortado em vez de passar para a linha seguinte" — é o que se quer numa coluna de tabela, para uma linha comprida não empurrar a página toda.

Seleccionando vários elementos (com a caixa de selecção ou com Shift), o painel diz quantos são e move-os em conjunto, com o rato ou com as setas.

Regras de formatação

Cada elemento pode ter regras que "mudam o aspecto conforme os dados da linha: pintar um valor em atraso, esconder uma etiqueta, pôr um total a negrito quando é negativo". São o mesmo motor e o mesmo editor das regras dos widgets.

A última regra que bater é a que manda — ordena-as da mais geral para a mais específica.

Ver o resultado

Dois botões, no canto superior direito:

Os botões Excel e Pré-visualizar
Os botões Excel e Pré-visualizar

  • Pré-visualizar gera o PDF com os dados reais da app e abre-o ali mesmo, paginado. É assim que se confere o desenho: nem sempre o que cabe na superfície de desenho cabe na página.
  • Excel gera a folha de cálculo e descarrega-a. Aqui não há bandas nem páginas: sai uma tabela, com uma coluna por elemento da banda de detalhe, e os cabeçalhos vêm do Nome da coluna de cada um.

Se o relatório tiver parâmetros obrigatórios, são pedidos antes de gerar.

Dica

Desenha para o PDF e confirma no Excel, não ao contrário. O PDF é o formato exigente — margens, quebras de página, bandas que não cabem. O Excel perdoa quase tudo.

Perguntas frequentes

A banda de detalhe sai vazia. Não há conjunto principal, ou o filtro dele não devolve linhas. Abre Conjuntos de dados e confirma que há um com o papel principal, e que os parâmetros que o filtro usa têm valor.

Um campo numa banda de cabeçalho sai vazio. É esperado fora das bandas de grupo. No Cabeçalho do relatório e no Rodapé do relatório não há "linha actual" — mostrar a primeira de todas seria inventar um valor. Num cabeçalho de grupo, o campo lê a primeira linha do grupo, que é o que se quer.

O relatório demora ou trunca. Cada conjunto tem um tecto de linhas por leitura. Filtra mais — por data, por estado — em vez de imprimir a tabela inteira. Um relatório de 4.000 páginas não é lido por ninguém.

Preciso de mais do que um agendamento sabe fazer. Escreve um script Python e chama reports.render(...) — ver Agendar e enviar.