GERADOR DE RELATÓRIOS SENIOR HCM: ESTRUTURA DE DADOS, RELACIONAMENTOS E HISTÓRICOS

Aprenda a estruturar dados no Senior HCM, diferenciar tabelas cadastrais de históricos, relacionar dependentes em múltiplos detalhes e configurar regras de exibição.

GERADOR DE RELATÓRIOS SENIOR HCM: ESTRUTURA DE DADOS, RELACIONAMENTOS E HISTÓRICOS


O desenvolvimento eficiente de relatórios no Senior HCM exige muito mais do que o domínio visual das ferramentas de layout. Compreender a arquitetura do banco de dados, a organização lógica das tabelas e o comportamento dos relacionamentos é indispensável para extrair informações com exatidão e consistência.

No ecossistema Senior, as informações funcionais encontram-se segmentadas entre cadastros atuais, dados históricos, tabelas complementares e estruturas organizacionais. Cada um desses grupos atende a regras de negócio e integridade próprias que influenciam diretamente o resultado das consultas.

Neste artigo, serão explorados os principais conceitos sobre o modelo de dados do sistema, as distinções entre informações vigentes e históricas, a configuração de múltiplas seções de detalhe, além de boas práticas de ordenação, filtros de tela e regras básicas de controle de impressão dentro do gerador de relatórios.

DIFERENÇA ENTRE DADOS CADASTRAIS ATUAIS E HISTÓRICOS

Um dos pontos mais críticos na construção de relatórios corporativos é saber distinguir se a informação solicitada reflete a posição presente ou a linha do tempo do colaborador.

- Tabelas cadastrais (prefixo R034): armazenam exclusivamente a posição atual do colaborador no sistema. A tabela principal R034FUN, por exemplo, reflete o cargo atual, a situação vigente e a escala em atividade.
- Tabelas de histórico (prefixo R038): concentram os registros ao longo do tempo. Exemplos incluem a R038AFA (histórico de afastamentos), tabelas de histórico salarial (R038HSA), de cargos (R038HCA) e de centros de custo (R038HCC).

Ao gerar relatórios com base em tabelas de histórico, um mesmo colaborador poderá aparecer em múltiplas linhas, pois cada registro representa um evento ou período distinto. Nesses casos, é indispensável incluir campos como datas de início e término para permitir a correta interpretação do relatório.

CAMPOS-CHAVE E INTEGRIDADE RELACIONAL

Os relacionamentos entre tabelas dependem diretamente da correta identificação dos campos-chave do Senior HCM. A ausência de chaves fundamentais em vínculos manuais costuma provocar duplicações indesejadas de registros ou retorno de dados incoerentes.

No cadastro do colaborador, a unicidade do registro baseia-se tradicionalmente em três campos que geram uma chave primária composta:
- NumEmp: código da empresa.
- TipCol: tipo do colaborador (empregado, terceiro, parceiro).
- NumCad: número de matrícula do colaborador.

Tabelas auxiliares exigem cuidados adicionais quanto à sua abrangência. A tabela de situações (R010SIT), por exemplo, possui apenas o código da situação como chave, pois sua codificação é corporativa e compartilhada entre todas as empresas. Em contrapartida, estruturas de cargos (R024CAR) vinculam-se aos campos EstCar (estrutura de cargos) e CodCar (código do cargo), demandando coerência com a estrutura associada à respectiva empresa.

AJUSTES DE CABEÇALHOS E EXPORTAÇÃO PARA PLANILHAS

A apresentação visual de títulos e cabeçalhos deve ser pensada tanto para impressões físicas quanto para a exportação em formato de planilha eletrônica (XLS).

O Gerador disponibiliza seções de Cabeçalho e Cabeçalho por Colunas. O título do relatório pode ser configurado nas propriedades do modelo para ser impresso antes do cabeçalho geral ou apenas na primeira página.

Para otimizar exportações em XLS e evitar poluição visual causada por repetições sucessivas de cabeçalhos nas quebras de página, recomenda-se:

- Manter alinhamento exato de colunas e larguras entre o cabeçalho e as linhas de detalhe.
- Inserir títulos de colunas para todos os campos exibidos no detalhe, evitando o deslocamento horizontal das células.
- Ocultar cabeçalhos redundantes ou rodapés quando o objetivo do usuário for gerar planilhas consolidadas para tratamento posterior.

VARIÁVEIS DE SISTEMA E PADRONIZAÇÃO DE RODAPÉS

O uso de variáveis de sistema garante a rastreabilidade e a conformidade dos relatórios distribuídos internamente.

Dentre os recursos recomendados para os rodapés e cabeçalhos, destacam-se:

- Variável DesRodape: preenche automaticamente a identificação padrão do sistema, incluindo código do modelo, usuário executor, data e horário de geração.
- Variável NomeEmpresaAtiva: exibe a razão social da empresa na qual o usuário está logado no momento da emissão.
- Variável NumPag: numera sequencialmente as páginas do relatório emitido.

Esses componentes asseguram auditoria rápida quando o suporte técnico ou a equipe de recursos humanos precisa identificar qual modelo originou determinado documento.

FILTROS DE ENTRADA E CONTROLE DE ABRANGÊNCIA

Os filtros de tela permitem restringir os dados antes do processamento das consultas no banco de dados. Eles são configurados por meio do menu de Definição de Telas de Entrada.

Ao criar parâmetros de seleção, algumas boas práticas de definição devem ser observadas:

- Parâmetros alfanuméricos com padrão upper: garantem que as entradas do usuário sejam tratadas em letras maiúsculas, prevenindo divergências na busca de dados.
- Listas de valores: utilizadas em campos fechados, como escolhas binárias (Sim/Não).
- Abrangência de campos: quando se deseja permitir a seleção de múltiplos códigos ou faixas numéricas (por exemplo, códigos de situação 1, 4 ou 7), o campo deve ser configurado como alfanumérico e ter o atributo de abrangência ativado.

CONTROLE CONDICIONAL DE SEÇÕES VIA REGRAS

O Gerador de Relatórios conta com um motor de regras integrado, acionado por eventos de processamento como "Antes de Imprimir" e "Depois de Imprimir".

Por meio do evento Antes de Imprimir, é possível avaliar valores de variáveis de entrada e condicionar a exibição de uma seção específica utilizando a função Cancel(2).

Sintaxe e estrutura recomendada para a regra:

- As variáveis alfanuméricas utilizadas nas regras devem ser declaradas explicitamente com a instrução Definir Alfa.
- O bloco condicional deve delimitar suas instruções entre chaves ({ e }) para garantir que apenas as rotinas desejadas sejam executadas.
- A instrução Cancel(2) suspende a impressão da seção corrente sem abortar a geração dos demais dados do relatório.

TRABALHANDO COM MÚLTIPLAS SEÇÕES DE DETALHE

Cenários complexos exigem a apresentação de dados subordinados sem a necessidade de duplicar as informações do nível principal. Para essa finalidade, o sistema suporta múltiplas seções de detalhe no mesmo modelo.

Um exemplo prático é a listagem de colaboradores e seus respectivos dependentes (tabela R036DEP):

- Detalhe 1 (Colaboradores): exibe os dados do titular a partir da tabela R034FUN (empresa, matrícula, nome, situação).
- Detalhe 2 (Dependentes): exibe a relação de dependentes vinculados àquele titular, contendo código do dependente, nome e grau de parentesco.

O detalhe secundário atua diretamente subordinado ao detalhe principal, garantindo que os dependentes só sejam listados abaixo do respectivo colaborador.

PROPRIEDADE IMPRIMIR SEÇÃO VAZIA

Ao vincular tabelas secundárias a um detalhe mestre, o comportamento padrão do banco de dados aplica junções que podem omitir registros principais caso não existam dados correspondentes na tabela filha.

Na relação colaborador-dependente, se um colaborador não possuir dependentes cadastrados, ele deixará de ser impresso caso o relatório exija correspondência obrigatória.

Para resolver esse cenário e assegurar que todos os funcionários sejam exibidos, independentemente de possuírem ou não dependentes, deve-se acessar as propriedades da seção de detalhe e configurar a propriedade "Imprimir Seção Vazia" como Verdadeiro.

CAMPOS DE ENUMERAÇÃO E LISTAS FIXAS

Diversos campos do sistema Senior não possuem tabelas externas com descrições textuais no banco de dados. Em vez disso, utilizam valores inteiros associados a listas enumeradas internas.

O campo de grau de parentesco dos dependentes ilustra perfeitamente esse conceito: o banco de dados armazena valores numéricos (como 1 para cônjuge, 2 para filho), enquanto a descrição textual deve ser exibida ao usuário final.

No Gerador, associa-se o campo de texto ao recurso de descrição de lista enumerada, conectando o componente ao respectivo código numérico para exibir automaticamente o texto decodificado.

ORDENAÇÃO E QUEBRAS DE REGISTROS

A ordem de exibição das informações deve refletir a lógica hierárquica das empresas. O Gerador permite criar ordenações compostas configuráveis na tela de ordens e quebras.

Critérios indispensáveis para ordenações estruturadas:

- Toda ordenação cadastral de colaboradores deve incluir o campo da empresa (NumEmp) no nível mais alto, evitando que dados de diferentes empresas sejam misturados.
- O segundo nível deve respeitar o tipo de colaborador (TipCol) para separar funcionários celetistas, terceirizados e estagiários.
- O nível de detalhe pode ser definido por matrícula (NumCad) ou nome alfabético (NomFun), de acordo com a finalidade do relatório.

DIAGNÓSTICO E ANÁLISE VIA CBDS

Para relatórios com resultados inconsistentes ou problemas de performance, o Gerador disponibiliza a visualização do comando SQL gerado internamente.

Esse comando pode ser copiado e inspecionado diretamente na Central de Banco de Dados Senior (CBDS) ou em utilitários de gerenciamento de banco. Essa prática permite ao desenvolvedor:

- Validar os critérios de junção (JOIN) e filtros (WHERE) aplicados pela ferramenta.
- Identificar por que determinados registros estão sendo omitidos ou duplicados.
- Analisar o volume de dados retornado antes da renderização no layout visual.

Veja como esse conteúdo foi abordado na aula:

EXEMPLO PRÁTICO: CONSTRUÇÃO DE RELATÓRIO DE COLABORADORES COM DEPENDENTES

A seguir, veja os passos para desenvolver um relatório customizado com duas seções de detalhe, integrando dados cadastrais vigentes e dependentes:

1. Acesse o Gerador de Relatórios e crie um novo modelo customizado com numeração superior a 100.
2. Configure o layout da página para o formato Paisagem e defina as margens padrão do documento.
3. Insira as seções essenciais: Cabeçalho por Colunas, Detalhe 1 (Colaboradores), Detalhe 2 (Dependentes) e Rodapé.
4. No Detalhe 1, defina a tabela principal R034FUN e adicione os campos NumEmp, TipCol, NumCad e NomFun.
5. Insira a tabela R010SIT, relacione o campo SitAfa com CodSit e adicione a descrição da situação funcional.
6. Configure o campo CodSit no layout com propriedade de impressão Falso e cor amarela, preservando o relacionamento sem poluir o visual.
7. No Detalhe 2, defina a tabela R036DEP e vincule-a à seção de colaboradores com as chaves NumEmp, TipCol e NumCad.
8. Adicione os campos CodDep, NomDep e o componente de lista para o grau de parentesco decodificado.
9. Nas propriedades do Detalhe 2, marque a opção "Imprimir Seção Vazia" como Verdadeiro para não omitir funcionários sem dependentes.
10. Acesse Ordens e Quebras e configure a ordenação por NumEmp, TipCol e NomFun.
11. No rodapé, insira a variável de sistema DesRodape ajustando o alinhamento centralizado e o comprimento da linha.
12. Execute o modelo em ambiente de homologação e valide a integridade dos dados retornados.

CONSIDERAÇÕES FINAIS

O domínio do Gerador de Relatórios do Senior HCM passa obrigatoriamente pela compreensão da arquitetura do banco de dados e da modelagem de suas tabelas. A distinção clara entre tabelas vigentes e históricas evita análises equivocadas e relatórios inconsistentes.

Recursos como múltiplas seções de detalhe, manipulação de enumerações e aplicação criteriosa da propriedade de impressão de seções vazias expandem expressivamente a capacidade de atender a demandas complexas de recursos humanos.

Com a correta aplicação de chaves primárias, ordenações hierárquicas e inspeção via SQL, o desenvolvedor assegura documentos corporativos estáveis, performáticos e plenamente alinhados às necessidades de gestão da empresa.