---
title: Construir e Manter Relatórios Smart
slug: helium/construir-e-manter-relatorios-smart
description: Learn how to use the Smart Reports feature effectively and effortlessly with this comprehensive document. Discover step-by-step instructions for creating customized reports without the hassle of extra software or updates. Explore various methods, includin
createdAt: 2021-11-25T18:22:23.000Z
---

Esta funcionalidade tem o objetivo de prover a facilidade de elaboração de relatórios personalizados com os dados das funcionalidades requeridas, sem necessidade de novas atualizações ou softwares adicionais.

## Antes de começar

- [x] É necessário ter permissão de acesso.
- [x] Para usar o *Designer&#x20;*&#xE9; necessário definir o nome do Schema de banco de dados a partir do **parâmetro 32** (ex.: **public**).
- [x] É necessário conhecimento de ***Standard Query Language*** (***SQL***), para criar ou manipular os relatórios.

## Cadastrar um Smart Report

1. Acessar a funcionalidade através da navegação no menu `Relatórios > Relatórios Smart > Gerador de Relatórios Smart`;
2. Clicar no botão "**Novo**";
3. Preencher os campos necessários. Definir o tipo:

- **SQL:** para criar um Relatório "**SQL**" (que retornam as informações do Banco de dados através de uma Query). Este tipo de relatório possui as seguintes saídas:
  - ***Template:*** Este tipo de saída possibilita a estruturação visual das informações, de modo que seja possível a organização das informações conforme a necessidade (verifique que a aba "Template" é mostrada). O padrão de templates utilizado é o FreeMarker, para saber mais, acesse [<font color="#2166ae"><u>**https\://freemarker.apache.or**</u>**g**</font>](https://freemarker.apache.org)&#x20;
  - ***Gráfico:***                                                                                                                     &#x20;
    - **Linha:** informações mostradas por pontos e conectados por linhas.
    - **Barra:** informações visíveis em formato de barras verticais.
    - **Pizza:** informações divididas em setores mostradas em uma imagem circular.
  - ***Data table:*** utiliza um plugin do sistema para paginar a visualização de conteúdos, incluindo recursos como itens de pesquisa.
  - ***Cubo:*** Semelhante ao que ocorre com o relatório data table, é necessário apenas indicar os elementos da consulta e o framework irá realizar as ações. Assim, quando o usuário final selecionar tabelas, preferências etc., o relatório é criado dinamicamente.
  - ***HTML:*** Semelhante ao que ocorre no relatório Template, porém, neste a aplicação monta o conteúdo HTML para a visualização das informações.
  - ***CSV:*** Permite ao usuário baixar em formado CSV (separados por vírgula) os dados consultados.
- **RhinoScript:** para criar um relatório que retorna as informações do Banco  &#x20;de dados através de um "**Script**" é necessário selecionar o tipo  &#x20;"**RhinoScript**". As saídas possíveis para este tipo de relatório são as mesmas que do tipo SQL: **Template, Gráficos** (linha, barra e pizza), **Cubo, CSV e HTML**. (Ver descrição acima).
- **JSP:** cria um relatório com conteúdo dinâmico. Ao optar por este tipo,  &#x20;deverá informar os parâmetros e o script JSP - Java Server Pages.
- **Builder:&#x20;**&#x63;ria um relatório do tipo "**Builder**", basta vincular um formulário  &#x20;"**Builder**" existente.

:::hint{type="warning"}
📌 <u>**IMPORTANTE**</u>**!**

É possível criar relatórios *Drill Down&#x20;*(apenas para saídas "**Gráfico de pizza**" ou " **Gráfico de Barra**"), indicando no item "**Sub relatório**" o Smart Report que será utilizado para este fim. Note que é necessário usar um critério = "**&#x7B;PARAM.parentParameter}**".
:::

4\. Especificar permissões de acesso, ou seja, onde e para quem será exibido o relatório que está sendo criado:

- **N/A:** selecionar essa opção, caso o relatório esteja disponível para visualização apenas na área de Smart Reports e em Dashboards;
- **Geral:** selecionar essa opção para exibição do relatório em um ou mais  &#x20;módulos, onde deseja que o relatório seja exibido (Configuração,  &#x20;Incidentes/Requisições, Incidentes/Requisições (Gráfico), Liberação,  &#x20;Mudanças, Problemas);
- **Específico:** selecione um único módulo onde deseja que o relatório seja  &#x20;exibido (Configuração, Incidentes/Requisições, Incidentes/Requisições  &#x20;(Gráfico), Liberação, Mudanças, Problemas).

5\. Clicar no botão "**Gravar**";

## Construir Smart Reports

A construção de *Smart Reports&#x20;*&#x70;ode ser realizada seguindo uma das abordagens abaixo:

- ****<font color="#2166ae">**Usando o** ***Designer*****\:**</font>****
  1. Selecionar as Tabelas que serão consultadas;
  2. Indicar os Relacionamentos;
  3. Inserir filtros pela aba "**Parâmetros**";
  4. Definir Condições (apenas depois de criar os filtros);
  5. Adicionar Resultados;
- ****<font color="#2166ae">**Codificando**</font>****<font color="#2166ae">**\:**</font>****
  1. Escrever o conteúdo **SQL/Rhino/JSP&#x20;**&#x6E;a aba correspondente;
  2. Inserir filtros pela aba "**Parâmetros**";

:::hint{type="warning"}
⚠ <u>**Atenção**</u>**!**

Quando se usa o *Designer&#x20;*&#x70;ara a construção do relatório, automaticamente as *query's&#x20;*&#x73;ão criadas e estão visíveis na aba "**SQL**". Perceba que não é possível usar, ao mesmo tempo, *Designer&#x20;*&#x65; inserção manual de conteúdo *SQL*.
:::

### Usar Ferramenta de Designer

A ferramenta de *Designer&#x20;*&#x70;ossibilita a criação de relatórios *SQL&#x20;*&#x73;em a necessidade de codificação. Veja abaixo os itens disponíveis:

- <u>****</u><font color="#2166ae"><u>**Tabelas**</u>**\:** </font>Nesta área, você deve selecionar as tabelas que serão consultadas. Para isso, clique em "**Adicionar**", no Campo "**Nome**", digite o nome da tabela e o resultado aparecerá automaticamente. Clique na(s) tabela(a) e depois em "**Enviar**". É possível remover a seleção de tabelas clicando no checkbox do lado esquerdo da tabela e depois, clique em "**Remover**".
- <u>****</u><font color="#2166ae"><u>**Relacionamentos**</u>**\:** </font>Nesta área, você pode indicar (se for o caso) os relacionamentos entre as tabelas selecionadas no item "**Tabelas**". Para isso, selecione a primeira tabela do relacionamento no item "**Tabela**", indique uma Coluna da tabela, selecione um Relacionamento (**INNER JOIN, LEFT JOIN, RIGHT JOIN ou FULL JOIN**). Depois, selecione a segunda tabela do relacionamento e indique a coluna. Por fim, clique em "**Adicionar**". Aqui também é possível remover a seleção de relacionamentos clicando no checkbox do lado esquerdo do registro e depois em "**Remover**".
- <u>****</u><font color="#2166ae"><u>**Condições**</u>**\:**</font> Nesta área, você pode indicar condições por intermédio de operadores (**WHERE, AND ou OR**) para tratamento dos dados. Para isso, selecione o operador, a tabela, o comparador e o valor (se for o caso), após isso, clique em "**Adicionar**". Caso precise, remova a condição clicando no checkbox do lado esquerdo da tabela e depois em "**Remover**".
- <u>****</u><font color="#2166ae"><u>**Resultados**</u>**\:**</font> Nesta área, você deve indicar quais são as categorias de informações que serão exibidas. Para isso, selecione a tabela e a coluna e clique em "**Adicionar**". É possível remover o valor informado clicando no "**x**" - do lado direito da combinação.

### Inserir Filtros através de Parâmetros

Filtros podem inseridos em um Smart Report para possibilitar que usuário final defina cenários para geração do relatório. Para usar um filtro, clique na aba "**Parâmetros**" e insira o filtro desejado.     Veja alguns:

- **Na aba "Parâmetros":&#x20;**&#x50;arameters
- **Diretamente no SQL:&#x20;**&#x50;arameters in SQL
- **Diretamente no RhinoScript:&#x20;**&#x50;arameters in RhinoScript

### Filtro para selecionar data

**Exemplo**

```xml
<PARAMETERS>
	<PARAM name='dataInicial' type='java.sql.Date' size='10' value='' description='citcorpore.comum.datainicio' fix='false' mandatory="true" default="{YEAR_AGO}"/>
  <PARAM name='dataFinal' type='java.sql.Date' size='10' value='' description='citcorpore.comum.datafim' fix='false' mandatory="true" default="{TODAY}"/>
</PARAMETERS>
```

**Resultado**

Example use Parameters

### Construir SQL/Rhino/JSP

Alguns relatórios podem necessitar de consultas específicas ou tratamentos diferenciados. Assim, você pode utilizar a área de construção de código (SQL/RhinoScript/SQL à depender do tipo de Smart Report selecionado na aba "**Cadastro**"). Dessa forma, construa a consulta que atenda às necessidades do seu relatório.

- **Exemplo de SQL:&#x20;**&#x45;xample use SQL
- **Exemplo de RhinoScript:&#x20;**&#x45;xample use RhinoScript
- **Exemplo de JSP:&#x20;**&#x45;xample use JSP

### Importar/Exportar Smart Reports

Existe a possibilidade de importar um "**Relatório**", para tanto, clique no botão "**Importar**" e selecione o arquivo no formato "***.citreport***". Além disso, você pode exportar relatórios existentes em sua  instância. Para isso, clique em "**Editar**", e ao final da página, clique em "**Exportar**".

## Interfaces de visualização

Os relatórios criados podem ser visualizados em diferentes áreas dos <font color="#ff6900">**4biz**</font>. Veja as possibilidades:

- Visualização em Processos, conforme definido na aba "**Cadastro**", item "**Módulo(s) onde será exibido**".
- Visualização em Dashboards, neste caso, apenas necessita de vinculação dos grupos que podem usá-lo como *widget&#x20;*&#x6E;o *Smart Decisions* (*Dashboards*).
- Visualização na área de *Smart Reports*, assim, após vínculo de grupos poderá ser utilizado nessa área.&#x20;

