Gerador de Relatórios Senior HCM: Guia Prático do Básico ao Intermediário

Todas as aulas dos cursos Básico e Intermediário de Gerador de Relatórios Senior HCM reunidas em um único guia.

Sumário

  1. Módulo 1: GERADOR DE RELATÓRIOS SENIOR HCM: CONCEITOS FUNDAMENTAIS E PRIMEIROS PASSOS
  2. Módulo 2: GERADOR DE RELATÓRIOS SENIOR HCM: ESTRUTURA DE DADOS, RELACIONAMENTOS E HISTÓRICOS
  3. Módulo 3: BANCO DE DADOS E LÓGICA NO SENIOR HCM: CBDS, CURSORES E SEÇÕES ADICIONAIS
  4. Módulo 4: SENIOR HCM: MAPEAMENTO DE TABELAS, CAMPOS E CONTROLE CONDICIONAL NO GERADOR DE RELATÓRIOS
  5. Módulo 5: SENIOR HCM: CONFIGURAÇÃO DE RELATÓRIOS EM TEXTO, MANIPULAÇÃO DE DATAS E FILTROS DINÂMICOS
  6. Módulo 6: GERADOR DE RELATÓRIOS SENIOR HCM: ALINHAMENTO DE CAMPOS, FORMATAÇÃO DE ARQUIVOS TEXTO E EXPORTAÇÃO
  7. Módulo 7: GERADOR DE RELATÓRIOS SENIOR HCM: SUBTÍTULOS, CURSORES E CAMPOS MEMORANDO
  8. Módulo 8: GERADOR DE RELATÓRIOS SENIOR HCM: TOTAIS, TOTALIZADORES E VISÕES ANALÍTICA E SINTÉTICA
  9. Módulo 9: GERADOR DE RELATÓRIOS SENIOR HCM: SALVAMENTO, SEGURANÇA E ORGANIZAÇÃO DOS MODELOS
  10. Módulo 10: GERADOR DE RELATÓRIOS SENIOR HCM: PROJETO PRÁTICO COM HISTÓRICOS, DATAS DE CORTE E QUEBRAS HIERÁRQUICAS
  11. Módulo 11: GERADOR DE RELATÓRIOS SENIOR HCM: ESTRUTURAS AVANÇADAS, MESTRE-DETALHE E SEÇÕES ADICIONAIS
  12. Módulo 12: GERADOR DE RELATÓRIOS SENIOR HCM: ENTRADAS, VALIDAÇÕES E FILTROS DINÂMICOS
  13. Módulo 13: GERADOR DE RELATÓRIOS SENIOR HCM: ABRANGÊNCIAS, FILTROS DINÂMICOS E HISTÓRICOS
  14. Módulo 14: GERADOR DE RELATÓRIOS SENIOR HCM: FÓRMULAS, CÁLCULOS SALARIAIS E TOTALIZADORES
  15. Módulo 15: GERADOR DE RELATÓRIOS SENIOR HCM: REGRAS, VARIÁVEIS E FUNÇÕES CUSTOMIZADAS
  16. Módulo 16: GERADOR DE RELATÓRIOS SENIOR HCM: CONTROLE DE FLUXO COM EVENTOS, SELEÇÃO E CANCELAMENTO
  17. Módulo 17: GERADOR DE RELATÓRIOS SENIOR HCM: PRÉ-SELEÇÃO E MANIPULAÇÃO DINÂMICA DE SQL
  18. Módulo 18: GERADOR DE RELATÓRIOS SENIOR HCM: CONSULTAS SQL, HISTÓRICOS E SEÇÕES ADICIONAIS
  19. Módulo 19: GERADOR DE RELATÓRIOS SENIOR HCM: MODELOS MESTRE-DETALHE E AGRUPAMENTO SQL AVANÇADO
  20. Módulo 20: GERADOR DE RELATÓRIOS SENIOR HCM: SEÇÕES ADICIONAIS E PROCESSAMENTO DE INFORMAÇÕES COMPLEMENTARES
  21. Módulo 21: GERADOR DE RELATÓRIOS SENIOR HCM: CONTROLE DE FLUXO E CONDIÇÕES DE IMPRESSÃO
  22. Módulo 22: GERADOR DE RELATÓRIOS SENIOR HCM: VARIÁVEIS DE SISTEMA E FUNÇÕES NATIVAS
  23. Módulo 23: GERADOR DE RELATÓRIOS SENIOR HCM: CONTROLES AVANÇADOS, CÓDIGOS DE BARRA E GRÁFICOS
  24. Módulo 24: PERFORMANCE EM RELATÓRIOS SENIOR HCM: TÉCNICAS DE FILTRAGEM, PROCESSAMENTO E OTIMIZAÇÃO
  25. Módulo 25: GERADOR DE RELATÓRIOS SENIOR HCM: CONSOLIDAÇÃO INTERMEDIÁRIA DE LEIAUTE, CURSORES E REGRAS

Módulo 1: GERADOR DE RELATÓRIOS SENIOR HCM: CONCEITOS FUNDAMENTAIS E PRIMEIROS PASSOS


O Gerador de Relatórios do Senior HCM é uma ferramenta destinada à criação, personalização e manutenção de relatórios utilizados pelos diversos módulos do sistema.

Seu principal objetivo é permitir que as empresas adaptem relatórios às suas necessidades operacionais, gerenciais e legais, transformando dados em informações úteis para análise e tomada de decisão.

Um dos conceitos mais importantes para quem inicia no desenvolvimento de relatórios é compreender que o domínio da ferramenta vai além do conhecimento dos comandos disponíveis. A construção de relatórios eficientes depende principalmente do entendimento da estrutura dos dados, dos relacionamentos entre tabelas e da forma como as informações devem ser apresentadas ao usuário.

ESTRUTURA DE ARMAZENAMENTO DOS RELATÓRIOS

No Senior HCM existem dois conceitos distintos relacionados aos relatórios:

- Modelos de relatório: arquivos disponibilizados pela Senior como padrão do sistema.
- Relatórios gerados: resultados produzidos a partir da execução desses modelos.

Os modelos ficam armazenados em diretórios específicos do sistema e organizados por módulo. Cada relatório possui uma identificação própria, seguindo uma nomenclatura que facilita sua localização e manutenção.

Por serem arquivos físicos, os modelos permanecem disponíveis mesmo em situações de restauração de banco de dados, desde que os diretórios responsáveis pelo armazenamento sejam preservados.

BOAS PRÁTICAS PARA CUSTOMIZAÇÃO

Uma das recomendações mais importantes é nunca alterar diretamente os relatórios padrão fornecidos pela Senior.

Sempre que houver necessidade de realizar customizações, o procedimento recomendado é:

1. Abrir o relatório padrão.
2. Salvar uma cópia utilizando uma numeração superior a 100.
3. Realizar as alterações apenas na versão copiada.

Exemplo:

- Relatório padrão: FPDO034
- Relatório customizado: FPDO134

Essa prática evita que futuras atualizações do sistema sobrescrevam as personalizações realizadas pela empresa.

ORGANIZAÇÃO POR MÓDULOS

Os relatórios são organizados de acordo com os módulos do sistema, como:

- Administração de Pessoal
- Folha de Pagamento
- Benefícios
- Controle de Ponto
- Cargos e Salários
- Segurança e Medicina do Trabalho
- Jurídico
- Recrutamento e Seleção

Cada relatório deve ser desenvolvido dentro do módulo correspondente ao seu propósito. Dessa forma, um relatório criado para Folha de Pagamento não estará automaticamente disponível em outros módulos.

ACESSO AO GERADOR DE RELATÓRIOS

O acesso à ferramenta é realizado pelo menu:

Recursos > Implementações > Gerador de Relatórios

Por meio desse ambiente é possível:

- Criar novos relatórios.
- Abrir modelos existentes.
- Alterar relatórios customizados.
- Configurar parâmetros de execução.
- Definir filtros de seleção.
- Gerar arquivos em diferentes formatos.

ESTRUTURA BÁSICA DE UM RELATÓRIO

Todo relatório é composto por seções que organizam as informações exibidas ao usuário.

Seção de Título

Normalmente exibida apenas na primeira página do relatório.

Sua finalidade é apresentar o nome do relatório e outras informações gerais relacionadas ao documento.

Seção de Cabeçalho

Exibida em todas as páginas.

É utilizada para apresentar títulos de colunas, identificações e demais informações que precisam estar visíveis durante toda a leitura do relatório.

Seção de Detalhe

É a principal seção do relatório.

Cada registro retornado na consulta é apresentado por meio dessa seção. Na prática, cada linha exibida corresponde à execução do detalhe para um registro encontrado.

Sem uma seção de detalhe, o relatório não consegue listar os dados retornados pela consulta.

Seção de Rodapé

Utilizada para apresentar:

- Totais.
- Resumos.
- Informações complementares.
- Encerramento de grupos e consolidações.

FILTROS E PARÂMETROS DE ENTRADA

Os filtros são responsáveis por determinar quais registros serão retornados pelo relatório.

Cada parâmetro pode possuir:

- Nome da variável.
- Descrição para o usuário.
- Tipo de dado.
- Tamanho do campo.
- Máscaras de entrada.

Uma boa definição dos parâmetros facilita a utilização do relatório e reduz a possibilidade de erros durante sua execução.

COMPONENTES DISPONÍVEIS

O Gerador de Relatórios disponibiliza diversos componentes para montagem do layout, entre eles:

- Campos de banco de dados.
- Campos de sistema.
- Fórmulas.
- Totalizadores.
- Textos fixos.
- Imagens.
- Objetos gráficos.
- Memorandos.
- Código de barras.

A combinação desses recursos permite criar desde relatórios simples até documentos corporativos mais complexos.

TABELAS E DICIONÁRIO DE DADOS

Todas as informações utilizadas nos relatórios são obtidas a partir das tabelas da base de dados do sistema.

Para auxiliar o desenvolvedor, o Gerador de Relatórios disponibiliza acesso ao dicionário de dados, permitindo:

- Localizar tabelas.
- Identificar campos disponíveis.
- Consultar relacionamentos.
- Compreender a estrutura da base de dados.

O domínio do dicionário de dados é um dos principais fatores para o desenvolvimento de relatórios mais completos e eficientes.

CAMPOS-CHAVE

Alguns campos possuem função de chave e são utilizados para identificar registros de forma única dentro do sistema.

No cadastro de colaboradores, por exemplo, normalmente são utilizados:

- Empresa.
- Tipo de colaborador.
- Matrícula.

Esses campos garantem que as informações sejam localizadas corretamente e servem como base para os relacionamentos entre tabelas.

RELACIONAMENTO ENTRE TABELAS

Em grande parte dos cenários, as informações necessárias para um relatório encontram-se distribuídas em diversas tabelas.

Por exemplo:

- Dados cadastrais do colaborador.
- Informações de endereço.
- Dados do cargo.
- Situação funcional.
- Informações contratuais.

O Gerador de Relatórios utiliza os relacionamentos existentes entre as tabelas para reunir essas informações em uma única consulta, possibilitando a construção de relatórios mais completos.

Compreender esses relacionamentos é fundamental para o desenvolvimento de relatórios avançados.

FORMATAÇÃO DOS DADOS

A apresentação das informações pode ser controlada por meio das chamadas máscaras ou formatos de edição.

Com elas é possível:

- Definir formatos de datas.
- Personalizar máscaras numéricas.
- Controlar casas decimais.
- Exibir ou ocultar zeros.
- Ajustar o tamanho das informações apresentadas.

Uma formatação adequada contribui para a legibilidade e a qualidade do relatório final.

GERAÇÃO E EXPORTAÇÃO

Após sua criação, os relatórios podem ser gerados em diversos formatos, conforme a necessidade do usuário:

- PDF.
- XLS.
- CSV.
- TXT.

A escolha do formato depende da finalidade do documento e da forma como as informações serão utilizadas posteriormente.

CONTROLE DE ACESSO E SEGURANÇA

O sistema permite controlar quem poderá acessar e executar cada relatório.

É possível:

- Liberar relatórios para todos os usuários.
- Restringir o acesso a grupos específicos.
- Limitar a utilização a administradores.
- Manter versões em homologação antes da publicação em produção.

Esse controle garante maior segurança e governança sobre as informações disponibilizadas.

RECURSOS PARA ANÁLISE E MANUTENÇÃO

O Gerador de Relatórios também oferece funcionalidades que auxiliam na manutenção e no diagnóstico de problemas, como:

- Visualização da consulta SQL gerada.
- Histórico de alterações.
- Identificação do responsável pela última modificação.
- Localização de campos e variáveis.
- Recursos para análise da execução do relatório.

Essas ferramentas facilitam o desenvolvimento, a correção de problemas e a evolução de relatórios mais complexos.

Veja como esse conteúdo foi abordado na aula:

EXEMPLO PRÁTICO DE CRIAÇÃO DE RELATÓRIO

Como exercício introdutório, faça a criação de um relatório simples de colaboradores seguindo as etapas abaixo:

1. Criação de um novo relatório customizado.
2. Definição da tabela principal de colaboradores.
3. Inclusão da seção de detalhe.
4. Inserção dos campos:
   - Empresa.
   - Matrícula.
   - Nome do colaborador.
   - Data de admissão.
5. Configuração dos títulos e cabeçalhos.
6. Execução do relatório.
7. Exportação do resultado para PDF ou planilha.

CONSIDERAÇÕES FINAIS

O Gerador de Relatórios do Senior HCM é uma ferramenta poderosa para transformar informações operacionais em conhecimento útil para a gestão.

Seu uso eficiente depende principalmente da compreensão da estrutura dos dados, dos relacionamentos entre tabelas e da organização das informações dentro das seções do relatório.

Com os conceitos apresentados, já é possível compreender a arquitetura básica da ferramenta, criar relatórios simples e construir a base necessária para avançar para recursos mais sofisticados, envolvendo múltiplas tabelas, filtros, regras de negócio, cálculos e personalizações avançadas.

Módulo 2: 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.

Módulo 3: BANCO DE DADOS E LÓGICA NO SENIOR HCM: CBDS, CURSORES E SEÇÕES ADICIONAIS


A criação de relatórios complexos no Senior HCM muitas vezes exige ir além dos relacionamentos padrões estabelecidos entre as seções de detalhe. Quando o layout demanda composições sob medida ou tratamentos pontuais de registros subordinados, o domínio do banco de dados e da linguagem de regras torna-se essencial.

Nesse cenário, a Central de Banco de Dados Senior (CBDS) atua como o ponto focal para a manutenção da integridade da base, dicionários de dados e estruturas customizadas. Qualquer modificação estrutural que fuja das regras desse gerenciador pode comprometer o ecossistema e inviabilizar o uso de campos em relatórios e telas.

Neste artigo, serão abordados os fundamentos do gerenciamento de tabelas e campos customizados no CBDS, o ciclo de vida do dicionário TBS, a implementação de cursores SQL em regras e a impressão controlada por meio de seções adicionais no Gerador de Relatórios.

MODELAGEM CUSTOMIZADA E GESTÃO DO DICIONÁRIO NO CBDS

No ecossistema Senior, todas as novas tabelas e campos personalizados devem ser criados obrigatoriamente através da Central de Banco de Dados Senior (CBDS). A criação direta em ferramentas externas, como o SQL Server Management Studio, não atualiza o dicionário de metadados da aplicação.

Os objetos criados pelo usuário recebem nomenclaturas padronizadas pelo sistema para assegurar compatibilidade em futuras atualizações:

- Tabelas customizadas: recebem automaticamente o prefixo USU_ seguido de identificador (como USU_T...).
- Campos customizados: assumem o prefixo USU_ associado ao nome atribuído pela regra de negócio.
- Dicionário de dados TBS: armazena as definições das tabelas e colunas, permitindo o reconhecimento dos campos na tecla de atalho F8 e no gerador.

Após desenhar uma tabela ou campo no CBDS, o objeto permanece em estado lógico (marcado em vermelho). A efetivação física no banco de dados e a sincronização do arquivo TBS ocorrem somente após a execução do processo de aplicação de alterações.

BOAS PRÁTICAS DE ATUALIZAÇÃO E CONTROLE DE BLOQUEIOS NA BASE

A aplicação de alterações físicas no banco de dados exige cautela operacional por parte do desenvolvedor ou consultor. Alterar tabelas centrais com milhões de registros, como a R034FUN, recria estruturas e pode provocar locks severos no banco.

Diretrizes indispensáveis para manutenção de estruturas:

- Executar procedimentos de recriação de tabelas e inclusão de colunas fora do expediente comercial ou durante janelas planejadas.
- Utilizar a função de assinalamento de base em manutenção ou treinamento, bloqueando novos logins de usuários até o término do processo.
- Manter backups regulares dos arquivos TBS, observando que o CBDS gera versões de segurança com extensão incremental (.001, .002) a cada atualização.
- Desconectar e reconectar o usuário no sistema após a efetivação física, viabilizando o carregamento das novas colunas na sessão local.

CRIAÇÃO E VÍNCULO DE ENUMERAÇÕES CUSTOMIZADAS

Quando determinado campo comporta apenas um conjunto finito e reduzido de opções fixas, a criação de tabelas adicionais torna-se desnecessária. Nesses casos, o Senior HCM adota o conceito de listas enumeradas.

As enumerações definem uma relação interna entre valores armazenados no banco e suas respectivas descrições de tela. Ao criar uma enumeração no CBDS:

- Define-se o tipo do identificador como numérico ou caractere, associado à sua precisão ou máscara.
- Cadastram-se as chaves e valores válidos (por exemplo, 1 para Opção A, 2 para Opção B).
- Associa-se a lista enumerada diretamente à coluna correspondente na tabela customizada.

Essa padronização preserva o desempenho do banco, reduz a ocupação em disco e assegura a integridade das opções selecionáveis pelo usuário final.

ESTRUTURAÇÃO DE CURSORES SQL EM REGRAS DO RELATÓRIO

Em modelos onde se opta por não utilizar múltiplas seções visuais de detalhe, a manipulação de dados subordinados é realizada via programação através de cursores SQL integrados às regras do Gerador.

A rotina de consulta via cursor obedece a um ciclo rígido de declaração e manipulação:

- Declaração do cursor: realizada por meio da instrução Definir Cursor, atribuindo um nome referencial (exemplo: Definir Cursor CUR_R036DEP).
- Montagem da consulta: atribuição do comando SQL via propriedade .SQL, parametrizando as cláusulas WHERE com as variáveis do registro pai.
- Controle de execução: abertura explícita com o método .Abrir() e encerramento obrigatório com .Fechar() para liberação de memória.
- Laço de repetição: iteração sobre os registros encontrados com estrutura Enquanto e avanço obrigatório através do método .Proximo().

A omissão do método .Proximo() dentro do bloco de repetição causa laço infinito, resultando no congelamento do processo de emissão do relatório.

IMPRESSÃO DE DADOS SUBORDINADOS VIA SEÇÃO ADICIONAL

Para exibir informações obtidas por um cursor sem sobrecarregar a linha principal de detalhe, utiliza-se a Seção Adicional. Diferente de um subdetalhe tradicional, a seção adicional é renderizada exclusivamente sob demanda da regra.

A chamada da seção ocorre através da função de sistema ListaSecao:

- A seção adicional é criada no layout do relatório e identificada com um nome semântico (como Adicional Dependentes).
- No evento de regra apropriado, invoca-se a função ListaSecao informando exatamente o nome da seção entre aspas.
- Os campos contidos na seção adicional recebem os valores das variáveis alimentadas pelo cursor durante cada ciclo da iteração.

O evento de disparo influencia diretamente a ordenação dos dados: para que a lista subordinada seja exibida logo abaixo do colaborador titular, a chamada da regra deve ser posicionada no evento "Depois de Imprimir" do detalhe principal.

DECODIFICAÇÃO DE LISTAS ENUMERADAS E FORMATAÇÃO DE DADOS

Campos baseados em listas enumeradas (como grau de parentesco e tipo de sexo) retornam códigos internos que necessitam de conversão textual antes da renderização na seção adicional.

Recursos de formatação e decodificação utilizados nas regras:

- Função DescItemLista: recebe o nome da lista de sistema, o código numérico ou caractere e devolve a descrição textual correspondente em uma variável alfanumérica.
- Função ConverteMascara: transforma valores numéricos para formatos editados ou strings, exigindo a identificação do tipo do dado e a máscara de destino.
- Tipagem de variáveis: variáveis alfanuméricas exigem declaração prévia obrigatória com a instrução Definir Alfa, enquanto tipos numéricos comportam declaração implícita.

Para a correta impressão do texto decodificado em campos de fórmula, utiliza-se a associação via variável ValStr combinada à instrução Cancel(2), liberando a impressão pontual do componente.

FILTRAGEM CONDICIONAL DE REGISTROS MESTRE VIA EVENTOS

Em determinadas situações gerenciais, o relatório não deve listar registros mestres caso estes não possuam itens associados na tabela secundária (como colaboradores sem dependentes).

Para implementar esse filtro lógico sem alterar a estrutura da consulta primária:

- Vincula-se uma verificação via regra no evento "Antes de Imprimir" da seção de detalhe do colaborador.
- Executa-se uma consulta pontual no cursor subordinado validando a existência de registros associados à chave atual.
- Caso o cursor não encontre registros, executa-se a instrução Cancel(1), cancelando integralmente a exibição da linha do colaborador corrente.

Esse mecanismo atua como um filtro pós-processamento, garantindo que o relatório final apresente apenas os dados de interesse.

PARÂMETROS COM ABRANGÊNCIA NAS TELAS DE ENTRADA

A flexibilidade de um relatório reside na capacidade de permitir seleções dinâmicas pelo usuário final através da tela de entrada.

Recomendações técnicas para a construção de filtros:

- Chaves compostas agrupadas: posicionar os campos de empresa, tipo e matrícula em sequência lógica para facilitar o preenchimento.
- Configuração de abrangência: ativar a propriedade de abrangência em parâmetros alfanuméricos para permitir a inserção de intervalos e listas separadas por vírgula.
- Máscaras coerentes: definir máscaras cujo tamanho do nível seja rigorosamente compatível com o comprimento total da variável de entrada.

Veja como esse conteúdo foi abordado na aula:

EXEMPLO PRÁTICO: IMPRESSÃO DE DEPENDENTES COM CURSOR E SEÇÃO ADICIONAL

A seguir, veja os passos para criar um relatório que lista colaboradores e imprime seus respectivos dependentes utilizando regras, cursores e seção adicional:

1. Acesse o Gerador de Relatórios e crie um novo modelo customizado com numeração superior a 100.
2. Configure a seção Detalhe Colaboradores associando a tabela R034FUN e adicione os campos NumEmp, TipCol, NumCad e NomFun.
3. Crie uma nova Seção Adicional no layout e renomeie-a para "Adicional Dependentes".
4. Na Seção Adicional, insira componentes do tipo formulário para o código, nome, parentesco e sexo do dependente.
5. Acesse o evento "Depois de Imprimir" da seção Detalhe Colaboradores e declare as variáveis alfanuméricas com a instrução Definir Alfa.
6. Defina o cursor apontando para a tabela R036DEP: Definir Cursor CUR_R036DEP.
7. Monte a instrução SQL filtrando por NumEmp, TipCol e NumCad equivalentes aos dados do colaborador ativo.
8. Abra o cursor com CUR_R036DEP.Abrir() e inicie a estrutura de repetição Enquanto.
9. Dentro do laço, alimente as variáveis com os campos do cursor e utilize DescItemLista para decodificar o sexo e o parentesco.
10. Execute o comando ListaSecao("Adicional Dependentes") para imprimir cada dependente encontrado.
11. Insira a chamada CUR_R036DEP.Proximo() e feche o cursor com CUR_R036DEP.Fechar() ao término do laço.
12. Salve o modelo, execute o teste no depurador para validar a passagem dos ponteiros e confirme a emissão dos dados em tela.

CONSIDERAÇÕES FINAIS

A integração entre a Central de Banco de Dados Senior e o Gerador de Relatórios proporciona um leque avançado de soluções para atender a demandas analíticas do departamento de Recursos Humanos. O respeito à arquitetura do dicionário TBS e a realização de manutenções em janelas programadas garantem a estabilidade de todo o sistema.

A aplicação de cursores em conjunto com seções adicionais revela-se uma alternativa poderosa ao uso tradicional de múltiplos subdetalhes visuais. Essa técnica confere maior controle sobre os momentos de impressão, paginação e decodificação dinâmica de literais.

Compreender a ordem lógica dos eventos, o tratamento de listas enumeradas e as instruções de controle condicional capacita os desenvolvedores a criar relatórios enxutos, performáticos e com alto rigor técnico no Senior HCM.

Módulo 4: SENIOR HCM: MAPEAMENTO DE TABELAS, CAMPOS E CONTROLE CONDICIONAL NO GERADOR DE RELATÓRIOS


O desenvolvimento eficiente de relatórios customizados no Senior HCM depende da rápida identificação das tabelas e colunas que armazenam as informações operacionais. Compreender como a interface gráfica do sistema se relaciona com a estrutura de dados reduz o tempo de análise e assegura consultas precisas.

Além de localizar a origem dos dados, o desenvolvedor precisa dominar o comportamento dos modelos no Gerador de Relatórios. A flexibilidade do layout muitas vezes exige controlar a impressão de seções conforme parâmetros informados pelo usuário, sem sobrecarregar o processamento ou gerar loops infinitos.

Neste artigo, serão apresentadas as técnicas para mapeamento de tabelas e campos diretamente pelas telas do sistema, a arquitetura de armazenamento dos modelos e as práticas essenciais para manipulação condicional de seções e cursores.

IDENTIFICAÇÃO DE TABELAS ATRAVÉS DA INTERFACE DO SISTEMA

A interface do Senior HCM fornece atalhos visuais para que consultores e analistas descubram a tabela base de determinado cadastro sem recorrer imediatamente ao banco de dados. Na grande maioria dos formulários, o identificador do objeto é exibido no canto inferior direito da janela ativa.

A nomenclatura do formulário geralmente traz um prefixo seguido do código da tabela principal:

- Ficha básica: a tela exibe o indicador FR034FUN, apontando diretamente para a tabela R034FUN.
- Histórico de cargos: exibe o código FR038HCA, correspondente à tabela R038HCA.
- Histórico de centros de custo: apresenta FR038HCC, indicando a tabela de histórico R038HCC.
- Cadastro de centros de custo: exibe FR018CCU, direcionando para a tabela cadastral R018CCU.
- Cadastro de cargos: apresenta FR024CAR, referente à tabela de cargos R024CAR.

Esse padrão simplifica o mapeamento preliminar em consultas SQL ou na inclusão de tabelas na árvore de dados do Gerador de Relatórios.

DESCOBERTA DE TABELAS EM FORMULÁRIOS COM MÚLTIPLAS ABAS

Algumas telas do sistema concentram uma grande quantidade de dados distribuídos em diversas abas, como o cadastro de empresas ou filiais. Nesses casos, o código exibido no rodapé da janela principal representa apenas o cabeçalho do formulário, enquanto as abas internas gravam dados em tabelas distintas.

Para descobrir a tabela associada a uma aba específica:

- Clique com o botão direito do mouse em uma área livre da tela e acerte o menu de Configurações Internacionais de Tela.
- Navegue pela árvore de componentes da janela para inspecionar os quadros (frames) e submódulos carregados.
- Identifique a tabela correspondente vinculada à aba ativa, como a R030CAR para parametrizações de cargos da empresa ou R030ORG para organogramas.

Essa verificação evita erros frequentes de consulta em tabelas de cabeçalho quando o dado desejado reside em tabelas filhas ou de parametrização complementar.

INSPEÇÃO DE METADADOS E CAMPOS COM F8 E SHIFT + F3

Ao definir regras de negócio ou filtros, apenas conhecer o nome da tabela não basta; é necessário saber exatamente o identificador técnico de cada coluna. O sistema dispõe de recursos nativos para agilizar essa conferência em tempo de execução.

Principais atalhos para consulta de dicionário de dados:

- Tecla F8: abre a janela de dicionário de dados do sistema, permitindo pesquisar a estrutura completa de qualquer tabela, seus tipos de dados e descrições.
- Tecla de atalho Shift + F3: ao posicionar o cursor em qualquer campo editável da tela, essa combinação revela o nome físico exato do campo no banco (por exemplo, GraIns para grau de instrução ou TipSex para sexo).

O uso coordenado desses recursos elimina a necessidade de adivinhações e otimiza a montagem de cláusulas SQL no Gerador de Relatórios.

ARQUITETURA E RASTREABILIDADE DOS ARQUIVOS DE RELATÓRIO

Diferente de tabelas ou telas customizadas criadas via Central de Banco de Dados Senior (CBDS), os modelos do Gerador de Relatórios não são gravados dentro do banco de dados relacional. Eles são mantidos como arquivos físicos no sistema de arquivos do servidor.

Aspectos estruturais fundamentais sobre o ciclo de vida dos modelos:

- Identificação do modelo: ao consultar uma listagem no menu do sistema, o clique com o botão direito sobre a opção revela o módulo, a categoria (como DR ou DO) e o número do relatório (por exemplo, DR020COM).
- Localização física: os arquivos ficam hospedados no diretório de instalação do sistema, na pasta de modelos (geralmente sob a estrutura VetorH/Modelos), com extensões como .COL.
- Portabilidade e segurança: em processos de atualização de versão do banco de dados, os relatórios físicos são preservados, mas devem ser versionados e copiados manualmente entre ambientes de homologação e produção.

Compreender essa separação física é indispensável para a governança de código e a rápida recuperação de backups em caso de inconsistências.

PARAMETRIZAÇÃO CONDICIONAL VIA TELA DE ENTRADA

A construção de relatórios multifuncionais permite que um único modelo atenda a diferentes objetivos gerenciais. Por meio da criação de variáveis na tela de entrada, o usuário pode selecionar o nível de detalhe que deseja imprimir.

Boas práticas para configuração de parâmetros dinâmicos:

- Criação de variáveis alfanuméricas com listas de valores pré-definidos (por exemplo, Todas as Seções, Somente Endereço, Somente Dependentes).
- Aplicação da função de conversão para letras maiúsculas (UPPERCASE) para garantir consistência em comparações lógicas.
- Definição de valores padrão na tela de entrada para guiar o operador durante o preenchimento dos filtros.

Essa estratégia unifica a manutenção, evitando a proliferação desnecessária de múltiplos relatórios semelhantes no menu da empresa.

GERENCIAMENTO SEGURO DE CURSORES E CONTROLE DE LOOPS

Ao utilizar cursores em regras para alimentar seções adicionais ou verificar a existência de dados filhos, a disciplina no ciclo de vida da consulta é indispensável para a estabilidade do sistema.

Diretrizes para o uso correto de cursores SQL:

- Abertura e fechamento explícitos: todo cursor instanciado com o método Abrir() deve conter a respectiva chamada Fechar(), assegurando a liberação de buffers de memória.
- Avanço obrigatório: dentro de estruturas de repetição Enquanto, a instrução Proximo() deve ser executada a cada iteração.
- Prevenção de travamentos: a omissão do avanço dentro do laço causa travamento definitivo do processo de emissão, consumindo recursos excessivos do servidor de aplicação.

O controle de escopo do cursor impede que consultas anteriores permaneçam ativas na sessão, evitando erros de cursor já aberto ao processar múltiplos colaboradores.

CONTROLE DE RENDERIZAÇÃO DE SEÇÕES E COMPORTAMENTO DO DEPURADOR

A decisão de emitir ou ocultar blocos de informação ocorre nos eventos das seções do layout. Seções adicionais demandam a invocação da função ListaSecao, enquanto seções de detalhe nativas utilizam o comando Cancel(1) para suprimir registros que não atendam aos critérios de filtro.

Durante a fase de testes, o uso do depurador de regras exige atenção:

- Ao acionar a opção Fechar na tela do depurador, o sistema suspende momentaneamente os pontos de parada para as próximas iterações.
- Para restabelecer o rastreamento passo a passo, o desenvolvedor deve reabrir a regra no editor e reativar o ponto de depuração.
- Variáveis devem ser inicializadas no início de cada registro mestre para não propagar estados incorretos entre colaboradores distintos.

Veja como esse conteúdo foi abordado na aula:

EXEMPLO PRÁTICO: MAPEAMENTO E CONTROLE CONDICIONAL DE SEÇÕES

A seguir, veja os passos para identificar as tabelas de suporte e configurar um relatório que liste colaboradores com opções de impressão condicional de endereço e dependentes:

1. Acesse o cadastro de colaboradores, utilize o atalho Shift + F3 nos campos principais e confirme que a tabela base é a R034FUN.
2. No Gerador de Relatórios, crie um novo modelo customizado baseado na tabela R034FUN e adicione as seções de detalhe necessárias.
3. Crie duas seções adicionais no layout: uma renomeada para "Adicional Endereço" e outra para "Adicional Dependentes".
4. Acesse a Tela de Entrada e adicione a variável ETip com uma lista de opções: "T" (Todas), "E" (Somente Endereço) e "D" (Somente Dependentes).
5. No evento "Depois de Imprimir" da seção Detalhe Colaboradores, declare a variável de controle com a instrução Definir Alfa ETip.
6. Defina o cursor para verificar a existência de dependentes na tabela R036DEP e abra a consulta vinculando a matrícula ativa.
7. Estruture a verificação condicional: caso o colaborador possua dependentes e a variável ETip seja "T" ou "D", execute o laço com ListaSecao("Adicional Dependentes") e avance com Proximo().
8. Para o endereço, avalie se a variável ETip corresponde a "T" ou "E" e chame ListaSecao("Adicional Endereço").
9. Certifique-se de executar o método Fechar() do cursor ao final da validação de cada registro.
10. Salve o arquivo físico gerado na pasta de modelos e teste a emissão alternando as opções na tela de entrada para validar o comportamento visual.

CONSIDERAÇÕES FINAIS

A capacidade de rastrear a origem dos dados pelas telas do Senior HCM é uma habilidade fundamental para qualquer profissional que atue no ecossistema de Recursos Humanos. Atalhos nativos como F8 e Shift + F3 proporcionam agilidade na identificação de metadados sem depender exclusivamente de consultas externas.

No desenvolvimento de relatórios, o domínio sobre a lógica condicional e o ciclo de vida dos cursores garante entregas funcionais, flexíveis e performáticas. Centralizar diferentes modos de exibição em um único arquivo reduz custos de homologação e simplifica o menu para o usuário.

Seguir padrões rígidos de codificação, garantindo o fechamento de consultas e o correto avanço de laços, assegura relatórios estáveis que suportam grandes volumes de processamento com confiabilidade.

Módulo 5: SENIOR HCM: CONFIGURAÇÃO DE RELATÓRIOS EM TEXTO, MANIPULAÇÃO DE DATAS E FILTROS DINÂMICOS


A extração de dados no Senior HCM frequentemente ultrapassa a necessidade de visualização gráfica em tela ou impressos formatados. Muitas integrações corporativas, sistemas de folha, bancos e operadoras de benefícios exigem a exportação de informações cadastrais em formatos estruturados como TXT ou CSV delimitado.

Nesse cenário, a correta parametrização do modelo no Gerador de Relatórios exige atenção redobrada à estrutura de colunas, às regras de seleção e à manipulação de dados sensíveis, como variáveis do tipo data e códigos multiempresa.

Neste artigo, serão detalhados os procedimentos para configuração de relatórios em formato texto, a conversão segura de campos de data para comandos SQL e a injeção dinâmica de cláusulas de filtro por meio de código.

DIFERENÇAS ESTRUTURAIS ENTRE MODELOS GRÁFICOS E MODELOS EM FORMATO TEXTO

Por padrão, novos modelos no Gerador de Relatórios são criados sob a tipologia gráfica, voltada para impressão em formulários e visualização convencional. No entanto, o sistema disponibiliza a conversão direta do modelo para o modo Arquivo Texto, ajustando a régua de caracteres e os parâmetros da grade.

Principais distinções entre os dois modelos:

- Modo Gráfico: opera com medições em milímetros ou pixels, permitindo sobreposição visual, formatação avançada de fontes, cores e caixas decorativas.
- Modo Arquivo Texto: utiliza coordenadas rígidas de linhas e colunas de texto puro, dimensionando os campos estritamente pela quantidade de caracteres.
- Configuração de Altura: a altura da seção no modo texto é simplificada para a quantidade de linhas físicas impressas, reduzindo margens automáticas.

A escolha do modo texto é mandatória quando o objetivo final consiste no envio de remessas para outros softwares ou integração com interfaces de dados externas.

TRATAMENTO DE CAMPOS DE DATA E CONVERSÃO PARA BANCO DE DADOS

A manipulação de datas no Senior HCM possui particularidades que demandam cuidado no momento da escrita de regras e consultas SQL. No banco de dados e nos mecanismos internos da ferramenta, o formato de armazenamento pode divergir da representação textual habitual.

Ao comparar variáveis de entrada do tipo Data com comandos SQL diretos, ocorrem incompatibilidades de tipo entre dados alfanuméricos e numéricos internos:

- Armazenamento interno: internamente, o sistema trata datas sob contagem sequencial de dias, comportando-se matematicamente como um número.
- Incompatibilidade de concatenação: instruções SQL são montadas como sequências de caracteres (Alfa), exigindo a conversão expressa da variável de data antes da inclusão no comando.
- Função ConverteDataBanco: rotina nativa responsável por transformar o valor de data interna em uma cadeia textual compatível com a sintaxe do banco de dados (exemplo: YYYY-MM-DD).

A ausência dessa conversão resulta em erros graves de execução durante a montagem das diretivas de pesquisa no banco de dados.

VALIDAÇÃO DE PARÂMETROS E CONTROLE DE EXECUÇÃO NA TELA DE ENTRADA

Para evitar que consultas sejam enviadas ao banco com dados inconsistentes ou filtros em branco, é recomendável incluir validações prévias na regra de pré-seleção do modelo. A verificação do conteúdo digitado previne a extração incorreta de dados ou a lentidão decorrente da ausência de limitadores.

Boas práticas para consistência de parâmetros:

- Verificação de campos vazios: campos do tipo data recebem internamente o valor zero quando não preenchidos na tela de entrada.
- Uso de mensagens de retorno: funções de aviso, como Mensagem com parâmetro de retorno, comunicam o usuário sobre a obrigatoriedade do preenchimento.
- Cancelamento seguro: a aplicação do comando Cancel(1) encerra o processamento antes do envio da consulta ao servidor de banco de dados.

Essa blindagem assegura que relatórios críticos só sejam disparados mediante preenchimento adequado dos parâmetros operacionais.

INJEÇÃO DINÂMICA DE FILTROS COM A FUNÇÃO INSCLAUSQL

O Gerador de Relatórios permite alterar dinamicamente a cláusula WHERE das seções por meio da função InsClauSql (Inserir Cláusula SQL). Com esse recurso, o desenvolvedor pode complementar a consulta nativa da seção com base nos filtros preenchidos na tela de entrada.

Aspectos importantes sobre a injeção dinâmica:

- Identificação da seção: a função requer a indicação exata do nome da seção de processamento, como a seção Detalhe_1.
- Concatenação do operador lógico: ao adicionar condições suplementares, deve-se incluir explicitamente os operadores lógicos, como AND, para evitar erros de sintaxe SQL.
- Flexibilidade de filtros opcionais: permite que determinados filtros só sejam adicionados à pesquisa caso o usuário preencha o campo respectivo na tela.

Essa técnica confere grande modularidade aos modelos, dispensando a criação de múltiplos relatórios para cenários de filtragem parecidos.

FILTROS POR PERÍODO E UTILIZAÇÃO DE VARIÁVEIS DE SISTEMA

A extração de registros em intervalos temporais, como admissões ocorridas em um determinado mês, exige a combinação de limitadores de data inicial e final. Caso o usuário omita a data de término, é possível atribuir valores padrão de forma automática via regra.

Recursos úteis para preenchimento de períodos:

- Variável DatSis: variável de sistema que armazena a data corrente do servidor, ideal para preencher lacunas quando a data final não for informada.
- Condição de faixa de valores: estruturação de cláusulas no formato de data inicial maior ou igual e data final menor ou igual no comando SQL.
- Variáveis de referência: definição de parâmetros de entrada configurados como data de referência para carregar calendários automáticos.

A definição de regras inteligentes de contingência para campos em branco melhora a experiência de uso e diminui chamados de suporte.

CONSIDERAÇÕES MULTIEMPRESA NO VÍNCULO DE TABELAS COMPLEMENTARES

Um erro frequente na elaboração de listagens no Senior HCM ocorre no relacionamento com cadastros compartilhados, como a tabela de centros de custo (R018CCU). Como o código do centro de custo pode se repetir entre diferentes empresas cadastradas, a ausência da empresa no vínculo distorce as descrições.

Cuidados ao correlacionar tabelas cadastrais filhas:

- Chave primária composta: atentar-se para relacionamentos que exigem o código da empresa (NumEmp) aliado ao identificador do objeto (CodCcu).
- Inclusão do campo da empresa na tela: manter a empresa disponível no relatório ou na tela de entrada para isolar com clareza o contexto dos dados.
- Visibilidade de campos: caso o dado da empresa seja usado apenas para relacionamento interno, a propriedade de impressão pode ser definida como Falso.

A correta correlação de chaves compostas garante a fidedignidade dos nomes e hierarquias corporativas emitidas na listagem.

ESTRUTURAÇÃO DE ARQUIVOS DELIMITADOS (CSV) E DEFINIÇÃO DE CABEÇALHOS

A exportação de dados para planilhas ou sistemas legados comumente exige a separação de colunas por delimitadores, como ponto e vírgula (;). Em modelos de arquivo texto, a inserção desses separadores pode ser feita diretamente no layout da seção.

Diretrizes para montagem de arquivos delimitados:

- Alinhamento do cabeçalho: criação de seção do tipo Cabeçalho de Coluna com literais idênticos aos campos da seção Detalhe.
- Inserção de caracteres separadores: inclusão de campos de texto contendo apenas o delimitador (ponto e vírgula) posicionados entre cada coluna de informação.
- Saída em arquivo: configuração do formato de saída para disco ou geração em vídeo com posterior gravação com extensão .CSV.

Com esse dimensionamento detalhado de posições, o arquivo gerado abre perfeitamente tabulado em suítes de escritório como Microsoft Excel ou LibreOffice Calc.

Veja como esse conteúdo foi abordado na aula:

EXEMPLO PRÁTICO: GERAÇÃO DE ARQUIVO DELIMITADO COM FILTRO DE DATAS

Acompanhe o roteiro passo a passo para configurar um relatório em arquivo texto com filtro dinâmico de admissão e exportação estruturada:

1. No Gerador de Relatórios, crie um novo modelo e utilize a opção de menu para salvá-lo no formato Arquivo Texto.
2. Adicione a tabela base de colaboradores (R034FUN) e a seção de tipo Detalhe_1.
3. Na Tela de Entrada do modelo, crie as variáveis do tipo Data denominadas EDatIni e EDatFim, representando o período de admissão desejado.
4. Crie uma variável Alfa para filtro de empresa (ENumEmp) e habilite o recurso de abrangência na tela de entrada.
5. Na regra de Pré-Seleção do relatório, declare as variáveis auxiliares alfanuméricas para conversão de dados e montagem de SQL.
6. Implemente a validação condicional: caso a variável EDatIni seja igual a zero, exiba mensagem de obrigatoriedade e interrompa com Cancel(1).
7. Se a variável EDatFim estiver vazia (igual a zero), atribua a ela o valor da variável de sistema DatSis para garantir o fechamento do período.
8. Converta as duas datas para o formato de banco por meio da função ConverteDataBanco, gravando os resultados em variáveis alfanuméricas.
9. Monte a cadeia de caracteres SQL contendo o intervalo da coluna DatAdm e injete na consulta utilizando a função InsClauSql("Detalhe_1", XSql).
10. No layout do relatório, insira as colunas de dados intercaladas com literais de ponto e vírgula, executando a emissão para gerar o arquivo CSV final.

CONSIDERAÇÕES FINAIS

O domínio sobre a criação de relatórios em modo texto amplia expressivamente o leque de soluções possíveis dentro do ecossistema Senior HCM. A capacidade de produzir arquivos estruturados elimina a dependência de processos manuais de exportação e formatação em planilhas eletrônicas.

A atenção ao tratamento de variáveis do tipo data e à injeção segura de cláusulas SQL por código garante flexibilidade sem comprometer a estabilidade do banco de dados relacional.

Por fim, respeitar a integridade das chaves compostas e a correta aplicação de delimitadores assegura a integração limpa de dados entre o Senior HCM e quaisquer ferramentas corporativas externas.

Módulo 6: GERADOR DE RELATÓRIOS SENIOR HCM: ALINHAMENTO DE CAMPOS, FORMATAÇÃO DE ARQUIVOS TEXTO E EXPORTAÇÃO


A extração de dados no Senior HCM exige precisão estrutural tanto na apresentação visual quanto na compatibilidade com ferramentas de análise externas, a exemplo de editores de planilhas e sistemas legados. A integridade dos arquivos gerados depende diretamente do correto dimensionamento e posicionamento de cada campo dentro do layout do relatório.

Falhas comuns na exportação, como deslocamentos indesejados de registros, colunas omitidas ou linhas quebradas em arquivos do Excel, decorrem frequentemente de pequenas divergências de coordenadas nas seções do modelo.

Neste artigo, serão exploradas as diferenças entre os formatos de saída de texto, os cuidados essenciais no alinhamento vertical e horizontal de controles e os recursos de edição em lote disponíveis no Gerador de Relatórios.

DISTINÇÃO ENTRE MODELOS GRÁFICOS, ARQUIVOS TEXTO E RELATÓRIOS TEXTO

O Gerador de Relatórios disponibiliza modalidades específicas para atender a diferentes finalidades de saída de dados. Compreender o objetivo final do arquivo determina a escolha adequada do tipo de modelo durante o desenvolvimento.

Principais características de cada modalidade:

- Modo Gráfico: voltado para impressão em formulários e documentos visuais, permitindo a livre manipulação de fontes, imagens e cores.
- Relatório Texto: opera com layout formatado em caracteres e colunas, permitindo exportações rápidas em múltiplos formatos de saída.
- Arquivo Texto: focado estritamente na geração de arquivos estruturados, como arquivos posicionais (.TXT) ou delimitados (.CSV).

A correta definição do tipo de relatório na barra de propriedades do gerador assegura compatibilidade direta com os requisitos operacionais da empresa.

COMPORTAMENTO DE CABEÇALHOS NA EXPORTAÇÃO DE ARQUIVOS

Na criação de listagens posicionais ou tabulares, a impressão de cabeçalhos de coluna varia conforme o padrão de saída selecionado no momento da gravação do arquivo. Determinadas exportações de texto desconsideram seções de cabeçalho dependendo da formatação escolhida pelo usuário.

Pontos de atenção para a consistência do cabeçalho:

- Cabeçalho de Coluna versus Cabeçalho de Página: o uso de cabeçalhos específicos de coluna facilita a correspondência direta com os dados da seção de detalhe.
- Formato de gravação em disco: tipos como texto formatado mantêm os rótulos de coluna, enquanto exportações sem formatação podem ignorar essas linhas.
- Padronização de saídas: para integrações contínuas, é recomendável estabelecer o formato padrão de exportação suportado pelo software de destino.

Essa compreensão evita retrabalho e inconsistências no processamento de arquivos por outros setores corporativos.

PARAMETRIZAÇÃO DE ENTRADA COM ABRANGÊNCIA MULTIEMPRESA

A definição de variáveis na Tela de Entrada do modelo garante flexibilidade e controle aos usuários finais. No tratamento de cadastros corporativos, como a listagem de centros de custo (tabela R018CCU), a abrangência por empresa deve ser implementada com rigor.

Diretrizes para variáveis de entrada:

- Uso do operador de abrangência: a utilização do caractere '+' permite que o usuário filtre uma ou múltiplas empresas no mesmo campo.
- Dimensionamento de tamanho: reservar um tamanho adequado de caracteres para a variável de entrada previne o truncamento de listas extensas de códigos.
- Vinculação com tabelas: relacionar a variável de entrada com a chave correta da tabela base assegura a integridade das consultas SQL.

A parametrização consistente reduz a emissão de relatórios redundantes e previne extrações desnecessárias de volume excessivo de registros.

IMPACTO DO ALINHAMENTO DE LINHAS E COLUNAS NA EXPORTAÇÃO

Um dos problemas mais comuns na geração de arquivos para suítes de escritório (como Microsoft Excel ou Calc) reside no desalinhamento físico de campos na seção de detalhe. Uma divergência de apenas uma linha de coordenada é interpretada pelo conversor como um novo registro.

Consequências do desalinhamento de controles:

- Quebra de registros: se um campo estiver posicionado na linha 1 enquanto os demais estão na linha 0, o dado deslocado é impresso em uma linha inferior da planilha.
- Criação de colunas vazias: espaçamentos residuais entre a posição final de um campo e o início do próximo podem gerar colunas em branco indesejadas na planilha.
- Divergência entre XLS e XLSX: o conversor de arquivos legados (.XLS) tende a tolerar melhor pequenos espaços vazios do que os conversores baseados em XML (.XLSX).

Garantir que todos os campos de uma mesma linha compartilhem rigorosamente a mesma coordenada numérica de linha é mandatório para exportações perfeitas.

EDIÇÃO EM LOTE E PROPRIEDADES COMPARTILHADAS DE CONTROLES

O ajuste individual de cada campo em relatórios densos pode se tornar improdutivo. O ambiente do Gerador de Relatórios permite a manipulação em lote de controles por meio da seleção múltipla.

Técnicas para edição simultânea:

- Seleção múltipla com Shift: clicar sobre diferentes campos mantendo a tecla Shift pressionada seleciona todos os componentes desejados.
- Filtragem de propriedades comuns: o painel lateral passa a exibir apenas os atributos compartilhados pelos controles selecionados, como Linha, Altura e Fonte.
- Nivelamento simultâneo: atribuir o valor zero na propriedade Linha nivela todos os campos selecionados de forma automática.
- Cuidado com a propriedade Coluna: alterar a propriedade de coluna com múltiplos campos selecionados fará com que todos se sobreponham na mesma coordenada horizontal.

A aplicação criteriosa da edição coletiva poupa tempo e elimina falhas humanas de nivelamento na seção.

ATALHOS DE TECLADO PARA NAVEGAÇÃO E DIMENSIONAMENTO

O reposicionamento manual com o cursor do mouse frequentemente introduz imprecisões milimétricas na régua do gerador. A utilização de atalhos de teclado garante precisão cirúrgica na disposição dos elementos.

Atalhos mais utilizados na área de trabalho:

- Tecla Ctrl aliada às setas: desloca o controle selecionado linha a linha ou coluna a coluna pela grade de desenho.
- Tecla Shift com setas horizontais: amplia ou reduz o comprimento do campo na quantidade exata de caracteres necessária.
- Tecla Shift com setas verticais: modifica a altura do controle em passos discretos de linha.

O domínio desses atalhos agiliza a adaptação de layouts técnicos de acordo com as especificações contratuais de parceiros e órgãos reguladores.

Veja como esse conteúdo foi abordado na aula:

EXEMPLO PRÁTICO: CONSTRUÇÃO E ALINHAMENTO DE RELATÓRIO TEXTO DE CENTROS DE CUSTO

Siga os passos abaixo para construir uma listagem posicional com alinhamento rigoroso dos dados para exportação estruturada:

1. Acesse o Gerador de Relatórios e crie um novo modelo, salvando-o como tipo Relatório Texto.
2. Adicione a tabela de Centros de Custo (R018CCU) na estrutura da fonte de dados.
3. Adicione uma seção de Cabeçalho de Colunas e uma seção de Detalhe no corpo do relatório.
4. Na Tela de Entrada, configure a variável alfanumérica ENumEmp com o símbolo '+' para habilitar a seleção de faixas de empresa.
5. Na seção Detalhe, insira os campos Empresa (NumEmp), Código do Centro de Custo (CodCcu) e Nome do Centro de Custo (NomCcu).
6. Com o botão esquerdo do mouse e a tecla Shift pressionada, selecione simultaneamente todos os campos da seção Detalhe.
7. Na janela de Propriedades, localize a propriedade Linha e digite o valor 0 para garantir que todos fiquem rigorosamente na mesma linha.
8. Ajuste a propriedade Coluna de cada campo individualmente, garantindo que não existam sobreposições ou intervalos vazios desnecessários.
9. Na seção Cabeçalho de Colunas, replique a mesma distribuição de colunas utilizando literais descritivos para cada campo.
10. Execute o relatório selecionando a empresa desejada e teste a exportação para os formatos TXT e XLS para validar o alinhamento.

CONSIDERAÇÕES FINAIS

A excelência na construção de relatórios no Senior HCM depende da atenção aos detalhes estruturais. A compreensão de como os conversores de formatos interpretam as coordenadas de linha e coluna evita retrabalho e previne chamados de suporte decorrentes de relatórios com dados fragmentados.

O aproveitamento das ferramentas nativas de produtividade, como a seleção múltipla e os atalhos de dimensionamento, confere agilidade ao desenvolvedor e assegura entregas com elevado padrão corporativo.

Adotar essas boas práticas na montagem de seções garante total integridade na manipulação de arquivos, viabilizando análises precisas no Excel e integrações seguras entre sistemas.

Módulo 7: GERADOR DE RELATÓRIOS SENIOR HCM: SUBTÍTULOS, CURSORES E CAMPOS MEMORANDO


A elaboração de relatórios avançados no Senior HCM demanda domínio tanto dos componentes visuais do gerador quanto da lógica de extração via regras de negócio. À medida que os leiautes se tornam mais complexos, a necessidade de segmentar informações por múltiplos agrupamentos e emitir minutas contratuais exige técnicas refinadas.

Cenários comuns na gestão de pessoas incluem a criação de documentos com quebras sucessivas por empresa ou filial, além da impressão de descrições que compartilham a mesma tabela de cadastro, a exemplo de municípios de residência, nascimento e filiais.

Neste artigo, serão exploradas as melhores práticas para organização de subtítulos dinâmicos, resolução de conflitos de relacionamentos por meio de cursores SQL, rotinas de limpeza de variáveis e o uso de seções adicionais com campos memorando.

ESTRUTURA HIERÁRQUICA E QUEBRAS COM SUBTÍTULOS DINÂMICOS

A segmentação visual dos dados auxilia o usuário final na interpretação imediata dos registros. No Gerador de Relatórios, o recurso de subtítulos vinculado à ordenação da seção de detalhe possibilita agrupar colaboradores por critérios estruturados, como código de empresa, filial ou cargo.

Requisitos para a correta configuração de subtítulos:

- Definição da ordem de processamento: os campos que determinam as quebras devem constar obrigatoriamente na ordenação da seção de detalhe.
- Associação das seções de subtítulo: cada nível de quebra configurado deve apontar para o subtítulo correspondente nas propriedades da seção.
- Identificação clara dos componentes: nomear os subtítulos conforme a entidade agrupada facilita a manutenção futura do modelo.
- Ajuste de propriedades visuais: a configuração adequada de transparência e molduras destaca a hierarquia sem poluir o cabeçalho das páginas.

Essa divisão estrutural impede a redundância de dados repetidos em cada linha do relatório.

LIMITAÇÕES DE RELACIONAMENTO VISUAL EM TABELAS DE DOMÍNIO

O assistente de relacionamentos do gerador conecta tabelas com base em chaves estrangeiras comuns. Contudo, quando o mesmo modelo precisa consultar uma tabela de domínio repetidas vezes sob contextos distintos, o relacionamento automático pode gerar comportamentos inesperados.

Desafios comuns de junção no modelo:

- Múltiplas referências para cidades (R074CID): a busca simultânea do município da filial, do município de moradia e do município de nascimento do colaborador sobrecarrega a integridade da junção visual.
- Vínculos incorretos criados pelo assistente: relacionamentos automáticos indevidos podem atrelar cadastros de filiais a campos de responsáveis não previstos na regra de negócio.
- Inconsistência de registros: a fixação de um vínculo estático com a filial faz com que os dados do colaborador herdem erroneamente o código geográfico da filial.

Diante dessa limitação estrutural do diagrama visual, torna-se mandatória a aplicação de regras programadas com cursores individuais.

RESOLUÇÃO DE CONSULTAS MÚLTIPLAS COM CURSORES PROGRAMADOS

A utilização de cursores programados em regras personalizadas confere total independência na recuperação de descrições secundárias. Por meio de comandos SQL dedicados, é possível pesquisar tabelas auxiliares sem interferir no cursor principal do relatório.

Etapas para a manipulação correta de cursores:

- Declaração do cursor: instrução que define o cursor associado à tabela desejada (por exemplo, R074CID).
- Montagem da instrução SQL: construção do comando SELECT parametrizado com a chave específica do registro atual.
- Controle de abertura e fechamento: abertura pontual do cursor, leitura condicional com teste de localização e fechamento imediato do recurso.
- Atribuição à variável alfa: transferência da descrição localizada para a variável visual que será impressa na seção.

Esse procedimento elimina a dependência de relacionamentos múltiplos no gerador e assegura que cada dado seja extraído com sua respectiva chave de origem.

BOAS PRÁTICAS DE INICIALIZAÇÃO E LIMPEZA DE VARIÁVEIS

Um dos erros mais recorrentes no desenvolvimento de relatórios consiste na retenção indevida de valores anteriores em variáveis de regra. Caso um registro não encontre correspondência na consulta via cursor, o sistema pode imprimir o valor do colaborador precedente.

Diretrizes para evitar retenção de dados:

- Limpeza no início do ciclo: atribuir valor nulo ou espaços em branco às variáveis logo antes da execução das consultas da linha.
- Uso das funções de controle: aplicação de funções como ValStr e Cancel para administrar a exibição dos conteúdos alfanuméricos na seção.
- Padronização de escopo: concentrar as rotinas de limpeza e atribuição em um único ponto lógico da regra simplifica a depuração.

A inicialização sistemática previne a exibição de municípios e descrições inexistentes em cadastros incompletos.

FORMATAÇÃO AVANÇADA DE DADOS E VALORES POR EXTENSO

A emissão de relatórios cadastrais ou prévias contratuais frequentemente exige a conversão de valores numéricos em representações textuais legíveis e monetárias. O Senior HCM disponibiliza funções nativas para tratar essas transformações com exatidão.

Recursos disponíveis no ecossistema de regras:

- ConverteMascara: formata valores numéricos para padrões monetários com separadores de milhar e decimais.
- NumeroParaAlfa: realiza a transposição direta de valores inteiros ou numéricos para variáveis alfanuméricas.
- ExtensoNumero e RetMoeda: convertem importâncias salariais em valores literais por extenso, suportando letras maiúsculas ou descrições detalhadas.

A correta formatação dos dados salariais garante conformidade legal em documentos corporativos gerados pelo sistema.

IMPRESSÃO DE CLÁUSULAS E TEXTOS LONGOS COM CAMPOS MEMORANDO

Quando o objetivo do relatório ultrapassa a listagem tabular e alcança a emissão de minutas, aditivos contratuais ou termos de adesão, os controles de texto tradicionais tornam-se insuficientes. Nessas situações, o campo memorando alocado em seções adicionais oferece a flexibilidade necessária.

Vantagens do campo memorando em seções adicionais:

- Concatenação progressiva: permite agregar variáveis, números formatados e cláusulas estáticas em uma única cadeia de texto.
- Autoajuste vertical: o campo memorando expande sua altura conforme o volume textual recebido, transferindo excedentes para novas páginas.
- Disparo sob demanda: uso da função ListaSecao na seção de detalhe para renderizar a seção adicional somente quando critérios específicos forem atendidos.
- Condicionamento de cláusulas: regras com testes lógicos podem incluir ou suprimir determinados parágrafos com base no tipo de contrato ou gênero.

Essa flexibilidade transforma o Gerador de Relatórios em uma poderosa ferramenta para confecção de contratos e notificações personalizadas.

Veja como esse conteúdo foi abordado na aula:

EXEMPLO PRÁTICO: CONSULTA DE CIDADES POR CURSOR E EMISSÃO DE CLÁUSULA CONTRATUAL

Siga os passos abaixo para configurar consultas via regras sem conflito de tabelas e gerar uma seção adicional com texto descritivo:

1. Abra o Gerador de Relatórios e acerte o modelo com a tabela principal de Colaboradores (R034FUN) e Complemento (R034CPL).
2. Remova os relacionamentos manuais entre a tabela de cidades (R074CID) e as chaves de residência e nascimento no assistente gráfico.
3. Crie duas variáveis alfanuméricas na seção de detalhe: SidEnd (para cidade de residência) e SidNas (para cidade de nascimento).
4. Na regra da seção de detalhe, declare os cursores correspondentes à tabela R074CID para cada pesquisa.
5. Inicialize as variáveis alfanuméricas atribuindo valor em branco logo no início da regra.
6. Monte o comando SELECT do primeiro cursor utilizando o campo CodCid da R034CPL, executando a busca e capturando NomCid para a variável SidEnd.
7. Monte o comando SELECT do segundo cursor filtrando por CidNas da R034CPL e alimentando a variável SidNas.
8. Adicione uma seção do tipo Adicional no relatório e insira um campo do tipo Memorando com dimensionamento horizontal total.
9. Crie uma variável alfanumérica de texto longo na regra, concatenando dados como nome, salário convertido por extenso e código de escala.
10. No evento de finalização da seção de detalhe, invoque o comando ListaSecao apontando para a seção Adicional criada.
11. Execute o relatório e valide se os municípios foram impressos com precisão e se o texto contratual expandiu corretamente.

CONSIDERAÇÕES FINAIS

O desenvolvimento eficiente no Gerador de Relatórios do Senior HCM equilibra o uso dos recursos visuais com o poder de processamento das regras LSP. Saber quando substituir junções automáticas por consultas via cursores programados evita armadilhas frequentes em tabelas compartilhadas.

A aplicação disciplinada de boas práticas, como a limpeza preventiva de variáveis e a escrita de código legível e modularizado, poupa tempo de manutenção e eleva a confiabilidade das extrações corporativas.

Por fim, a combinação de seções adicionais com campos memorando amplia a utilidade do gerador, permitindo que a equipe de RH automatize a expedição de termos e minutas contratuais diretamente da base operacional do sistema.

Módulo 8: GERADOR DE RELATÓRIOS SENIOR HCM: TOTAIS, TOTALIZADORES E VISÕES ANALÍTICA E SINTÉTICA


A consolidação de dados quantitativos e financeiros representa um dos requisitos fundamentais no desenvolvimento de relatórios corporativos. No ecossistema Senior HCM, a correta estruturação de rodapés, totalizadores acumuladores e contadores assegura a acurácia necessária para relatórios de folha e auditoria cadastral.

Além da soma numérica e contagem de registros por quebras departamentais, a flexibilidade na entrega da informação exige que o mesmo modelo possa operar tanto de forma detalhada quanto sumarizada. O controle das seções e a gestão de parâmetros analíticos e sintéticos reduzem a duplicidade de modelos no sistema.

Neste artigo, serão apresentadas as técnicas para criação de rodapés padronizados, aplicação de componentes totalizadores, gerenciamento de seções de limpeza e o tratamento de integridade de dados por meio de cursores programados em LSP.

ESTRUTURAÇÃO DE RODAPÉS E CAMPOS DE SISTEMA

O rodapé de página cumpre o papel de identificar a origem do documento e subsidiar auditorias internas. O Gerador de Relatórios disponibiliza variáveis de sistema nativas que eliminam a necessidade de programação para capturar metadados do relatório.

Componentes essenciais para a composição do rodapé:

- Data e hora de referência: registra o momento exato em que a extração foi disparada.
- Nome do usuário: identifica o operador responsável pela emissão do relatório.
- Numeração de páginas: estabelece a paginação sequencial no formato de página atual ou totalizador de vias.
- Identificador do modelo: imprime o código do relatório na base para agilizar manutenções pelo suporte técnico.

A padronização visual desses dados na margem inferior confere consistência aos relatórios distribuídos na organização.

CONCEITOS E TIPOS DE COMPONENTES TOTALIZADORES

Para consolidar valores salariais e quantitativos de quadro de pessoal, o gerador conta com o controle nativo de totalizadores. Esse componente opera processando os registros lidos na seção de detalhe conforme a operação configurada.

Modalidades operacionais mais utilizadas:

- Acumulador: realiza o somatório linear contínuo de valores numéricos, como salários, proventos e descontos.
- Contador: apura a quantidade absoluta de registros processados, como o total de cadastros ou vínculos empregatícios.
- Média e extremos: calcula valores médios, mínimos ou máximos a partir de conjuntos numéricos de entrada.

A escolha do tipo de cálculo deve ser alinhada ao campo selecionado nas propriedades do componente totalizador.

CONFIGURAÇÃO DE SEÇÕES DE SUBTOTAL E TOTAL GERAL

A apresentação de totais intermediários exige a criação de seções do tipo Subtotal, atreladas a quebras previamente definidas na hierarquia do modelo. Já o fechamento global das informações ocorre na seção de Total Geral.

Diretrizes para distribuição das seções:

- Associação com quebras: a seção de subtotal deve ser parametrizada para disparar na alteração de um campo de ordem, como empresa ou centro de custo.
- Salto de página condicional: configuração da quebra de página visual para segmentar unidades distintas em folhas separadas.
- Total geral ao término: seção posicionada no final do fluxo para imprimir a consolidação total da listagem.

A sincronia entre as ordens da seção de detalhe e os eventos de quebra garante a correta exibição dos blocos de subtotal.

GESTÃO DE LIMPEZA DE TOTALIZADORES PARA EVITAR DUPLICIDADE

Um comportamento crítico no manuseio de totalizadores reside no momento em que a memória do acumulador é reiniciada. Se o mecanismo de limpeza não for apontado corretamente, os valores de um agrupamento serão somados aos agrupamentos subsequentes.

Regras para controle de limpeza:

- Configuração da propriedade Sessão Limpeza: define exatamente após a impressão de qual seção o valor do acumulador deve voltar a zero.
- Totalizadores de subtotal: devem ser reiniciados na própria seção de subtotal à qual pertencem.
- Totalizadores gerais: devem ser configurados sem limpeza ou com limpeza exclusiva no encerramento do relatório.

Essa parametrização impede a distorção cumulativa dos subtotais durante o percurso das quebras.

CONTROLE DINÂMICO ENTRE VISÃO ANALÍTICA E SINTÉTICA

A construção de modelos versáteis permite que gestores optem por visualizar colaboradores individuais ou apenas os resumos por departamento. Isso é viabilizado combinando parâmetros de tela com regras de cancelamento de seção.

Etapas para implementação da alternância:

- Criação do parâmetro de entrada: tela interativa que recebe a opção analítica ou sintética antes da execução.
- Condicional na seção de detalhe: regra LSP avaliando a variável informada pelo usuário.
- Invocação da função Cancel: supressão da seção de detalhe quando a opção sintética estiver ativa.
- Ajuste de cabeçalhos de coluna: cancelamento de títulos desnecessários para manter a estética do relatório sintético limpa.

O processamento interno das somas continua ativo mesmo quando a linha detalhada tem sua impressão cancelada.

INTEGRIDADE DE RELACIONAMENTOS E EXTRAÇÃO VIA CURSOR SQL

Quando um modelo precisa exibir descrições de tabelas secundárias, a criação de junções automáticas pode ocultar colaboradores que não possuem o respectivo cadastro vinculado, operando como um Inner Join tácito.

Estratégias para manutenção da integridade cadastral:

- Identificação de campos opcionais: cadastros de empresas ou colaboradores com centros de custo em branco podem ser omitidos por relacionamentos diretos.
- Remoção de junções gráficas restritivas: eliminação do vínculo entre a tabela principal e a tabela auxiliar na modelagem visual.
- Consulta pontual com cursor LSP: pesquisa programada da descrição apenas quando a chave estrangeira for diferente de nulo.
- Inicialização preventiva de variáveis: atribuição de valor em branco às variáveis de exibição antes da abertura do cursor.

A recuperação via cursor assegura que todos os colaboradores constem no relatório, independentemente da completude de seus vínculos secundários.

FORMATAÇÃO E RECURSOS ADICIONAIS DE CAMPOS TEXTUAIS

Além das consolidações numéricas, a formatação visual e textual dos campos eleva o padrão de acabamento dos documentos gerados no sistema.

Funções e propriedades auxiliares:

- ConverteParaMaiusculo e ConverteParaMinusculo: funções LSP para uniformização de caixas em descrições e nomes.
- Propriedade Justificado em campos Memorando: alinhamento pleno das margens de parágrafos extensos em termos contratuais.
- Reaproveitamento de escopo: declaração de variáveis globais para evitar execuções repetidas da mesma consulta em seções distintas.

O domínio desses recursos complementares garante a entrega de relatórios e documentos contratuais precisos e esteticamente alinhados.

Veja como esse conteúdo foi abordado na aula:

EXEMPLO PRÁTICO: RELATÓRIO COM SUBTOTAL, CONTADOR E OPÇÃO ANALÍTICO/SINTÉTICO

Siga os passos abaixo para configurar um modelo contendo totais departamentais, total geral e controle de visão analítica/sintética:

1. Acesse o Gerador de Relatórios e crie um novo modelo utilizando a tabela de Colaboradores (R034FUN).
2. Insira no leiaute as seções de Cabeçalho de Página, Detalhe, Subtotal, Total Geral e Rodapé de Página.
3. No Rodapé de Página, adicione campos de sistema contendo a data de geração, o código do usuário e a paginação.
4. Defina na seção de Detalhe a ordenação por Empresa (NumEmp), Centro de Custo (CodCcu) e Matrícula (NumCad).
5. Insira na seção de Subtotal dois componentes do tipo Totalizador: um configurado como Acumulador para o campo ValSal e outro como Contador para o campo NumCad.
6. Nas propriedades de ambos os totalizadores da seção de Subtotal, selecione a própria seção de Subtotal no campo Sessão Limpeza.
7. Replique os totalizadores na seção de Total Geral, ajustando a propriedade Sessão Limpeza para nenhuma seleção.
8. Adicione uma tela de entrada contendo a variável tipo alfa para selecionar entre a emissão Analítica ou Sintética.
9. Na regra da seção de Detalhe, inclua a condição lógica testando se o relatório foi solicitado em modo sintético; caso positivo, execute a função Cancel(0).
10. Caso utilize descrição de centro de custo, programe um cursor LSP sobre a tabela R018CCU para buscar a descrição sem gerar vínculos visuais restritivos.
11. Execute o relatório nas duas modalidades e confirme se os cálculos de subtotal e total geral conferem nas visões detalhada e resumida.

CONSIDERAÇÕES FINAIS

A consolidação de informações por meio de totalizadores nativos constitui uma técnica indispensável para simplificar o desenvolvimento de relatórios no Senior HCM. A correta parametrização de limpeza de seções elimina falhas recorrentes de duplicidade nos valores acumulados.

A flexibilização entre modos analítico e sintético no mesmo relatório reduz significativamente a quantidade de modelos mantidos no ambiente, facilitando a gestão do repositório da empresa.

Por fim, a substituição de junções visuais restritivas por cursores programados garante a integridade completa dos registros, fornecendo demonstrativos confiáveis para tomada de decisão no departamento de recursos humanos.

Módulo 9: GERADOR DE RELATÓRIOS SENIOR HCM: SALVAMENTO, SEGURANÇA E ORGANIZAÇÃO DOS MODELOS


A administração eficaz do repositório de relatórios no Senior HCM exige muito mais do que a criação de leiautes funcionais. À medida que o volume de relatórios customizados aumenta, a falta de padronização na nomenclatura e no armazenamento pode ocasionar sobreposição indevida de arquivos em atualizações de versão.

Além das definições de arquivos físicos, o controle rigoroso de acessos e a proteção dos fontes tornam-se indispensáveis em ambientes corporativos. Informações confidenciais, como tabelas salariais e dados cadastrais, requerem permissões direcionadas a perfis específicos para resguardar a integridade dos dados e atender às políticas internas de governança.

Neste artigo, serão detalhados os métodos de nomenclatura segura, a gestão de permissões no Gerador de Relatórios, a proteção contra customizações via senha, a disponibilização em menus personalizados e a execução unificada de múltiplos modelos em lotes.

PADRÕES DE NOMENCLATURA E REGRAS DE ARMAZENAMENTO

O ecossistema Senior HCM adota prefixos e códigos estruturados para classificar os tipos de modelos existentes no repositório do sistema. Reconhecer essas siglas permite localizar e organizar arquivos diretamente nas pastas do servidor ou nas telas de emissão.

Principais prefixos e diretrizes de numeração:

- FP: indica modelos nativos vinculados ao módulo de Folha de Pagamento.
- TR: identifica arquivos e processos associados ao módulo de Treinamento.
- FPRE: categoriza modelos destinados a relatórios operacionais e analíticos.
- FPDO: define documentos oficiais, termos contratuais e declarações.
- Faixa acima de 100: numerações a partir de 101 reservadas exclusivamente para modelos customizados, prevenindo sobrescritas em migrações.

A adoção rigorosa de números superiores a 100 impede que atualizações periódicas da fornecedora substituam as regras de negócio customizadas da empresa.

GERENCIAMENTO DE PERMISSÕES E CONTROLE DE ACESSO

A disponibilização de relatórios deve seguir o princípio do privilégio mínimo, assegurando que apenas usuários autorizados acessem informações críticas da folha. A tela de permissões nativa do Gerador de Relatórios viabiliza essa segmentação de forma detalhada.

Recursos essenciais para gestão de acessos:

- Acesso negado preventivo: bloqueio total do modelo durante as fases de homologação e desenvolvimento.
- Controle por grupos: concessão de acesso direcionada a departamentos específicos, como Recursos Humanos, Benefícios ou Diretoria.
- Permissão por usuário individual: liberação restrita para operadores que exercem funções específicas na empresa.
- Separação entre execução e edição: concessão de permissão apenas para emitir o relatório, vedando a abertura do editor de leiautes.

Essa governança impede a visualização precoce de relatórios incompletos e resguarda dados estratégicos de remuneração.

PROTEÇÃO DE MODELOS COM SENHA CONTRA ALTERAÇÕES

Para salvaguardar a propriedade intelectual de customizações complexas e evitar adulterações operacionais em fórmulas, o Gerador de Relatórios dispõe de uma funcionalidade para proteger o documento com chave de segurança.

Aspectos fundamentais do bloqueio por senha:

- Impedimento de alterações: impede que consultores ou usuários sem autorização modifiquem regras e leiautes protegidos.
- Irreversibilidade local: perda da senha exige a reconstrução integral do modelo ou acionamento de suporte especializado.
- Gestão de credenciais: necessidade de arquivar as chaves corporativas em cofre seguro para futuras manutenções planejadas.

A proteção com senha estabelece uma camada extra de segurança técnica para modelos sensíveis já homologados em produção.

PERSONALIZAÇÃO DE MENUS E ATALHOS CORPORATIVOS

A centralização de modelos em áreas de trabalho amigáveis melhora a rotina dos analistas de departamento pessoal. Por meio do configurador de menus, é possível vincular relatórios dispersos a uma árvore unificada sem necessidade de duplicar arquivos físicos.

Vantagens da inclusão em menus personalizados:

- Criação de atalhos rápidos: disponibilização direta de relatórios no menu superior com nomes claros e intuitivos.
- Integridade do repositório: preservação do arquivo em sua pasta original, evitando duplicatas desatualizadas.
- Organização por processos: agrupamento de relatórios em submenus segmentados por rotina mensal, trimestral ou cadastral.

Esse recurso reduz o tempo de busca dos operadores e consolida procedimentos operacionais sem impactar a arquitetura técnica da instalação.

EXECUÇÃO EM LOTE POR MEIO DE GRUPOS DE MODELOS

Certas rotinas operacionais, como fechamentos mensais ou processos de admissão em massa, exigem o processamento sucessivo de diversos relatórios. A funcionalidade de Grupos de Modelos simplifica esse fluxo ao permitir a emissão encadeada em uma única solicitação.

Critérios de configuração de grupos:

- Encadeamento sequencial: execução ordenada de relatórios analíticos, termos e listagens em um único disparo.
- Geração de arquivos de log: registro de erros e confirmações de processamento de cada modelo do grupo.
- Centralização de telas de parâmetros: combinação dos filtros necessários em uma única janela de solicitação.

O agrupamento de relatórios reduz significativamente o esforço repetitivo de digitação e geração individual de arquivos.

PADRONIZAÇÃO DE VARIÁVEIS EM EMISSÕES AGRUPADAS

Ao consolidar múltiplos relatórios em um mesmo grupo, inconsistências de nomenclatura em variáveis de tela geram a duplicidade desnecessária de campos de filtro para o usuário.

Diretrizes para unificação de parâmetros:

- Sintonia de nomes técnicos: variáveis com objetivos comuns, como seleção de empresas, devem receber o mesmo identificador em todos os modelos.
- Utilização do padrão Senior: adoção de convenções consolidadas, como ENumEmp ou EAbrEmp, para filtros de abrangência.
- Redução do atrito operacional: consolidação de filtros idênticos em uma única entrada compartilhada no momento da emissão.

A sincronia nos identificadores das variáveis assegura telas de entrada limpas, eficientes e sem redundâncias em processamentos agrupados.

CONTROLE DE QUEBRAS E TOTAIS DINÂMICOS POR ORGANOGRAMA

Em estruturas empresariais com níveis hierárquicos consolidados, o sistema possibilita quebrar seções e calcular somatórios com base na tabela de locais e organogramas, utilizando variáveis especiais de controle.

Mecanismos para segmentação hierárquica:

- Variáveis de sistema associadas: componentes técnicos que capturam os níveis hierárquicos vigentes na base de dados.
- Cancelamento condicional de quebras: regras programadas para omitir seções ou subtítulos quando o nível apurado for zero.
- Totalização escalonada: emissão de subtotais alinhados aos níveis operacionais da organização sem duplicação de fórmulas.

A correta aplicação desses parâmetros condiciona a exibição dos dados à profundidade organizacional exigida pela liderança corporativa.

Veja como esse conteúdo foi abordado na aula:

EXEMPLO PRÁTICO: ORGANIZAÇÃO, PROTEÇÃO E AGRUPAMENTO DE MODELOS

Siga os passos abaixo para configurar um modelo customizado seguro e integrá-lo a um fluxo de execução agrupado:

1. Acesse o Gerador de Relatórios e abra um modelo customizado existente, certificando-se de que sua numeração esteja acima de 100.
2. No menu de salvamento, valide se o arquivo está alocado na categoria correta, como FPRE para relatórios ou FPDO para documentos.
3. Acesse a funcionalidade de permissões do modelo e altere o acesso de todos os usuários para negado durante o período de ajustes.
4. Adicione na lista de permissões apenas o grupo ou usuário responsável pela homologação técnica, concedendo direito restrito de execução.
5. Acesse o menu de proteção do documento, defina uma senha corporativa padronizada e salve as alterações do arquivo.
6. Feche e reabra o modelo para testar se a senha é solicitada corretamente antes da exibição do editor de leiautes.
7. Acesse a ferramenta de menus, crie um novo item de submenu e aponte a referência direta para o relatório customizado.
8. Acesse a tela de Recursos > Grupo de Modelos e crie um novo código identificador para o grupo de geração sequencial.
9. Adicione o relatório recém-configurado e os demais modelos correlatos à lista de processamento do grupo.
10. Revise as variáveis de entrada de todos os modelos incluídos no grupo, assegurando que parâmetros idênticos compartilhem o mesmo nome.
11. Execute o grupo de modelos para certificar-se de que a tela de entrada apresenta campos consolidados e os relatórios são gerados sequencialmente.

CONSIDERAÇÕES FINAIS

A gestão estruturada de modelos no Senior HCM garante a preservação dos investimentos realizados no desenvolvimento de relatórios customizados. A adoção de faixas numéricas adequadas afasta o risco de perdas acidentais decorrentes de atualizações no pacote padrão do sistema.

A aplicação de controles de acesso detalhados e a proteção por senhas reforçam a segurança corporativa, assegurando conformidade com políticas de privacidade e proteção a dados salariais restritos.

Por fim, a padronização de variáveis e a unificação por grupos e menus personalizados simplificam o fluxo operacional diário, entregando eficiência e agilidade aos departamentos de recursos humanos.

Módulo 10: GERADOR DE RELATÓRIOS SENIOR HCM: PROJETO PRÁTICO COM HISTÓRICOS, DATAS DE CORTE E QUEBRAS HIERÁRQUICAS


A elaboração de relatórios corporativos no Senior HCM frequentemente demanda mais do que a leitura de dados cadastrais vigentes. Em auditorias, análises de folha e acompanhamentos sindicais, a extração de históricos de cargos, salários e movimentações organizacionais torna-se imprescindível para garantir conformidade e precisão analítica.

Trabalhar com dados históricos impõe desafios técnicos específicos, como o correto encadeamento de tabelas temporais, a aplicação de regras de corte por data de referência e a parametrização de quebras por estruturas de organograma. Um relacionamento configurado incorretamente pode exibir dados atuais no lugar de informações pretéritas ou duplicar registros desnecessariamente.

Neste artigo, será abordada a construção prática de relatórios completos no Gerador de Relatórios, cobrindo o uso de tabelas de histórico salarial e funcional, aplicação de filtros temporais via programação, inserção de variáveis de tela e configuração de quebras multiníveis com subtotais.

ARQUITETURA DE TABELAS HISTÓRICAS NO SENIOR HCM

A base de dados do módulo de Recursos Humanos separa registros cadastrais ativos das tabelas que mantêm o histórico de alterações contratuais. Compreender essa divisão é essencial para desenhar relacionamentos consistentes e extrair o dado desejado.

Principais tabelas envolvidas em relatórios funcionais:

- R034FUN: tabela mestre do contrato do colaborador, contendo identificação, matrícula e vínculos ativos.
- R038HSA: histórico de alterações salariais, guardando motivos de aumento, datas de vigência e novos valores.
- R038HCA: histórico de cargos do colaborador ao longo do tempo.
- R024CAR: cadastro dos cargos, onde constam as descrições e títulos formais.
- R038HLO: histórico de locais e postos de trabalho associados ao colaborador.
- R016ORN: estrutura dos organogramas corporativos e descrições dos departamentos.

A correta correlação entre essas tabelas impede anomalias comuns, como apresentar o salário de uma data passada associado à descrição do cargo recém-promovido.

EVOLUÇÃO HISTÓRICA COMPLETA VERSUS FOTO NA DATA DE CORTE

Existem duas abordagens analíticas ao trabalhar com históricos: listar toda a cronologia de movimentações do colaborador ou capturar a posição exata em uma data de referência específica.

Diferenças metodológicas de cada abordagem:

- Relatório de linha do tempo: exibe todos os aumentos, alterações de cargo ou transferências desde a admissão até o presente.
- Relatório pontual (data de corte): identifica exclusivamente o último cargo e salário vigentes até uma data informada pelo usuário.
- Complexidade de relacionamento: a listagem cronológica dispensa regras lógicas complexas de busca do último registro.
- Complexidade por data: exige o tratamento do registro com a maior data válida que seja menor ou igual à referência.

A definição entre uma abordagem ou outra deve preceder o desenho do modelo, pois orienta diretamente a necessidade de códigos em regras de seção.

RELACIONAMENTOS ENTRE TABELAS HISTÓRICAS E CADASTRAIS

Um erro comum no desenvolvimento de relatórios consiste em ligar tabelas complementares, como cargos ou centros de custos, diretamente à tabela de colaboradores quando se analisa um período histórico.

Boas práticas de relacionamento no modelo:

- Vínculo pela tabela de histórico: a tabela de cargos R024CAR deve ser associada à R038HCA, preservando o código ocupado na época.
- Prevenção de anacronismo: vincular R024CAR diretamente à R034FUN fará com que o cargo impresso seja sempre o atual, ignorando o contexto histórico.
- Chaves de ligação compostas: relacionamentos históricos exigem atenção ao número da empresa, tipo de colaborador e data do evento.

A consolidação correta das junções no editor de leiaute assegura que cada alteração salarial reflita fielmente o cargo exercido naquele momento.

FILTRO POR DATA DE REFERÊNCIA COM FUNÇÕES DE SISTEMA

Para relatórios que necessitam retornar o estado dos colaboradores em determinado dia, o Senior HCM disponibiliza funções especializadas que constroem filtros SQL em tempo de execução.

Mecanismos utilizados no controle temporal:

- MontaSqlHistorico: função nativa encarregada de filtrar a data máxima válida para determinada tabela de histórico até a data de corte.
- InsClausula: procedimento que injeta a condição SQL montada diretamente na seção de detalhe do relatório.
- Variável de data de corte: definição de um parâmetro de tela para que o operador defina o período analítico sem alterar o fonte.
- Tratamento de parâmetros nulos: validação para preencher a data atual do sistema caso o usuário deixe a entrada em branco.

Essa técnica dinamiza a emissão de relatórios retroativos, atendendo a demandas periciais e fechamentos contábeis de meses anteriores.

CUSTOMIZAÇÃO DE CABEÇALHOS E TÍTULOS VIA PARÂMETROS DE ENTRADA

A flexibilização das telas de entrada permite que o próprio usuário insira anotações e títulos contextuais na impressão do documento, sem depender de alterações no modelo.

Implementação de parâmetros descritivos:

- Criação de variáveis alfanuméricas: definição de campos do tipo caractere na tela de entrada para capturar textos livres.
- Inclusão no cabeçalho da página: posicionamento da variável no cabeçalho para exibir anotações de auditoria ou finalidade da emissão.
- Cancelamento condicional: configuração da propriedade de cancelamento da linha caso a variável não contenha dados digitados.

A inclusão desse tipo de controle melhora a experiência do usuário final e amplia o reuso de um único relatório para múltiplos propósitos.

CONFIGURAÇÃO DE QUEBRAS E TOTAIS POR ORGANOGRAMA

Relatórios agrupados por localidade ou departamento exigem a criação de quebras de página ou seções estruturais com base nos níveis do organograma corporativo.

Elementos fundamentais para segmentação de níveis:

- Seções de subtítulo e subtotal: bandas dedicadas a abrir a identificação do setor e fechar a contagem dos colaboradores alocados.
- Campos especiais de quebra: recursos como EspQbr e EspTot para parametrizar quais níveis de hierarquia disparam os agrupamentos.
- Cancelamento de subtotais desnecessários: regras que omitem quebras vazias quando o nível apurado não possui relevância analítica.

O domínio dessas estruturas viabiliza demonstrativos com subtotais por gerência, diretoria e filial em um fluxo ordenado.

DIAGNÓSTICO E CORREÇÃO DE PROBLEMAS DE ORDENAÇÃO

O sintoma de repetição de registros ou quebras que disparam de forma errática quase sempre decorre de divergências entre a ordem de leitura das tabelas e as quebras declaradas.

Diretrizes de ordenação para relatórios hierárquicos:

- Correspondência estrita: os campos configurados nas quebras devem constar nos primeiros níveis da lista de ordenação da seção.
- Posição hierárquica das chaves: a ordem de ordenação deve seguir a precedência correta, como empresa, estrutura de local e matrícula.
- Prevenção de duplicidade: campos de ordenação secundários incorretos podem fragmentar um colaborador em múltiplos blocos isolados.

Revisar criticamente a janela de ordenação reduz retrabalhos e soluciona a maioria das discrepâncias visuais em modelos agrupados.

Veja como esse conteúdo foi abordado na aula:

EXEMPLO PRÁTICO: CONSTRUÇÃO DE RELATÓRIO HISTÓRICO COM QUEBRA POR LOCAL

Acompanhe o passo a passo para criar um relatório que emita o histórico funcional e salarial dos colaboradores agrupado por organograma:

1. Acesse o Gerador de Relatórios e crie um novo modelo informando um código acima de 100 na categoria operacional.
2. Configure as seções estruturais do modelo: Cabeçalho da Página, Subtítulo 1, Detalhe 1, Subtotal 1 e Rodapé da Página.
3. Na tela de definição de tabelas do Detalhe 1, inclua R034FUN como base principal do colaborador.
4. Adicione as tabelas históricas R038HSA para salários, R038HCA para cargos e R038HLO para locais de trabalho.
5. Adicione a tabela cadastral de cargos R024CAR e relacione-a com a tabela R038HCA pelo código de cargo, garantindo integridade temporal.
6. Crie na tela de entrada a variável alfanumérica ECab para permitir anotações de cabeçalho e a variável EDatRef para a data de referência.
7. Na regra associada à seção Detalhe 1, utilize a função MontaSqlHistorico apontando para a data informada e aplique com InsClausula.
8. Configure a seção Subtítulo 1 vinculada ao campo de organograma da tabela R016ORN para exibir o nome do departamento.
9. Acesse a janela de ordenação e posicione o local de trabalho antes da matrícula do colaborador para garantir quebras ordenadas.
10. No Subtotal 1, insira os acumuladores de quantidade de colaboradores e somatório de salários por departamento.
11. Execute a pré-visualização informando uma data de referência e valide se os registros aparecem agrupados corretamente sem duplicidades.

CONSIDERAÇÕES FINAIS

A construção de relatórios no Senior HCM envolvendo dados históricos exige uma compreensão sólida tanto do modelo de dados quanto da lógica de execução das seções. Diferenciar a extração cronológica contínua da leitura pontual por data de corte é o primeiro passo para o sucesso do projeto.

A aplicação correta das funções internas de histórico e a amarração precisa das quebras por organograma transformam dados dispersos em visões analíticas de alto valor para a gestão de recursos humanos.

Por fim, a atenção rigorosa à ordem de leitura e relacionamentos entre tabelas garante que as entregas operacionais sejam estáveis, precisas e alinhadas às necessidades de governança da empresa.


Módulo 11: GERADOR DE RELATÓRIOS SENIOR HCM: ESTRUTURAS AVANÇADAS, MESTRE-DETALHE E SEÇÕES ADICIONAIS


A elaboração de relatórios corporativos no Senior HCM frequentemente requer recursos que vão além das listagens tabulares básicas. Para suprir as demandas de conferência e gestão de Recursos Humanos, o desenvolvedor deve dominar a hierarquia entre seções e o controle minucioso do fluxo de dados.

Componentes estruturais como subtítulos dinâmicos, relações mestre-detalhe e a impressão programada de seções complementares conferem flexibilidade visual e integridade à extração de tabelas relacionais.

Neste artigo, serão exploradas as propriedades estruturais de consistência, a parametrização de formatos de saída, a chamada de seções adicionais via função nativa e o encadeamento de múltiplos detalhes.

PROPRIEDADES ESTRUTURAIS E CONSISTÊNCIA DO MODELO

No Gerador de Relatórios, as propriedades globais definem o comportamento e a integridade de execução do leiaute. Dentre as configurações essenciais, a propriedade de consistência atua como um mecanismo de segurança estrutural.

Aspectos centrais da consistência e propriedades do modelo:

- Consistir modelo: quando parametrizada como verdadeiro, valida campos, seções e tabelas associadas antes da emissão.
- Bloqueio de execução: se a consistência estiver desativada, o sistema impede a compilação do relatório em tempo de execução até a correção.
- Hierarquia de seções: organização lógica entre cabeçalhos de relatório, cabeçalhos de coluna, detalhes, seções adicionais e rodapés.

A manutenção ativa da consistência assegura a integridade das referências de banco de dados e evita inconformidades operacionais.

DIRECIONAMENTO E FORMATOS DE EXPORTAÇÃO DE DADOS

O ecossistema Senior HCM disponibiliza múltiplos destinos para os dados processados. A seleção do formato deve considerar se o objetivo é a impressão física, a conferência visual ou a integração com outras ferramentas.

Principais destinos e formatos suportados:

- Vídeo e impressora: exibição instantânea no spooler de tela ou envio direto para filas de impressão configuradas.
- Arquivo estruturado: exportação em arquivos de texto plano, padrão DOS ou arquivos tabulares compatíveis com formato XLS.
- Envio por e-mail: disparo automático do arquivo gerado, dependente de habilitação de serviços no Senior Config Center.

Definir a saída padrão de forma antecipada simplifica a rotina dos usuários finais e padroniza a entrega dos relatórios.

IMPRESSÃO PROGRAMADA COM A FUNÇÃO LISTASECAO

Ao contrário da seção de detalhe primária, que percorre os registros de forma automática, as seções adicionais dependem de comandos específicos para serem impressas. A função nativa ListaSecao realiza esse controle de fluxo no relatório.

Diretrizes para o uso de seções adicionais:

- Eventos de chamada: inserção do comando ListaSecao em eventos como "Antes de Imprimir" ou "Depois de Imprimir" do detalhe.
- Ordenação visual: o disparo após a impressão do detalhe posiciona blocos de endereço ou complementos cadastrais imediatamente abaixo do colaborador.
- Rigor sintático: o nome da seção adicional referenciado na regra deve corresponder exatamente ao identificador criado nas propriedades.

Essa técnica permite intercalar dados de tabelas paralelas de forma personalizada e condicional.

HIERARQUIA DE AGRUPAMENTO COM SUBTÍTULOS E QUEBRAS

A segmentação ordenada de registros por unidade organizacional ou empresa evita redundâncias no corpo do documento. No gerador, essa divisão depende do vínculo direto entre a seção de subtítulo e a ordenação da seção de detalhe.

Práticas recomendadas para configuração de subtítulos:

- Alinhamento de índices: o campo que define a quebra de grupo deve figurar como primeiro elemento na ordenação do detalhe.
- Associação de propriedades: a quebra configurada na seção de detalhe deve selecionar formalmente o subtítulo correspondente.
- Exibição de entidades superiores: inserção de tabelas de empresas (R030EMP) ou filiais no subtítulo para qualificar os grupos.

Dessa maneira, as quebras atuam harmoniosamente, emitindo o cabeçalho intermediário a cada alteração no valor do campo agrupador.

ESTRUTURAS MESTRE-DETALHE COM MÚLTIPLAS SEÇÕES

Determinadas listagens exigem a impressão de múltiplos registros dependentes vinculados a um cadastro principal. Para atender a essa cardinalidade de um para muitos, o modelo deve empregar múltiplas seções de detalhe.

Critérios para estruturação mestre-detalhe:

- Adição de novos detalhes: criação de uma seção subordinada, como Detalhe 2, dedicada à tabela filha (exemplo: R034DEP).
- Seção de ligação: configuração da propriedade estrutural do Detalhe 2 apontando para o Detalhe 1 de origem.
- Manutenção de integridade: amarração automática entre chaves de empresa, tipo de colaborador e cadastro.

Essa relação assegura que o sistema processe todos os registros secundários do titular atual antes de avançar para o próximo colaborador.

GESTÃO DE IMPRESSÃO DE SEÇÕES VAZIAS

Ao lidar com tabelas filhas facultativas, é frequente que determinados cadastros não contenham dados associados, como colaboradores sem dependentes cadastrados. A propriedade de impressão de seções vazias controla esse comportamento.

Impactos da configuração de seções vazias:

- Supressão de linhas em branco: ajustar a propriedade para falso oculta a seção secundária caso não haja ocorrências no banco de dados.
- Economia de espaço: a supressão de registros inexistentes otimiza a paginação e torna a leitura do documento mais objetiva.
- Reserva de área física: definir como verdadeiro é útil em formulários que demandam preenchimento manual posterior.

A aplicação correta dessa propriedade elimina vazios desnecessários e eleva a qualidade visual do relatório.

Veja como esse conteúdo foi abordado na aula:

EXEMPLO PRÁTICO: CONSTRUÇÃO DE RELATÓRIO MESTRE-DETALHE COM SEÇÃO ADICIONAL

Siga os passos abaixo para configurar um modelo contendo quebra por empresa, complemento de endereço e listagem de dependentes:

1. Acesse o Gerador de Relatórios e crie um novo modelo tabular em branco.
2. Configure a seção Detalhe 1 com a tabela de Colaboradores (R034FUN), selecionando os campos de matrícula e nome.
3. Adicione uma seção de Subtítulo ao relatório e insira os dados da Empresa (R030EMP), como o código e o nome da empresa.
4. Acesse a ordenação do Detalhe 1, adicione os campos NumEmp e CadFun, associando a quebra de empresa ao Subtítulo criado.
5. Crie uma seção do tipo Adicional e insira os campos de endereço provenientes da tabela de Complemento (R034CPL).
6. Acesse os eventos da seção Detalhe 1 e, no evento "Depois de Imprimir", insira o comando chamando a função ListaSecao para a seção Adicional.
7. Adicione uma nova seção de detalhe ao modelo, identificada como Detalhe 2, e associe a tabela de Dependentes (R034DEP).
8. Nas propriedades estruturais do Detalhe 2, defina a propriedade "Seção de Ligação" apontando para Detalhe 1.
9. Altere a propriedade "Imprimir seção vazia" do Detalhe 2 para falso, evitando linhas em branco para colaboradores sem dependentes.
10. Acesse as propriedades gerais do modelo e confirme se a opção "Consistir modelo" está definida como verdadeiro.
11. Ajuste o formato de saída desejado, definindo visualização em vídeo ou direcionamento para arquivo XLS.
12. Execute o modelo gerado e valide se as quebras de empresa, complementos cadastrais e listas de dependentes são impressos corretamente.

CONSIDERAÇÕES FINAIS

A utilização avançada dos componentes estruturais do Gerador de Relatórios eleva a capacidade técnica das soluções desenvolvidas no Senior HCM. Saber configurar seções adicionais e agrupamentos refinados permite extrair valor analítico das tabelas do sistema com precisão.

Adicionalmente, a aplicação de relacionamentos mestre-detalhe associada à supressão de seções vazias confere elegância ao leiaute e previne a dispersão de dados em relatórios corporativos volumosos.

Dominar essas propriedades garante entregas mais aderentes aos padrões de governança da informação, assegurando relatórios limpos, eficientes e de fácil manutenção para o departamento de Recursos Humanos.


Módulo 12: GERADOR DE RELATÓRIOS SENIOR HCM: ENTRADAS, VALIDAÇÕES E FILTROS DINÂMICOS


A flexibilidade de um relatório no Senior HCM está diretamente associada à capacidade de receber parâmetros de execução customizados pelo usuário final. A tela de entrada de dados define o comportamento do modelo, delimitando escopos por empresa, colaborador, datas de competência e escolhas visuais.

No entanto, a criação de entradas parametrizadas exige cuidados técnicos específicos. Falhas em relacionamentos automáticos gerados pelo sistema, tipos incompatíveis de dados em consultas SQL e ausência de validação de períodos podem corromper os resultados ou gerar inconsistências operacionais.

Neste artigo, serão detalhados os padrões de nomenclatura de parâmetros, a criação de abrangências e listas de opções, a supressão condicional de seções e as técnicas de injeção dinâmica de cláusulas SQL via código LSP.

PADRONIZAÇÃO E PRESERVAÇÃO DE VARIÁVEIS DE ENTRADA

A definição de variáveis na tela de entrada do relatório deve seguir a convenção padrão do ecossistema Senior HCM. Adotar prefixos estruturados facilita a identificação do escopo do campo e agiliza manutenções futuras no código-fonte.

Diretrizes para a estruturação de variáveis de entrada:

- Prefixo de entrada: utilizar a letra "E" no início de variáveis de controle direto (por exemplo, ECabec ou EDatIni).
- Prefixo de abrangência: aplicar "EAbr" para identificar parâmetros que admitem múltiplos valores ou intervalos (como EAbrCad ou EAbrEmp).
- Preservação do valor original: nunca sobrescrever o conteúdo de uma variável de entrada durante a execução das regras do relatório.
- Variáveis intermediárias: atribuir o valor do parâmetro a uma variável de trabalho alfanumérica ou numérica caso seja necessário formatá-la.

A alteração acidental de uma variável de entrada pode comprometer filtros subsequentes e impedir que o sistema recupere o valor digitado pelo operador.

ABRANGÊNCIA DE PARÂMETROS E CAMPOS NUMÉRICOS

No banco de dados do Senior HCM, entidades como empresa e cadastro de colaborador são armazenadas como campos inteiros. Todavia, quando o usuário precisa selecionar múltiplos códigos ou faixas de valores, o campo da tela de entrada deve ser tratado como caractere.

Práticas recomendadas para configuração de abrangências:

- Tipo de dado alfanumérico: configurar a variável de entrada como tipo alfa para habilitar a digitação de delimitadores e intervalos.
- Dimensionamento ampliado: definir máscaras de tamanho estendido para comportar listas longas de códigos separados por vírgula ou hífen.
- Ativação da propriedade de abrangência: marcar o atributo de abrangência como "Sim" nas propriedades da variável no gerador.
- Geração automática de cláusulas: o próprio motor de relatórios converte a cadeia alfanumérica em instruções SQL compatíveis com a chave primária da tabela.

Esse procedimento garante que consultas por faixas amplas (por exemplo, empresas de 1 a 100) funcionem sem exigir concatenações manuais em regras.

LISTAS DE OPÇÕES E SUPRESSÃO CONDICIONAL DE SEÇÕES

Nem todos os parâmetros de entrada destinam-se a filtros de banco de dados; muitos servem para alternar leiautes e controlar a exibição de cabeçalhos, rodapés ou totalizadores.

Nesses cenários, a criação de listas de opções fixas padroniza a resposta do usuário, restringindo a digitação a caracteres pré-determinados:

- Edição em caixa alta: utilização do caractere de máscara "U" para forçar a conversão de letras minúsculas em maiúsculas.
- Definição de domínio restrito: estabelecimento de opções padronizadas como "S" (Sim) e "N" (Não) associadas a um valor padrão.
- Posição da regra de controle: inserir a regra de cancelamento no evento "Antes de Imprimir" da seção que se deseja suprimir.
- Execução do comando Cancel: invocar a função Cancel(1) caso a variável de entrada corresponda à opção de ocultação.

Essa abordagem permite reaproveitar o mesmo modelo de relatório para saídas em vídeo, impressão em papel ou exportação para planilhas eletrônicas sem linhas indesejadas de cabeçalho.

AJUSTES EM RELACIONAMENTOS AUTOMÁTICOS DE HISTÓRICOS

O assistente de relacionamentos do gerador conecta tabelas automaticamente com base em campos homônimos. Contudo, relatórios com tabelas de histórico exigem intervenção manual para evitar a recuperação de dados vigentes em vez do registro histórico da época.

Um exemplo frequente ocorre ao listar o histórico de cargos (R038HCA) em conjunto com a tabela de colaboradores (R034FUN) e a tabela de títulos de cargos (R024CAR):

- Vínculo incorreto pelo assistente: o gerador frequentemente atrela o cargo atual da R034FUN à R024CAR, ignorando as alterações intermediárias.
- Eliminação do relacionamento automático: remoção do vínculo da R024CAR com a tabela de colaboradores.
- Recomposição manual de chaves: conexão direta dos campos EstCar (estrutura) e CodCar (código de cargo) da tabela R038HCA com a tabela R024CAR.
- Inclusão de campos de máscara especial: tabelas que utilizam máscaras dinâmicas demandam a inserção do campo de código na seção para assegurar a conversão interna do sistema.

A correção dessas junções garante a precisão cronológica em relatórios de auditoria, evolução salarial e histórico funcional.

VALIDAÇÃO DE PERÍODOS E TRATAMENTO DE DATAS NULAS

O tratamento de campos de data exige validação antes que qualquer leitura de dados seja iniciada. Datas não informadas pelo operador podem ser interpretadas pelo sistema como nulas, zero numérico ou a data base 31/12/1900.

Etapas essenciais para validação de períodos na regra de pré-seleção:

- Verificação de preenchimento inicial: testar se a data inicial foi omitida através de comparação com zero ou com variável montada via MontaData.
- Emissão amigável de alertas: utilizar a função Mensagem com o parâmetro Retorna em vez de Erro, garantindo um diálogo limpo com o usuário.
- Interrupção imediata de processamento: executar o comando Cancel(1) imediatamente após a mensagem de alerta para impedir a geração com filtros inválidos.
- Tratamento de data final aberta: aplicar a variável de sistema DatSis para assumir a data corrente caso o operador deixe a data de encerramento em branco.
- Consistência lógica de limites: validar se a data final informada é estritamente maior ou igual à data inicial do período.

A padronização das mensagens de consistência previne o travamento da sessão e instrui o usuário sobre o correto preenchimento dos filtros.

INJEÇÃO DINÂMICA DE FILTROS COM INSQLWHERE

Quando os parâmetros de entrada não puderem ser vinculados graficamente às tabelas do modelo, a manipulação direta da cláusula WHERE via regra de negócio torna-se a alternativa técnica mais robusta.

Para inserir filtros dinâmicos na seção de detalhe:

- Conversão de datas para o padrão de banco: utilizar a função ConverteDataBanco para transformar variáveis de data em cadeias textuais compatíveis com o banco de dados da instalação.
- Concatenação da instrução SQL: montar a string de filtro contendo os operadores de comparação e os apelidos exatos das tabelas de histórico.
- Aplicação do comando InSqlWhere: direcionar a cláusula para a seção de processamento (por exemplo, InSqlWhere("Detalhe_1", XSQL)).
- Validação via ferramenta de SQL: inspecionar o comando SQL resultante no próprio gerador para verificar a sintaxe e os apelidos das colunas.

A injeção controlada de SQL permite criar filtros complexos por período sem comprometer a performance de extração do relatório.

Veja como esse conteúdo foi abordado na aula:

EXEMPLO PRÁTICO: PARAMETRIZAÇÃO DE PERÍODO E HISTÓRICO DE CARGOS

Siga os passos abaixo para configurar um relatório que liste as alterações de cargos de colaboradores em determinado intervalo de datas:

1. Acesse o Gerador de Relatórios e abra o modelo baseado na tabela de Colaboradores (R034FUN) e Histórico de Cargos (R038HCA).
2. No menu Definição, abra a tela Entrada e cadastre duas variáveis do tipo Data: EDatIni (Data Inicial) e EDatFim (Data Final).
3. Cadastre uma variável alfanumérica ECabec com máscara "U", tamanho 1 e opções padrão "S" e "N" para controle do cabeçalho.
4. No assistente de relacionamentos, verifique a tabela R024CAR e certifique-se de que os campos EstCar e CodCar estejam vinculados à R038HCA, e não à R034FUN.
5. Na ordenação da seção de detalhe, adicione os campos NumCad (cadastro) e DatAlt (data de alteração da R038HCA).
6. Na seção Cabeçalho, no evento Antes de Imprimir, insira a verificação para cancelar a seção caso ECabec seja igual a "N".
7. Na regra de Pré-Seleção do relatório, declare variáveis de trabalho alfanuméricas para receber as datas formatadas.
8. Valide se EDatIni é igual a zero; em caso positivo, emita mensagem com Mensagem(Retorna, "...") e execute Cancel(1).
9. Caso EDatFim seja igual a zero, atribua o valor da variável de sistema DatSis à data final.
10. Converta ambas as datas utilizando a função ConverteDataBanco para suas respectivas variáveis alfanuméricas.
11. Monte a instrução SQL concatenando a comparação do campo DatAlt da R038HCA com o período e aplique o filtro via InSqlWhere na seção Detalhe_1.
12. Execute o modelo com diferentes intervalos de datas e confirme se os dados históricos refletem os períodos selecionados.

CONSIDERAÇÕES FINAIS

A elaboração de relatórios intermediários e avançados no Senior HCM demanda rigor técnico na criação de telas de entrada e no tratamento dos parâmetros informados. Entender como o gerador interpreta variáveis de abrangência e relacionamentos entre tabelas de histórico evita relatórios com dados desatualizados.

A utilização combinada de validações prévias de datas, supressão seletiva de seções e injeção dinâmica de cláusulas SQL via InSqlWhere confere autonomia ao desenvolvedor, permitindo entregar relatórios corporativos seguros, performáticos e intuitivos.

Por fim, o hábito de inspecionar o SQL gerado pelo sistema durante a fase de testes assegura que todas as regras de negócio foram devidamente convertidas para o mecanismo de banco de dados.


Módulo 13: GERADOR DE RELATÓRIOS SENIOR HCM: ABRANGÊNCIAS, FILTROS DINÂMICOS E HISTÓRICOS


A extração de relatórios cronológicos no Senior HCM exige compreensão técnica sobre a modelagem de tabelas de histórico e a aplicação de filtros em tempo de execução. O acompanhamento da trajetória de colaboradores demanda frequentemente a consolidação de alterações de cargos, movimentações salariais e transferências de filiais em um único modelo de dados.

Quando múltiplos históricos precisam ser correlacionados em uma data de corte ou ao longo de um período, a simples amarração visual de tabelas pode produzir inconsistências ou multiplicação de registros. Nesses cenários, a construção de instruções SQL dinâmicas e o uso de cursores tornam-se indispensáveis para garantir a fidelidade das informações geradas.

Neste artigo, serão abordadas as técnicas para aplicação de abrangências dinâmicas, o encadeamento de filtros para tabelas de histórico, o uso do depurador de regras e as especificidades técnicas do histórico de filiais.

CONCEITO DE ABRANGÊNCIAS E CRITÉRIOS DE FILTRAGEM DINÂMICA

As abrangências no Gerador de Relatórios representam parâmetros informados pelo usuário na tela de entrada antes do processamento. Elas viabilizam a filtragem por múltiplos valores, intervalos numéricos, datas de competência ou agrupamentos organizacionais como empresas, filiais e centros de custo.

Vantagens da aplicação de abrangências flexíveis:

- Parametrização sem alteração de leiaute: o mesmo modelo atende a emissões analíticas individuais ou globais.
- Otimização do volume de dados: restringe a carga de leitura no banco de dados aos registros estritamente necessários.
- Padronização de tela de entrada: uniformiza a experiência dos operadores com componentes nativos do sistema.
- Controle dinâmico via regras: variáveis de tela podem ser manipuladas diretamente pela linguagem LSP para compor cláusulas WHERE.

Essa flexibilidade operacional reduz a proliferação de modelos redundantes para finalidades semelhantes.

DESAFIOS NA INTEGRAÇÃO DE MÚLTIPLOS HISTÓRICOS NO MODELO

A gestão de pessoas no Senior HCM armazena eventos temporais em tabelas separadas pela família R038 (R038HCA para cargos, R038HSA para salários e R038HFI para filiais). Cada uma possui sua própria linha do tempo com datas de alteração e motivos de movimentação independentes.

Dificuldades comuns ao relacionar tabelas de histórico:

- Datas de alteração desalinhadas: promoções de cargo nem sempre ocorrem na mesma data de reajustes salariais ou acordos coletivos.
- Duplicação de linhas no detalhe: amarrações incorretas entre tabelas históricas geram combinações cartesianas indesejadas.
- Identificação do valor vigente: determinar o salário correspondente à época exata em que o colaborador ocupou determinado cargo exige lógica retroativa.

Para contornar essas divergências temporais, o desenvolvedor deve adotar filtros que selecionem os registros máximos dentro do limite cronológico desejado.

MONTAGEM DINÂMICA DE SQL E CONCATENAÇÃO DE CLÁUSULAS

O Senior HCM fornece funções especializadas para montar cláusulas SQL de histórico, responsáveis por injetar subconsultas que buscam o registro mais recente em relação a uma data de corte. Contudo, ao manipular mais de uma tabela histórica na mesma seção de detalhe, a composição do comando exige atenção redobrada.

Requisitos para a concatenação de instruções SQL:

- Preservação de operadores lógicos: ao unir critérios de duas tabelas na mesma variável de comando, deve-se incluir explicitamente o operador AND.
- Prevenção de sobrescrita: variáveis alfanuméricas de SQL devem receber concatenações progressivas para não perder condições anteriores.
- Tratamento de parênteses e delimitadores: inconsistências na sintaxe da instrução resultam em falha de geração do relatório.
- Atribuição correta na seção de detalhe: a instrução consolidada deve ser aplicada antes da leitura dos registros de banco.

A composição estruturada das condições garante que tanto o cargo quanto o salário sejam filtrados pelas respectivas datas vigentes.

DEPURADOR DE REGRAS LSP COMO FERRAMENTA DE DIAGNÓSTICO

Quando o relatório apresenta erros de geração ou retorno vazio, o depurador integrado do sistema torna-se o principal recurso para análise de causa raiz. Ele possibilita executar a lógica linha por linha, inspecionando o conteúdo real alocado nas variáveis de memória e as instruções SQL geradas.

Práticas recomendadas para depuração no Gerador:

- Inclusão de pontos de parada condicionais: definir variáveis de controle auxilia a pausar a execução exatamente no evento desejado.
- Inspeção da variável de comando SQL: verificar no painel do depurador se a string montada possui espaçamentos e operadores válidos.
- Monitoramento de variáveis de retorno: validar se os campos de data e valor salarial estão sendo limpos a cada ciclo de registro.
- Avaliação do fluxo lógico: confirmar se os desvios condicionais e testes de localização estão sendo atendidos conforme o esperado.

A depuração sistemática elimina tentativas empíricas e acelera a validação de regras intermediárias complexas.

CONSULTA DE SALÁRIOS HISTÓRICOS VINCULADOS A CARGOS VIA CURSORES

Em relatórios que exibem a cronologia de cargos e demandam o salário daquela mesma competência, a melhor abordagem técnica consiste em iterar pela tabela de cargos (R038HCA) e buscar pontualmente a remuneração vigente via cursor programado na R038HSA.

Etapas para construção da consulta por cursor:

- Definição do cursor: declaração do cursor direcionado à tabela R038HSA parametrizado por empresa, tipo de colaborador e cadastro.
- Filtro cronológico descendente: seleção de registros cuja data de alteração salarial seja menor ou igual à data de alteração do cargo em exibição.
- Ordenação por data decrescente: aplicação de ORDER BY DatAlt DESC para que o primeiro registro retornado represente o salário vigente na época.
- Inicialização preventiva: atribuição de valor zero à variável de salário antes da abertura do cursor para evitar retenção de dados da linha anterior.

Essa técnica garante que promoções de cargo sem reajuste financeiro imediato reflitam com fidelidade a remuneração recebida naquele momento.

PARTICULARIDADES E REGRAS PARA O HISTÓRICO DE FILIAL (R038HFI)

A tabela de histórico de filiais (R038HFI) possui um comportamento singular no ecossistema Senior HCM. Diferente de outros históricos, ela contém particularidades no relacionamento que envolvem a identificação da empresa e filial atuais do colaborador (EmpAtu e FilAtu), exigindo tratamento diferenciado na montagem de filtros.

Diretrizes para o tratamento do histórico de filiais:

- Relacionamento visual criterioso: evitar que o assistente automático conecte a tabela de filiais a campos de responsáveis corporativos em vez do código da filial.
- Tratamento específico de SQL: utilizar as rotinas padronizadas do sistema que consideram a vinculação do histórico de transferência entre empresas e filiais.
- Inicialização de variáveis de banco: assegurar que variáveis de apoio recebam a formatação correta de data para a cláusula de comparação.
- Compatibilização com abrangências de filial: garantir que o filtro de filial inserido na tela de entrada filtre com base na alocação histórica ou atual, conforme o objetivo do relatório.

O tratamento adequado da R038HFI previne que colaboradores transferidos apareçam vinculados à filial incorreta ao longo do histórico.

Veja como esse conteúdo foi abordado na aula:

EXEMPLO PRÁTICO: CONSULTA DE SALÁRIO VIGENTE CONFORME HISTÓRICO DE CARGO VIA CURSOR

Siga os passos abaixo para construir um relatório que liste as alterações de cargo de um colaborador e recupere o salário correspondente à data de cada promoção:

1. Acesse o Gerador de Relatórios e defina como tabela principal da seção de detalhe o histórico de cargos (R038HCA) em conjunto com o cadastro do colaborador (R034FUN).
2. Configure na tela de entrada uma abrangência de período para selecionar as alterações ocorridas entre as datas inicial e final desejadas.
3. Adicione na seção de detalhe os campos de data de alteração de cargo (DatAlt) e a descrição do cargo correspondente.
4. Crie duas variáveis na seção de detalhe: uma de data (DSal) e uma numérica com máscara monetária (ValSal) para exibir o salário recuperado.
5. Na regra associada à seção de detalhe, declare uma variável de data para armazenar a data do cargo atual e declare o cursor apontando para a tabela R038HSA.
6. Inicialize a variável numérica atribuindo zero no início de cada processamento para evitar retenção de valores residuais.
7. Monte o comando SELECT do cursor filtrando por NumEmp, TipCol, NumCad e com a condição DatAlt menor ou igual à data de alteração do cargo atual.
8. Adicione a cláusula ORDER BY DatAlt DESC na instrução SQL para que o primeiro registro localizado seja o mais recente em relação à data do cargo.
9. Abra o cursor, execute a leitura condicional do primeiro registro e, se encontrado, atribua o campo ValSal à variável de tela e feche o cursor imediatamente.
10. Atribua a data de alteração salarial localizada à variável DSal para possibilitar a comparação visual entre a data da promoção e a data do salário.
11. Execute o relatório selecionando um colaborador que tenha passado por promoções e valide se as remunerações refletem exatamente a política salarial da época.

CONSIDERAÇÕES FINAIS

A elaboração de relatórios que consolidam trajetórias funcionais no Senior HCM requer método analítico para lidar com a natureza independente das tabelas de histórico. Compreender a mecânica temporal entre cargos, salários e filiais é fundamental para evitar distorções nos dados apresentados aos gestores de RH.

O domínio do depurador de regras e da montagem dinâmica de instruções SQL capacita o profissional a identificar rapidamente divergências de sintaxe, assegurando que múltiplos critérios de filtragem coexistam de forma harmônica na execução do relatório.

Por fim, a combinação entre abrangências bem configuradas e consultas programadas via cursores confere precisão, performance e autonomia na geração de auditorias funcionais e históricos corporativos completos.


Módulo 14: GERADOR DE RELATÓRIOS SENIOR HCM: FÓRMULAS, CÁLCULOS SALARIAIS E TOTALIZADORES


A personalização de relatórios corporativos no Senior HCM frequentemente demanda cálculos dinâmicos que vão além da simples extração de dados cadastrais. Cenários como simulações de dissídios coletivos, projeções orçamentárias e antecipações salariais exigem a aplicação de fórmulas matemáticas em tempo de execução.

Nesses contextos, o Gerador de Relatórios oferece recursos flexíveis para manipulação de variáveis, aplicação de operadores aritméticos e processamento condicional linha a linha. Compreender como estruturar essas rotinas assegura relatórios com desempenho consistente e precisão analítica.

Neste artigo, são detalhadas as práticas para criação de variáveis de tela, codificação de regras matemáticas para acréscimos percentuais, configuração de subtotais com quebras estruturadas e ajustes para exportação limpa em planilhas eletrônicas.

PRESERVAÇÃO DE MODELOS E BOAS PRÁTICAS DE CUSTOMIZAÇÃO

A manutenção da integridade do sistema Senior HCM exige que relatórios padrão disponibilizados pela Senior não sejam alterados diretamente. Quaisquer atualizações de versão sobrepõem os arquivos originais, ocasionando a perda de alterações customizadas.

Diretrizes para preservação de modelos:

- Clonagem preventiva: crie sempre uma cópia do relatório de referência, salvando-o com código na faixa de customizados do cliente (geralmente acima de 100).
- Desvinculação de rotinas desnecessárias: remova regras anteriores, cursores redundantes e variáveis obsoletas herdadas do modelo original para otimizar o processamento.
- Manutenção de nomes padronizados: adote nomenclaturas padronizadas para campos visuais e variáveis de regra, facilitando revisões técnicas.

Essa disciplina no ciclo de vida dos relatórios previne retrabalho e assegura conformidade nas manutenções periódicas.

VARIÁVEIS DE ENTRADA E VALIDAÇÃO DE PARÂMETROS

Para que o usuário realize simulações interativas, o relatório deve disponibilizar campos de preenchimento na tela de parâmetros de execução. No caso de projeções salariais, é comum solicitar uma data de referência e o percentual de reajuste desejado.

Aspectos técnicos na gestão de parâmetros de tela:

- Variáveis de data (EDatRef): variáveis tipadas com formato de referência preenchem automaticamente a data corrente do sistema, reduzindo a necessidade de validações de obrigatoriedade em código.
- Variáveis numéricas de percentual (EPersal): devem ser configuradas com máscara decimal apropriada (como 999,99) para permitir frações precisas de taxa.
- Consistência lógica em regra de seleção: implemente mensagens de aviso seguidas da função Cancel(1) caso valores inválidos, como percentuais negativos ou nulos, sejam digitados.

Validar os parâmetros na entrada impede que o processamento seja iniciado com premissas inválidas de cálculo.

PROCESSAMENTO DE CÁLCULOS MATEMÁTICOS NA SEÇÃO DE DETALHE

O processamento de cada linha da seção de detalhe requer a leitura do salário contratual atual e a computação direta do acréscimo correspondente. A lógica precisa considerar divisões decimais e precedência de operadores.

Etapas essenciais do cálculo na regra de detalhe:

- Inicialização de variáveis: zere todas as variáveis de cálculo no início de cada leitura de colaborador para evitar contaminação de dados residuais.
- Apuração do valor de aumento: multiplique o salário base pelo percentual informado e divida o resultado por 100 para obter o valor monetário do acréscimo.
- Composição do novo salário: some o valor calculado de aumento ao salário base do colaborador.
- Atribuição aos componentes de tela: direcione os resultados numéricos para os respectivos campos de controle visual posicionados no leiaute.

A aplicação dessa sequência assegura que cada registro apresente individualmente o salário original, a quantia acrescida e a nova remuneração projetada.

APLICAÇÃO DE REGRAS CONDICIONAIS DE AUMENTO

Modelos avançados de simulação podem exigir políticas de reajuste distintas conforme a empresa ou filial do colaborador. Em vez de utilizar uma taxa uniforme em todo o processamento, o código da regra pode manipular o percentual de forma condicional.

Possibilidades de parametrização dinâmica:

- Diferenciação por código de empresa: aplicação de estruturas condicionais (Se... Senão) baseadas no campo R034FUN.CodEmp para atribuir percentuais específicos.
- Incrementos combinados: manutenção de um percentual base informado na tela com acréscimos progressivos para determinadas unidades de negócio.
- Exibição do percentual efetivo: inclusão do valor da taxa aplicada em uma coluna específica da seção de detalhe para dar transparência ao critério utilizado.

A lógica condicional confere grande versatilidade ao relatório, permitindo múltiplos cenários em uma única rotina de execução.

CONFIGURAÇÃO DE TOTAIS E CONTROLE DE QUEBRA

A sumarização dos valores é indispensável para que a gestão visualize o impacto financeiro global das projeções. No Gerador de Relatórios, a totalização exige a criação de seções de subtotal e total geral com propriedades adequadas de acúmulo.

Configurações indispensáveis dos componentes de total:

- Campo a totalizar: vinculação direta ao campo de banco ou à variável calculada correspondente (salário atual, valor de aumento e novo salário).
- Seção de limpeza: nos subtotais de quebra (por exemplo, quebra por empresa), a seção de limpeza deve ser ela mesma para reiniciar os acumuladores a cada nova unidade.
- Total geral: posicionado no final do relatório, deve acumular os valores ao longo de toda a execução sem receber seção de limpeza.
- Amarração de quebra: a seção de detalhe deve ter seu evento de quebra atrelado ao campo de agrupamento para disparar a emissão do subtotal no momento exato.

Essa estrutura hierárquica garante clareza visual entre os montantes de cada filial e a somatória consolidada da organização.

AJUSTES VISUAIS E ALINHAMENTO PARA EXPORTAÇÃO EM PLANILHAS

Relatórios analíticos de simulação frequentemente são exportados para planilhas eletrônicas no formato XLS para estudos complementares pela diretoria. Desalinhamentos na grade de desenho podem gerar colunas sobrepostas ou quebras indevidas de linha no arquivo de saída.

Boas práticas de posicionamento no leiaute:

- Alinhamento horizontal rigoroso: componentes da mesma coluna visual devem compartilhar exatamente a mesma coordenada horizontal (Left) e largura (Width).
- Padronização de coordenadas verticais: cabeçalhos, detalhes e subtotais devem manter espaçamentos homogêneos em relação ao topo da seção.
- Alinhamento à direita para números: valores monetários e percentuais devem ser justificados à direita com máscaras de formato padronizadas.

O respeito a esses parâmetros geométricos assegura uma exportação para Excel limpa e pronta para uso imediato em gráficos e tabelas dinâmicas.

Veja como esse conteúdo foi abordado na aula:

EXEMPLO PRÁTICO: SIMULAÇÃO DE REAJUSTE SALARIAL COM SUBTOTAIS POR EMPRESA

Siga os passos abaixo para configurar um modelo de cálculo de aumento salarial percentual com totalizadores por empresa:

1. Salve uma cópia de um relatório cadastral existente com código de relatório customizado de usuário.
2. Na tela de entrada do modelo, crie a variável numérica EPersal com máscara 999,99 para a digitação do percentual de aumento.
3. Crie ou ajuste a variável EDatRef para receber a data de referência da consulta.
4. Adicione na seção de detalhe os campos cadastrais de matrícula, nome do colaborador, cargo e centro de custo.
5. Insira na seção de detalhe os componentes numéricos para exibir: Salário Atual, Percentual Aplicado, Valor do Aumento e Novo Salário.
6. Na regra da seção de detalhe, declare as variáveis de cálculo e inicialize todas com valor zero no topo da rotina.
7. Escreva a regra para calcular o aumento: multiplique o salário contratual pelo percentual digitado e divida por 100.
8. Calcule o novo salário somando o salário atual ao valor apurado de aumento e atribua os resultados às variáveis de tela.
9. Crie uma seção de Subtotal, configure os componentes acumuladores vinculados aos três campos monetários e aponte a seção de limpeza para o próprio subtotal.
10. Na seção de detalhe, configure a quebra pelo campo CodEmp apontando para a emissão do subtítulo e do subtotal correspondentes.
11. Crie uma seção de Total Geral ao término do relatório, inserindo os mesmos acumuladores sem definir seção de limpeza.
12. Execute o modelo informando 15% de aumento e valide os cálculos individuais, os subtotais por empresa e o totalizador final.

CONSIDERAÇÕES FINAIS

O domínio de cálculos matemáticos e fórmulas dinâmicas no Gerador de Relatórios Senior HCM transforma extrações básicas em relatórios preditivos e gerenciais de alto valor para a tomada de decisões de Recursos Humanos.

A aplicação disciplinada de boas práticas — como a inicialização consistente de variáveis numéricas, a parametrização de telas com validações prévias e a estruturação ordenada de quebras e subtotais — evita retrabalho e assegura a consistência das apurações.

Com o leiaute corretamente ajustado e alinhado para exportação em planilhas, a área de Gestão de Pessoas ganha agilidade e independência para projetar cenários salariais com rapidez e rigor técnico.


Módulo 15: GERADOR DE RELATÓRIOS SENIOR HCM: REGRAS, VARIÁVEIS E FUNÇÕES CUSTOMIZADAS


A personalização do comportamento de relatórios no Senior HCM depende diretamente do domínio da lógica programada por meio de regras. Embora a interface visual ofereça recursos para a disposição estática de campos, a implementação de requisitos dinâmicos exige controle sobre o fluxo de processamento de dados.

A utilização correta de variáveis e funções permite validar parâmetros fornecidos pelo usuário, manipular períodos de apuração e reaproveitar trechos de código em múltiplos pontos do modelo. Esse direcionamento previne inconsistências de execução e otimiza a performance das consultas ao banco de dados.

Neste artigo, serão abordadas as diretrizes para tipagem de dados, uso de variáveis de entrada e de sistema, conversões para filtros SQL, validações lógicas e a criação de funções modulares customizadas.

O PAPEL DAS REGRAS NA CUSTOMIZAÇÃO DE RELATÓRIOS

As regras no Gerador de Relatórios funcionam como gatilhos programados para alterar o comportamento padrão do leiaute. Elas permitem interceptar eventos do ciclo de vida da impressão para formatar valores, verificar conformidades e condicionar a exibição de registros.

A inserção de lógica personalizada transforma modelos tabulares simples em documentos inteligentes, capazes de reagir a seleções específicas de parâmetros operacionais.

TIPAGEM E BOAS PRÁTICAS DE DECLARAÇÃO DE VARIÁVEIS

A linguagem de regras do Senior HCM requer a declaração explícita de determinados tipos de variáveis antes de sua utilização no código. Variáveis alfanuméricas e de data exigem a instrução de definição no cabeçalho da regra, enquanto variáveis numéricas dispensam declaração formal prévia.

Recomendações para organização e tipagem:

- Agrupamento no início do script: concentrar todas as declarações no topo do código para facilitar a manutenção.
- Padronização de nomenclatura: adotar prefixos identificadores, como D para datas, X ou A para alfanuméricos e N para numéricos.
- Segregação de tipos: evitar misturar tipos de dados incompatíveis em operações diretas sem conversão prévia.
- Manuseio de data zerada: reconhecer que o sistema interpreta datas zeradas tanto pelo valor numérico zero quanto pelo literal 31/12/1900.

Essa padronização simplifica a leitura da regra e evita falhas de compilação durante o desenvolvimento.

VARIÁVEIS DE ENTRADA E TRATAMENTO DE ABRANGÊNCIAS

As variáveis de tela de entrada capturam os filtros informados pelo usuário antes da geração do relatório. Identificadas pelo prefixo padrão "E", essas variáveis determinam o escopo das informações que serão selecionadas no banco.

Quando há necessidade de permitir que o usuário informe múltiplos valores para uma mesma entidade, como uma lista de códigos de empresa, a variável de entrada deve ser configurada como alfanumérica com abrangência habilitada. Manter a variável como estritamente numérica restringe a seleção a um único registro por vez.

VARIÁVEIS DE SISTEMA E OPERAÇÕES COM DATAS

O Senior HCM disponibiliza variáveis nativas de sistema que fornecem informações operacionais do ambiente sem a necessidade de comandos manuais. Exemplos frequentes incluem o número da página, o nome da empresa ativa e a data corrente do sistema (DataSis).

A realização de operações matemáticas sobre variáveis de data permite flexibilizar filtros temporais. Ao subtrair dias da data do sistema, como DataSis - 2, o desenvolvedor estabelece marcos retroativos automáticos para extrações periódicas.

VALIDAÇÃO CONDICIONAL E ATRIBUIÇÃO DINÂMICA

A consistência do relatório depende da integridade dos parâmetros fornecidos na tela inicial. Por meio de blocos condicionais, a regra pode avaliar se campos mandatórios foram deixados em branco ou preenchidos incorretamente.

Estratégias de tratamento de parâmetros:

- Interrupção com mensagem de erro: cancelar o processamento caso uma data essencial não seja preenchida.
- Atribuição de valor padrão: assumir automaticamente uma data de corte predefinida quando o usuário omitir a data final.
- Proteção de variáveis originais: utilizar variáveis auxiliares para manipulações internas, preservando o valor digitado na entrada.

Essas medidas asseguram que o relatório sempre processe intervalos válidos, prevenindo travamentos ou retornos vazios.

INTEGRAÇÃO COM FILTROS SQL E CONVERSÕES DE TIPOS

Instruções SQL construídas dinamicamente via regras exigem que parâmetros de data sejam convertidos para cadeias alfanuméricas formatadas. O motor de banco de dados não interpreta variáveis do tipo data diretamente dentro de strings de comando.

A aplicação de funções nativas de conversão deve ocorrer na sequência lógica correta, logo após a definição ou validação das datas de entrada. Ajustar o momento de conversão impede que variáveis vazias gerem cláusulas WHERE incorretas nas consultas do relatório.

MODULARIZAÇÃO DE CÓDIGO COM FUNÇÕES CUSTOMIZADAS

Além de consumir as funções nativas do sistema, o desenvolvedor pode criar funções customizadas nas definições gerais do relatório. Esse recurso é indicado para rotinas que precisam ser executadas repetidas vezes sob diferentes condições.

Ao estruturar blocos funcionais com início e fim próprios, o código da seção principal é reduzido a chamadas objetivas. O fluxo operacional pode alternar o acionamento de funções por meio de variáveis de controle, como contadores numéricos ou flags alfanuméricas.

FLUXO DE EXECUÇÃO E DEPURAÇÃO LÓGICA

O momento em que a regra é associada — como no evento antes de imprimir ou na pré-seleção — impacta diretamente o resultado do processamento. Variáveis modificadas após o momento de leitura da seção perdem o efeito esperado para o registro corrente.

O depurador do Gerador de Relatórios é a ferramenta indispensável para monitorar o estado das variáveis a cada linha percorrida. O acompanhamento passo a passo revela falhas de alternância de flags e evita a liberação de modelos com inconsistências lógicas para o usuário final.

Veja como esse conteúdo foi abordado na aula:

EXEMPLO PRÁTICO: VALIDAÇÃO DE PERÍODO E EXECUÇÃO MODULAR

Siga os passos abaixo para implementar uma regra de validação de datas com tratamento de valor padrão e acionamento de função customizada:

1. Acesse o Gerador de Relatórios e abra o modelo na tela de Definições de Entrada.
2. Crie as variáveis de entrada EDatIni e EDatFin, configurando o tipo de dado para Data.
3. No evento de Pré-Seleção do relatório, declare as variáveis alfanuméricas auxiliares XDatIni e XDatFin.
4. Insira a verificação da data inicial: se EDatIni for igual a zero, exiba mensagem de obrigatoriedade e cancele a execução.
5. Insira a verificação da data final: se EDatFin for igual a zero, atribua o valor da data do sistema subtraído de dois dias (DataSis - 2).
6. Execute a função de conversão para carregar os valores de EDatIni e EDatFin nas variáveis alfanuméricas XDatIni e XDatFin.
7. Na área de Funções Gerais do modelo, declare uma função customizada denominada BuscaDados com sua respectiva rotina interna.
8. Na regra da seção de detalhe, declare uma variável numérica de controle NContador inicializada em zero.
9. Crie uma condição lógica para chamar a função BuscaDados quando NContador for igual a zero e, em seguida, incremente o contador.
10. Execute o relatório no modo de depuração para verificar se as datas foram convertidas adequadamente e se a função foi acionada.

CONSIDERAÇÕES FINAIS

A aplicação estruturada de regras e variáveis amplia significativamente a capacidade analítica e a estabilidade dos relatórios no Senior HCM. A separação clara entre parâmetros de entrada, variáveis auxiliares e rotinas de sistema assegura transparência no fluxo dos dados.

O emprego de funções customizadas eleva o nível técnico dos modelos, promovendo reutilização de lógica e manutenção facilitada em cenários de alta complexidade.

A realização de testes rigorosos com a ferramenta de depuração consolida a confiabilidade das entregas, garantindo que as regras de negócio atendam às demandas do setor de Recursos Humanos com precisão.


Módulo 16: GERADOR DE RELATÓRIOS SENIOR HCM: CONTROLE DE FLUXO COM EVENTOS, SELEÇÃO E CANCELAMENTO


O desenvolvimento de modelos no Gerador de Relatórios do Senior HCM exige compreensão aprofundada sobre a ordem de execução do motor de relatórios. O disparo sequencial de instruções governa desde a coleta de filtros iniciais até a renderização visual de cada componente em tela.

Ao manipular eventos no nível de modelo, seção ou controle, o desenvolvedor obtém controle cirúrgico sobre a validação de dados e a performance da extração. Isso possibilita incluir lógicas complexas sem sobrecarregar desnecessariamente a camada de relacionamentos visuais.

Neste artigo, serão detalhados os papéis dos eventos de modelo e de seção, a diferença entre funções globais e locais, a validação condicional via cursores na seleção e o cancelamento programado de registros.

HIERARQUIA E NÍVEIS DE EVENTOS NO GERADOR

O motor do Gerador de Relatórios distribui os gatilhos de execução em três camadas distintas: modelo geral, seções e campos individuais. Cada elemento possui propriedades e eventos específicos que determinam quando o código compilado entrará em ação.

Divisão da estrutura de eventos:

- Eventos de modelo: definem o ciclo de vida global do relatório, englobando a filtragem, seleção e encerramento.
- Eventos de seção: disparam ações imediatamente antes ou depois da montagem de cabeçalhos, detalhes e rodapés.
- Eventos de controles: atuam na renderização do campo, controlando formatações e atribuições visuais no momento exato da impressão.

Compreender essa hierarquia evita a escrita de regras em pontos tardios ou redundantes do processamento.

EVENTOS DO MODELO: PRÉ-SELEÇÃO, SELEÇÃO E INICIALIZAÇÃO

As propriedades do modelo gerador concentram eventos estratégicos que antecedem a impressão das linhas de detalhe. Saber onde posicionar a lógica reduz o tempo de resposta e otimiza o uso de memória.

Comportamento dos principais eventos de modelo:

- Pré-Seleção: executado antes da busca de dados da tabela principal, ideal para preparar estruturas e parâmetros.
- Seleção: disparado a cada registro avaliado pelo cursor primário, antes da impressão da linha correspondente.
- Inicialização: evento acionado na carga do relatório, indicado para instanciar variáveis que manterão valor constante.
- Finalização: processado após a última página impressa, útil para fechamento de conexões ou totalizações finais.
- Imprimir Página: chamado na virada de cada página, permitindo controle de cabeçalhos ou contadores de página.

A escolha precisa entre esses momentos previne cálculos desnecessários dentro de laços repetitivos.

EVENTOS DE SEÇÕES E CONTROLES VISUAIS

Diferente do modelo geral, as seções e seus respectivos campos contam com gatilhos diretamente voltados à diagramação visual. Cada seção suporta eventos de pré e pós-renderização.

Distinções práticas entre os eventos:

- Antes de Imprimir (Seção): momento propício para verificar se a seção deve ser suprimida ou se suas variáveis precisam de ajuste.
- Depois de Imprimir (Seção): utilizado para incrementar totalizadores ou acionar seções adicionais encadeadas.
- Na Impressão (Controle): evento do próprio campo, voltado à formatação de cores, máscaras e valores literais.

Essa separação garante que a lógica de apresentação não interfira nas regras de cálculo e extração da base.

CONSULTAS VIA CURSOR NO EVENTO SELEÇÃO

Nem sempre é vantajoso vincular tabelas auxiliares diretamente no assistente de relacionamentos do gerador. Em cenários de validação condicional, a abertura de cursores dentro do evento Seleção confere autonomia total.

Benefícios da abordagem via cursor na seleção:

- Independência do modelo de dados: permite consultar tabelas adicionais sem alterar as junções estruturais do relatório.
- Economia de recursos: a leitura da tabela complementar ocorre apenas para os registros que atendem aos critérios de busca.
- Tratamento preventivo: possibilita inspecionar campos da tabela complementar antes de enviar o registro para a seção de detalhe.

Essa técnica assegura flexibilidade arquitetural quando o modelo trabalha com tabelas desnormalizadas ou complementos cadastrais.

CANCELAMENTO CONDICIONAL DE REGISTROS COM CANCEL

O controle de registros impressos pode ser administrado pela função Cancel, suprimindo colaboradores ou lançamentos que não cumprem os requisitos estabelecidos na tela de entrada do relatório.

Aplicações do comando de cancelamento:

- Filtragem por parâmetro de tela: exibição exclusiva de registros com ou sem determinada informação cadastral.
- Supressão de linhas em branco: cancelamento da impressão de colaboradores que não possuem endereço eletrônico ou histórico ativo.
- Controle granular: aplicação do cancelamento dentro do detalhe para evitar o avanço indevido de contadores de linha.

O descarte preventivo de registros simplifica o leiaute e mantém o relatório alinhado com a solicitação do usuário.

ESCOPO DE REGRAS E USO DE FUNÇÕES GLOBAIS

A reutilização de código é uma boa prática mandatória no Senior HCM. Regras implementadas dentro de uma seção específica ficam restritas ao escopo daquele componente.

Vantagens da centralização em funções globais:

- Acesso universal: rotinas declaradas no evento Funções Globais podem ser invocadas por qualquer seção ou controle do modelo.
- Facilidade de manutenção: alterações na regra refletem automaticamente em todos os pontos de chamada.
- Limpeza do código: o código das seções permanece conciso, voltado exclusivamente à atribuição e formatação dos dados.

Ao adotar funções globais, o desenvolvedor evita duplicação de lógica e facilita a rastreabilidade de erros.

DEPURAÇÃO E GESTÃO DE TRACE COM O ATALHO CTRL+E

Durante a fase de desenvolvimento, localizar regras espalhadas pelas diversas seções do modelo pode ser desafiador. O Gerador de Relatórios oferece a janela de eventos consolidados por meio do atalho de teclado Ctrl+E.

Funcionalidades do painel de eventos:

- Visão unificada: lista todos os eventos do modelo, seções e campos que contêm código-fonte implementado.
- Ativação de Debug: permite habilitar ou desabilitar o trace individualmente ou em lote para depuração em tempo real.
- Navegação rápida: acesso direto ao editor do evento selecionado sem a necessidade de navegar pela árvore de propriedades.

O uso consciente do depurador acelera a correção de falhas de lógica antes do envio do relatório para o ambiente de produção.

Veja como esse conteúdo foi abordado na aula:

EXEMPLO PRÁTICO: FILTRO CONDICIONAL DE COLABORADORES POR EXISTÊNCIA DE E-MAIL

Siga os passos abaixo para configurar uma validação via cursor no evento Seleção e aplicar cancelamento de registros com base em parâmetro de entrada:

1. Acesse o Gerador de Relatórios e abra o modelo baseado na tabela de Histórico de Cargos (R038HCA) ou Colaboradores (R034FUN).
2. Crie uma variável de tela do tipo lista de valores para filtrar a emissão de e-mail com as opções: Todos, Sim e Não.
3. Acesse as propriedades do modelo gerador e abra o evento Seleção.
4. Declare uma variável numérica de controle e o cursor apontando para a tabela de Complemento do Colaborador (R034CPL).
5. Monte a instrução SQL buscando o campo EmaPar filtrando por empresa e cadastro do registro corrente.
6. Abra o cursor, execute a leitura condicional e teste se o campo de e-mail possui conteúdo diferente de branco.
7. Caso encontre e-mail preenchido, atribua o valor 1 à variável de controle; caso contrário, atribua 0.
8. Feche o cursor imediatamente após a validação.
9. Na seção de detalhe, insira a verificação do parâmetro de tela comparando com a variável de controle calculada.
10. Se o parâmetro for Sim e o colaborador não possuir e-mail, execute a instrução Cancel(2) para suprimir a linha.
11. Se o parâmetro for Não e o colaborador possuir e-mail, execute igualmente o comando Cancel(2).
12. Utilize o atalho Ctrl+E para validar os pontos com código implementado e execute o relatório para homologação.

CONSIDERAÇÕES FINAIS

O domínio dos eventos no Gerador de Relatórios do Senior HCM transforma modelos estáticos em ferramentas analíticas robustas e dinâmicas. Saber em qual momento do ciclo de vida executar cada instrução impacta diretamente na estabilidade da extração.

A aplicação de cursores dedicados no evento de Seleção combinada à supressão via comando Cancel confere flexibilidade sem complexidade excessiva nos diagramas de junção.

Adotar práticas consistentes de organização, como o uso de funções globais e a depuração direcionada, garante que os relatórios atendam com agilidade às demandas operacionais e estratégicas da organização.


Módulo 17: GERADOR DE RELATÓRIOS SENIOR HCM: PRÉ-SELEÇÃO E MANIPULAÇÃO DINÂMICA DE SQL


A flexibilidade na emissão de relatórios no Senior HCM está diretamente ligada à capacidade de ajustar as instruções de consulta conforme as necessidades operacionais. Em vez de desenvolver modelos estáticos redundantes, a manipulação dinâmica de SQL permite parametrizar critérios de seleção, ordenação e exibição em um único arquivo.

No ambiente corporativo, os usuários frequentemente solicitam variações do mesmo leiaute, como incluir ou suprimir valores salariais, listar dependentes ou filtrar períodos retroativos específicos. Atender a essas demandas exige o domínio das funções de manipulação de cláusulas e a integração precisa de cursores em regras LSP.

Neste artigo, são detalhadas as melhores práticas para inserção dinâmica de critérios WHERE, ordenação programada, controle de seções adicionais com múltiplos registros e otimização de performance no Gerador de Relatórios.

CONCEITO DE PRÉ-SELEÇÃO E SQL DINÂMICO NO GERADOR

A pré-seleção consiste no momento de inicialização em que os parâmetros fornecidos pelo usuário são interpretados para compor a instrução SQL base do relatório. Essa técnica assegura que apenas os dados pertinentes sejam transferidos do banco de dados para a memória da aplicação.

Aplicações estratégicas do SQL dinâmico:

- Filtragem flexível de períodos: aplicação de intervalos de datas retroativas sem fixar valores estáticos no modelo.
- Segmentação sob demanda: inclusão de cláusulas baseadas em parâmetros como tipo de colaborador, situação ou filial.
- Redução de tráfego de rede: garantia de que a consulta execute filtros diretamente no motor do banco de dados.

Essa abordagem evita que o relatório processe registros desnecessários em memória, acelerando o tempo de resposta geral.

MANIPULAÇÃO DE CLÁUSULAS WHERE E ORDENAÇÃO

O Gerador de Relatórios disponibiliza funções nativas para intervir na estrutura original da consulta, como a inserção de filtros na cláusula WHERE e a definição dinâmica de ORDER BY. Embora a ordenação visual possa ser configurada nas propriedades do modelo, a manipulação via script oferece controle condicional avançado.

Principais aspectos da manipulação de cláusulas:

- Função InsClausWhere: injeta condições booleanas adicionais diretamente no comando SELECT principal.
- Tratamento de tipos de dados: necessidade de conversão explícita de variáveis de data para formatos alfanuméricos aceitos pelo banco.
- Controle de ordenação: a parametrização de cláusulas ORDER BY deve ser mantida com exclusividade na regra ou na interface, evitando duplicidades de instrução.

A concatenação cuidadosa dos filtros impede falhas de sintaxe e garante a integridade dos dados extraídos.

EXTRAÇÃO DE REGISTROS MÚLTIPLOS COM CURSORES PROGRAMADOS

Quando um colaborador possui múltiplos registros vinculados em tabelas secundárias, como o histórico de dependentes (R056DEP), a criação de cursores manuais em regras de seção confere total controle sobre o fluxo de leitura.

Estrutura padrão de processamento de cursor:

- Definição e abertura: declaração do cursor parametrizado com a chave estrangeira do registro atual da seção de detalhe.
- Laço de repetição com enquanto: iteração contínua baseada no estado de localização do cursor para ler todos os dependentes.
- Avanço explícito: invocação mandatória da instrução de próximo registro para evitar laços infinitos de execução.
- Fechamento imediato: encerramento formal do cursor após a iteração para liberar recursos do servidor.

Esse mecanismo viabiliza a impressão sequencial de tabelas filho sem a complexidade de criar múltiplas seções de detalhe nativas.

CONTROLE DE IMPRESSÃO VIA SEÇÕES ADICIONAIS E LISTASECAO

Para imprimir os registros recuperados via cursor sem misturá-los visualmente à linha principal, utilizam-se seções do tipo Adicional. O acionamento visual dessas seções ocorre de maneira programada a partir da regra da seção de detalhe.

Benefícios da gestão via ListaSecao:

- Disparo sob demanda: a seção adicional é renderizada a cada iteração do laço apenas se houver registros válidos.
- Isolamento de leiaute: permite definir formatações visuais, cores e alinhamentos específicos para dados secundários.
- Padronização de variáveis: os campos da seção adicional vinculam-se a variáveis globais alimentadas pelo cursor.

Essa segmentação resulta em relatórios mais legíveis e com hierarquia visual clara entre colaboradores e dependentes.

OTIMIZAÇÃO DE PERFORMANCE E EXECUÇÃO CONDICIONAL DE REGRAS

Um erro comum na criação de relatórios consiste em consultar o banco de dados mesmo quando o usuário opta por ocultar a informação. A regra de negócio deve condicionar a própria abertura do cursor aos parâmetros selecionados na tela inicial.

Diretrizes para otimizar o processamento:

- Validação prévia de parâmetros: verificar se o usuário solicitou dependentes ou endereços antes de executar o comando SELECT.
- Supressão de consultas inúteis: se o parâmetro indicar supressão, o fluxo da regra deve desviar do cursor.
- Limpeza preventiva de variáveis: inicializar as variáveis alfanuméricas com valores em branco antes de cada ciclo.

Essa arquitetura de código economiza requisições desnecessárias ao banco de dados e acelera significativamente a geração de grandes volumes.

OCULTAÇÃO DINÂMICA DE CAMPOS E CABEÇALHOS COM CANCEL

Em modelos multifuncionais, determinadas colunas não devem ser exibidas para perfis específicos de usuários, como a remuneração atual de colaboradores. O controle de visibilidade deve abranger tanto o campo de valor quanto o respectivo rótulo de cabeçalho.

Boas práticas para cancelamento de campos:

- Aplicação da função Cancel: executar o cancelamento do objeto no evento do próprio campo quando a condição for atendida.
- Alinhamento de cabeçalhos: replicar a lógica de supressão no cabeçalho correspondente para evitar colunas com títulos sem conteúdo.
- Identificação clara de objetos: nomear componentes visuais e variáveis de maneira intuitiva para simplificar a manutenção.

Esse procedimento garante a confidencialidade das informações salariais e preserva o alinhamento estético do documento.

DEPURAÇÃO E DIAGNÓSTICO DE REGRAS COM BREAKPOINTS

O depurador integrado do Gerador de Relatórios é um recurso indispensável para diagnosticar comportamentos inesperados em regras complexas. A inserção de pontos de interrupção (breakpoints) permite monitorar o fluxo da regra linha por linha.

Vantagens da utilização do depurador:

- Inspeção de variáveis em tempo real: acompanhamento do conteúdo atribuído aos campos alfa e numéricos a cada ciclo.
- Identificação de falhas lógicas: verificação imediata de condições estruturais que não estejam retornando o resultado esperado.
- Análise de chamadas de seção: confirmação de que os comandos ListaSecao e Cancel estão atuando nos momentos corretos.

A depuração sistemática acelera a entrega de modelos confiáveis e previne falhas em ambiente de produção.

Veja como esse conteúdo foi abordado na aula:

EXEMPLO PRÁTICO: CRIAÇÃO DE RELATÓRIO DINÂMICO COM SEÇÕES E FILTROS CONDICIONAIS

Siga os passos abaixo para configurar filtros dinâmicos, extrair múltiplos dependentes com cursores e controlar a visibilidade de colunas:

1. Acesse o Gerador de Relatórios e estruture o modelo base com a tabela de Colaboradores (R034FUN).
2. Crie uma tela de entrada com as variáveis de entrada: eDataIni, eDataFim, eQualCpo (Todos, Endereço ou Dependentes) e eEmiSal (Sim ou Não).
3. No evento de pré-seleção, monte a cláusula de filtro por período e adicione-a à consulta principal por meio da função InsClausWhere.
4. No leiaute visual, crie duas seções do tipo Adicional e renomeie-as para AdicionalDep e AdicionalEnd.
5. Na regra da seção de detalhe, declare as variáveis alfanuméricas de apoio e os cursores para as tabelas R056DEP e R034CPL.
6. Implemente um teste condicional avaliando se a variável eQualCpo contempla dependentes; em caso positivo, abra o cursor de dependentes.
7. Dentro da iteração do cursor (enquanto), atribua o nome do dependente à variável de tela e invoque ListaSecao para renderizar AdicionalDep.
8. Feche o cursor de dependentes ao final do laço para liberar os recursos do banco de dados.
9. Implemente a validação condicional para endereço; se requisitado em eQualCpo, abra o cursor R034CPL, alimente o endereço e liste AdicionalEnd.
10. No evento do campo de salário e no rótulo correspondente no cabeçalho, adicione a regra cancelando a impressão caso eEmiSal seja igual a Não.
11. Execute o modelo, aplique breakpoints para inspecionar os valores e confirme se os dados secundários e colunas obedecem às escolhas informadas.

CONSIDERAÇÕES FINAIS

A manipulação de comandos SQL e cursores no Gerador de Relatórios eleva a capacidade analítica do Senior HCM, permitindo consolidar múltiplos cenários de visualização em um único leiaute dinâmico.

O uso criterioso de validações lógicas antes de abrir cursores minimiza o consumo de processamento, assegurando que o sistema opere com máxima agilidade mesmo sob grandes volumes cadastrais.

Ao aliar o controle programado de seções à supressão pontual de dados com a função Cancel, desenvolvedores e consultores entregam soluções elegantes, seguras e de fácil manutenção para as equipes de gestão de pessoas.


Módulo 18: GERADOR DE RELATÓRIOS SENIOR HCM: CONSULTAS SQL, HISTÓRICOS E SEÇÕES ADICIONAIS


A elaboração de relatórios analíticos de alta complexidade no Senior HCM requer a correta articulação entre os componentes estruturais do leiaute e a escrita de instruções SQL otimizadas. Cenários que demandam consolidação de informações cadastrais com múltiplos históricos exigem escolhas arquiteturais criteriosas.

A depender da volumetria e dos requisitos de apresentação, o desenvolvedor pode optar pelo encadeamento nativo de seções de detalhe ou pelo controle manual via código LSP com cursores e seções adicionais. Compreender o funcionamento interno dessas abordagens é fundamental para garantir a acurácia dos dados e a performance do banco.

Neste artigo, serão detalhadas as principais técnicas para extração de múltiplos históricos de colaboradores, estratégias de amarração relacional para evitar travamentos, criação de campos calculados e validação de comandos SQL diretamente no CBDS.

ESTRUTURAÇÃO NATIVA COM MÚLTIPLAS SEÇÕES DE DETALHE

O Gerador de Relatórios permite vincular diferentes seções de detalhe a uma tabela principal de colaboradores (R034FUN), configurando o modelo no modo Mestre/Detalhe. Essa técnica facilita a exibição paralela de dependentes (R036DEP), históricos de centro de custo (R038HCC) e históricos salariais (R038HSA).

Requisitos para a parametrização de múltiplos detalhes nativos:

- Definição do relatório mestre: a seção de detalhe principal deve ser declarada como mestre da estrutura.
- Amarração de dependência: as seções filhas devem apontar diretamente para a seção principal de colaboradores.
- Controle de sessões vazias: a propriedade de impressão de seção vazia deve ser avaliada para evitar a omissão involuntária de registros sem filhos.
- Mapeamento explícito de chaves: os campos de ligação entre as tabelas devem constar nos relacionamentos visuais.

Essa modalidade acelera a montagem visual, mas exige atenção redobrada aos relacionamentos para não gerar inconsistências de dados.

PREVENÇÃO DE PRODUTOS CARTESIANOS E TRAVAMENTOS

Um dos problemas operacionais mais severos no gerador decorre da ausência de relacionamento explícito entre seções filhas e a tabela mestre. Caso os vínculos por número de empresa e cadastro não estejam consolidados, o banco executa um produto cartesiano.

Impactos de falhas de relacionamento na execução:

- Multiplicação indevida de linhas: registros de um colaborador repetem informações de toda a base corporativa.
- Sobrecarga de memória e travamento: a geração atinge volumes exponenciais de linhas, paralisando a estação de trabalho.
- Lentidão no processamento: consultas simples passam a demandar minutos ou horas de tráfego de rede desnecessário.

A conferência sistemática das cláusulas de junção no assistente de relacionamentos é indispensável antes de testar qualquer modelo em bases produtivas.

CONTROLE MANUAL DE HISTÓRICOS COM SEÇÕES ADICIONAIS E CURSORES

Quando o relatório exige lógica complexa de filtragem ou disparos condicionais de impressão, a abordagem manual por seções do tipo Adicional e cursores SQL programados oferece total controle ao desenvolvedor.

Passos operacionais para uso de seções adicionais:

- Declaração de cursores específicos: definição de um cursor para cada entidade secundária a ser consultada.
- Execução de laços de repetição: uso da estrutura Enquanto para iterar sobre os registros encontrados pelo cursor.
- Disparo pontual de impressão: execução da função ListaSecao a cada ciclo válido do laço de repetição.
- Avanço explícito do ponteiro: chamada mandatória do comando de próximo registro do cursor para evitar laços infinitos.

Embora exija maior esforço de codificação em regras LSP, esse modelo confere flexibilidade na formatação e na seleção de registros intermediários.

FILTRAGEM TEMPORAL E CLÁUSULAS SQL DINÂMICAS

Na recuperação de tabelas históricas, é comum delimitar os registros a um intervalo de competência definido na tela de entrada do relatório. A correta manipulação de datas de alteração assegura que apenas o estado vigente na data base seja considerado.

Boas práticas na composição de cláusulas temporais:

- Uso da data final de abrangência: a comparação de menor ou igual deve incidir sobre a data final informada pelo usuário.
- Interpolação na cláusula WHERE: inclusão das restrições de período nas regras de montagem dinâmica de SQL.
- Ordenação cronológica reversa: aplicação da cláusula ORDER BY na data de alteração de forma decrescente para capturar a vigência mais recente.

Esses filtros garantem que variações históricas não interfiram no fechamento de indicadores em datas de corte retroativas.

CAMPOS CALCULADOS E ORDEM DE EXECUÇÃO EM REGRAS

A inclusão de indicadores analíticos, a exemplo do tempo de permanência de um colaborador em um determinado centro de custo ou faixa salarial, requer a criação de campos calculados por meio de expressões de subtração de datas.

Aspectos críticos na programação de campos calculados:

- Precedência de processamento: os cálculos devem ser executados na regra antes da impressão da seção correspondente.
- Tratamento de estouro de máscara: campos com representação numérica devem prever máscaras adequadas para evitar truncamentos visuais.
- Inicialização preventiva: limpeza de variáveis calculadas a cada leitura para evitar retenção de valores do registro anterior.

A inversão entre o momento de atribuição da variável e o disparo da seção é uma das falhas mais comuns no desenvolvimento de regras.

VALIDAÇÃO DE SCRIPTS NO CBDS (CENTRAL DE BANCO DE DADOS SENIOR)

Para certificar a integridade do comando gerado pelo relatório e analisar o comportamento dos filtros, a ferramenta CBDS permite isolar a consulta e executá-la nativamente contra o banco de dados.

Diretrizes para validação externa no CBDS:

- Extração do script do relatório: cópia da instrução SQL montada internamente pelo gerador para a área de teste.
- Adequação de literais de data: ajuste dos padrões de data de acordo com o SGBD utilizado, atentando para sintaxes que exigem meses por extenso.
- Verificação do plano de execução: conferência das chaves primárias e índices utilizados nas junções das tabelas.
- Inspeção das linhas retornadas: validação da consistência dos códigos cadastrais frente aos parâmetros de filtro aplicados.

A análise prévia no CBDS reduz sensivelmente o tempo de diagnóstico de lentidões e divergências nos valores reportados.

Veja como esse conteúdo foi abordado na aula:

EXEMPLO PRÁTICO: MONTAGEM DE FICHA CADASTRAL COM HISTÓRICOS VIA CURSOR

Siga os passos abaixo para construir um relatório que liste colaboradores e seus respectivos dependentes e centros de custo utilizando cursores em seções adicionais:

1. Acesse o Gerador de Relatórios e crie um novo modelo associado à tabela principal R034FUN na seção de detalhe.
2. Adicione os campos cadastrais essenciais na seção de detalhe, como código da empresa, tipo de atuação, cadastro e nome do colaborador.
3. Crie duas seções do tipo Adicional no modelo, nomeando-as como AdicionalCCU (centro de custo) e AdicionalDep (dependentes).
4. Configure a propriedade de impressão das seções adicionais como verdadeira e posicione as variáveis de exibição em seus leiautes.
5. Na regra associada à seção de detalhe, declare os cursores correspondentes às tabelas R038HCC e R036DEP.
6. Estruture o comando SELECT do cursor de centros de custo filtrando por NumEmp, TipCol e NumCad iguais aos do colaborador atual, ordenando por DatAlt.
7. Abra o cursor e implemente um laço Enquanto que capture os dados, calcule os dias de permanência e execute o comando ListaSecao para a seção AdicionalCCU.
8. Certifique-se de invocar a leitura do próximo registro do cursor antes de encerrar o laço de repetição.
9. Feche o cursor de centro de custo e repita a lógica de abertura, leitura e comando ListaSecao para a tabela de dependentes.
10. Compile o modelo com a tecla de atalho de validação de sintaxe e execute o teste filtrando por um único colaborador para depuração.
11. Verifique se as quebras e valores foram impressos ordenadamente e valide o script resultante diretamente no CBDS.

CONSIDERAÇÕES FINAIS

O domínio conjunto das funcionalidades visuais do Gerador de Relatórios e da programação LSP permite que o especialista em Senior HCM atenda a requisitos complexos de extração sem comprometer a estabilidade do sistema. A escolha entre estruturas nativas Mestre/Detalhe e cursores programados depende diretamente das necessidades do projeto.

A atenção rigorosa aos relacionamentos entre chaves cadastrais é a melhor garantia contra travamentos de ambiente provocados por consultas mal formadas. Relatórios com múltiplos históricos exigem planejamento minucioso de índices e condições de filtro.

Por fim, a utilização do CBDS como ferramenta de apoio à homologação de scripts acelera a identificação de gargalos de banco e inconsistências de dados, conferindo robustez técnica às entregas corporativas de RH.


Módulo 19: GERADOR DE RELATÓRIOS SENIOR HCM: MODELOS MESTRE-DETALHE E AGRUPAMENTO SQL AVANÇADO


A consolidação de dados cadastrais e históricos em um único demonstrativo é uma demanda recorrente nas rotinas de Recursos Humanos. No Senior HCM, o Gerador de Relatórios disponibiliza recursos nativos para apresentar dados hierárquicos e estruturas de relacionamento do tipo mestre-detalhe de maneira automatizada.

Cenários complexos envolvem relacionar a ficha cadastral do colaborador com múltiplas tabelas subordinadas, a exemplo de dependentes, históricos de salários, históricos de centros de custo e afastamentos. Nesses casos, a arquitetura do relatório exige parametrizações precisas para evitar duplicidade de registros e impactos de performance.

Neste artigo, serão abordados os fundamentos dos modelos mestre-detalhe, o controle da ordem de execução de seções, as diferenças de relacionamento em tabelas históricas e as técnicas de agrupamento com funções avançadas de SQL em regras LSP.

CONCEITO E APLICAÇÃO DE ESTRUTURAS MESTRE-DETALHE

O modelo mestre-detalhe é empregado quando existe uma relação de um para muitos entre a entidade principal e as informações associadas. Na gestão de pessoas, o cadastro do colaborador atua tipicamente como registro mestre, enquanto dependentes e movimentações contratuais formam as linhas de detalhe.

Principais características da arquitetura mestre-detalhe:

- Centralização cadastral: a seção mestre processa as informações singulares do colaborador uma única vez.
- Multiplicidade subordinada: as seções de detalhe iteram sobre todos os registros filhos vinculados à chave do registro pai.
- Independência estrutural: cada detalhe pode exibir colunas e formatos visuais distintos sem interferir no cabeçalho.
- Otimização do processamento: o motor do gerador filtra automaticamente as linhas subordinadas correspondentes à chave corrente.

Essa segmentação impede a repetição redundante dos dados cadastrais a cada nova linha de histórico.

CONFIGURAÇÃO DE MÚLTIPLOS DETALHES E PROPRIEDADE DE ORDEM

Um único modelo de relatório pode incorporar múltiplos blocos de detalhe associados ao mesmo registro principal. É possível listar sucessivamente dependentes, alterações salariais e transferências de centro de custo sob o mesmo colaborador.

Para coordenar a sequência de impressão visual dessas seções, o Gerador de Relatórios disponibiliza a propriedade de ordenação entre os detalhes.

Diretrizes para configuração da sequência de seções:

- Sequenciamento numérico: atribuição manual dos índices de ordem (1, 2, 3) nas propriedades de cada seção de detalhe.
- Padronização de identificadores: nomeação clara das seções conforme a entidade de origem para facilitar a manutenção.
- Tratamento de ausência de registros: quando um colaborador não possui dependentes cadastrados, o gerador avança diretamente para a próxima seção ordenada.
- Alinhamento de leiaute: manutenção do padrão visual e largura de colunas para garantir legibilidade entre os blocos.

A correta definição da ordem assegura uma leitura cronológica e padronizada das informações contratuais.

RELACIONAMENTO ENTRE TABELAS CADASTRAIS E DE HISTÓRICO

O comportamento dos relacionamentos varia conforme a natureza da tabela subordinada. Tabelas cadastrais estáticas, como dependentes (R036DEP), contam com junções automáticas gerenciadas com estabilidade pelo gerador quando o modelo é configurado no tipo Mestre-Detalhe.

Por outro lado, tabelas de histórico contínuo, a exemplo de salários (R038HSA) e centros de custo (R038HCC), exigem atenção redobrada na parametrização dos vínculos de chave primária.

Riscos na ausência de relacionamentos explícitos:

- Duplicação de registros: ocorrência de produtos cartesianos gerando repetições indevidas do nome do colaborador.
- Inconsistência temporal: apresentação de históricos pertencentes a outros contratos ou empresas ativas.
- Degradação de desempenho: execução de varreduras completas no banco de dados sem os devidos filtros de junção.

A validação criteriosa dos relacionamentos das tabelas históricas no assistente gráfico é indispensável para a integridade dos dados extraídos.

MESTRE-DETALHE NATIVO VERSUS SEÇÕES ADICIONAIS MANUAIS

Existem duas abordagens consolidadas para construir relatórios com múltiplos níveis no ecossistema Senior: o uso do tipo nativo Mestre-Detalhe ou a manipulação manual com seções do tipo Adicional em modelos Padrão.

A escolha da metodologia depende do nível de customização lógica exigido pelo relatório corporativo.

Comparativo entre as abordagens:

- Modelo nativo Mestre-Detalhe: configuração ágil via assistente visual, controle simplificado de ordenação e baixo volume de código LSP.
- Modelo com Seções Adicionais: controle manual do fluxo de impressão via função ListaSecao, exigindo programação explícita de cursores.
- Flexibilidade de filtros: seções adicionais permitem aplicar regras condicionais complexas antes do disparo da impressão.
- Custo de manutenção: o controle programático manual demanda mais testes operacionais para evitar erros lógicos de fechamento.

Para relatórios puramente listativos, o modelo nativo proporciona maior produtividade e menor esforço de suporte.

LIMITAÇÕES DE GROUP BY EM CURSORES TRADICIONAIS LSP

Na elaboração de regras personalizadas, a instrução básica Definir Cursor apresenta restrições para instruções SQL que utilizam cláusulas de agregação como GROUP BY e COUNT. Tentativas de compilar consultas agregadas nessa estrutura resultam em erros de sintaxe no gerador.

Diante dessa limitação, desenvolvedores costumam recorrer à lógica algorítmica de acumulação manual, monitorando a quebra de registros com laços de repetição ordenados por ORDER BY. Contudo, essa prática aumenta o tamanho do código e a complexidade de validação do encerramento de arquivos.

MANIPULAÇÃO AVANÇADA DE DADOS COM A API SQL DA SENIOR

Para executar agrupamentos e comandos analíticos diretamente no banco de dados, a Senior disponibiliza uma API avançada de funções SQL em regras LSP. Esse conjunto de funções permite criar cursores dinâmicos com suporte pleno a instruções SQL complexas.

Funções essenciais da API avançada de SQL:

- SQL_Criar e SQL_Destruir: alocação e liberação obrigatória do identificador do cursor na memória da aplicação.
- SQL_DefinirComando: atribuição do comando SELECT contendo filtros, junções e funções agregadoras como GROUP BY.
- SQL_DefinirInteiro, Alfa e Data: parametrização dinâmica de variáveis vinculadas às cláusulas WHERE da consulta.
- SQL_AbrirCursor e SQL_FecharCursor: controle pontual de inicialização e finalização da extração de dados.
- SQL_EOF: validação de encerramento de leitura de registros no laço de repetição enquanto.
- SQL_RetornarInteiro e RetornarAlfa: captura dos resultados processados para variáveis do relatório.

A correta aplicação da chamada SQL_Destruir é imprescindível para prevenir retenção de memória e sobrecarga do servidor corporativo.

Veja como esse conteúdo foi abordado na aula:

EXEMPLO PRÁTICO: TOTALIZAÇÃO DE AFASTAMENTOS POR SITUAÇÃO VIA SQL AVANÇADO

Siga os passos abaixo para configurar um agrupamento de afastamentos por colaborador utilizando a API avançada de cursores SQL em uma regra LSP:

1. Abra o Gerador de Relatórios e acesse as regras associadas à seção que fará a emissão dos totais consolidados.
2. Declare as variáveis alfanuméricas aSelect e aCursor, além das variáveis numéricas para código de situação e contagem total.
3. Inicialize o recurso chamando a função SQL_Criar(aCursor) para instanciar o cursor na memória.
4. Configure as diretrizes do cursor invocando SQL_UsarAbrangencia(aCursor, 0) e SQL_UsarSQLSenior2(aCursor, 0).
5. Monte a instrução SQL na variável aSelect, aplicando SELECT SitAfa, COUNT(*) FROM R038AFA filtrando por empresa, tipo e cadastro, agrupando com GROUP BY SitAfa.
6. Associe a consulta ao cursor por meio da função SQL_DefinirComando(aCursor, aSelect).
7. Vincule os parâmetros da consulta utilizando SQL_DefinirInteiro para passar o número da empresa, tipo e cadastro do colaborador corrente.
8. Execute a abertura do cursor com a instrução SQL_AbrirCursor(aCursor).
9. Crie uma estrutura de repetição com enquanto (SQL_EOF(aCursor) = 0) para processar os registros localizados.
10. Dentro do laço, recupere os campos processados por meio de SQL_RetornarInteiro para código da situação e quantidade total.
11. Imprima a seção correspondente e avance o ponteiro do cursor com o comando SQL_Proximo(aCursor).
12. Ao término do laço, finalize o recurso executando sequencialmente SQL_FecharCursor(aCursor) e SQL_Destruir(aCursor).

CONSIDERAÇÕES FINAIS

A flexibilidade do Gerador de Relatórios do Senior HCM permite atender desde listagens operacionais rotineiras até demonstrativos analíticos de alta complexidade. Compreender o funcionamento do modelo nativo mestre-detalhe confere agilidade no desenvolvimento de consultas hierárquicas com múltiplos históricos.

Paralelamente, o domínio da API avançada de SQL em regras LSP supera as limitações dos cursores tradicionais, viabilizando agrupamentos e totalizações executados diretamente pelo mecanismo do banco de dados com alto rendimento.

Adotar boas práticas de desalocação de recursos e validar rigorosamente os relacionamentos de tabelas históricas garante relatórios confiáveis, preservando a performance do ambiente produtivo.


Módulo 20: GERADOR DE RELATÓRIOS SENIOR HCM: SEÇÕES ADICIONAIS E PROCESSAMENTO DE INFORMAÇÕES COMPLEMENTARES


A geração de relatórios cadastrais detalhados no Senior HCM demanda técnicas capazes de articular a entidade principal do colaborador com múltiplos históricos complementares. Em cenários reais de gestão de pessoas, é frequente a necessidade de listar dependentes, alterações salariais, transferências de centro de custo e trocas de escala sob uma mesma ficha funcional.

Nesse contexto, a utilização de seções adicionais desponta como recurso fundamental para renderizar tabelas secundárias sob demanda. Quando associadas a comandos de controle visual e regras programadas em LSP, essas seções conferem flexibilidade total sobre a paginação e o formato das informações.

Neste artigo, serão detalhados o conceito de seções adicionais, o papel dos eventos de impressão, a criação de cabeçalhos dinâmicos com controle de exibição única e as abordagens para centralizar ou modularizar rotinas de regras de negócio.

CONCEITO E APLICAÇÃO DE SEÇÕES ADICIONAIS NO SENIOR HCM

A seção adicional é um componente visual do Gerador de Relatórios concebido para exibir registros que não pertencem ao fluxo linear da seção de detalhe primária. Sua impressão não ocorre de forma contínua e automática, dependendo da invocação explícita via código.

Cenários indicados para o uso de seções adicionais:

- Listagem de dependentes vinculados ao cadastro do colaborador ativo.
- Exibição de históricos com cardinalidade 1 para N, como históricos salariais e de centro de custo.
- Apresentação de apontamentos de escala e jornadas de trabalho armazenadas em tabelas próprias.
- Emissão de notas explicativas e demonstrativos que dependem de condições específicas da regra.

Ao adotar seções adicionais para cada bloco de dados, o desenvolvedor preserva a estrutura da tabela principal (R034FUN) sem sobrecarregar a ordenação básica do modelo.

CONTROLE DO FLUXO DE EXECUÇÃO: EVENTOS ANTES E DEPOIS DE IMPRIMIR

A ordem de renderização visual dos componentes é determinada pelo ponto de disparo da função ListaSecao. Definir o evento correto na seção de detalhe é decisivo para manter a coerência hierárquica do relatório.

Diferenças entre os pontos de disparo:

- Antes de Imprimir: os comandos da regra são processados antes da saída dos campos da seção de detalhe, o que projeta as seções adicionais acima da identificação do colaborador.
- Depois de Imprimir: garante que a identificação principal (matrícula e nome) seja renderizada em primeiro lugar na página, seguida imediatamente pelos blocos de histórico.

Para a composição de fichas funcionais, a execução das chamadas de seções adicionais deve se concentrar no evento Depois de Imprimir, mantendo a leitura lógica do documento.

ESTRUTURAÇÃO DE CABEÇALHOS DEDICADOS PARA DADOS HISTÓRICOS

Ao encadear múltiplos conjuntos de dados complementares, a ausência de separadores visuais prejudica a interpretação das colunas. Para resolver essa limitação, costuma-se criar seções adicionais específicas para atuar como cabeçalhos intermediários.

Boas práticas na criação de cabeçalhos adicionais:

- Nomenclatura padronizada: atribuir prefixos claros aos objetos, identificando a seção do cabeçalho e a seção de detalhamento correspondente.
- Identificação dos rótulos: dispor títulos objetivos para colunas de datas de alteração, códigos de estrutura e valores monetários.
- Alinhamento de colunas: manter as margens e dimensões dos títulos estritamente alinhadas com as variáveis de impressão da seção de dados.
- Diferenciação visual: aplicar molduras suaves ou tons discretos de preenchimento para separar visualmente as categorias de históricos.

Esses cabeçalhos segmentam o layout corporativo, tornando explícita a mudança de contexto entre salários, escalas e encargos de dependentes.

TÉCNICAS DE CONTROLE PARA EMISSÃO ÚNICA DE CABEÇALHO

Um problema recorrente na manipulação de laços com seções adicionais reside na duplicação dos cabeçalhos a cada linha de histórico lida pela consulta SQL. Para evitar a repetição dos títulos para cada item retornado, emprega-se uma variável de controle de estado.

Mecanismo da rotina de controle via flag:

- Inicialização do contador: atribuição do valor zero à variável de controle antes do início do laço de leitura dos registros secundários.
- Teste condicional de impressão: verificação se o valor da flag permanece zerado; caso afirmativo, o cabeçalho é listado e a flag recebe o valor um.
- Supressão subsequente: nos ciclos seguintes do mesmo colaborador, o teste impede nova chamada da seção de cabeçalho.
- Reinicialização de escopo: reinício das variáveis de controle para zero ao concluir o ciclo do colaborador atual.

Esse mecanismo garante que tabelas com dezenas de alterações históricas compartilhem um único cabeçalho introdutório.

CENTRALIZAÇÃO DE REGRAS VERSUS PROCESSAMENTO DISTRIBUÍDO

O desenvolvedor de relatórios pode distribuir as consultas SQL nos eventos de cada seção adicional ou consolidar toda a inteligência de extração na regra de negócio da seção de detalhe principal.

Vantagens da centralização na seção principal:

- Visibilidade unificada: toda a sequência de cursores e comandos SELECT fica concentrada em um único editor de código.
- Facilidade de depuração: identificação ágil de variáveis não declaradas ou falhas de fechamento de cursores com o depurador ativo.
- Rastreamento de dependências: visão linear da ordem de processamento de cada bloco (dependentes, salários, centros de custo e escalas).
- Redução de complexidade visual: dispensa a criação de múltiplas regras fragmentadas espalhadas pelas propriedades de cada subseção.

A concentração lógica na seção principal simplifica auditorias de código e manutenções corretivas em ambientes corporativos.

MODULARIZAÇÃO DE CHAMADAS COM FUNÇÕES NATIVAS EM LSP

Quando o relatório atinge alto grau de complexidade, a repetição sistemática de blocos lógicos pode ser otimizada por meio da declaração de funções de usuário na área de Funções Gerais.

Benefícios da modularização funcional:

- Parâmetros dinâmicos: recepção de identificadores numéricos ou alfanuméricos para selecionar qual cabeçalho deve ser disparado.
- Reutilização de código: consolidação dos testes de validação visual e flags de emissão única em um método reutilizável.
- Tratamento parametrizado: simplificação de chamadas no corpo principal da regra, invocando apenas a função correspondente ao identificador do bloco.

Essa flexibilidade possibilita alternar formatos de saída e incorporar parâmetros de exibição condicional sem reescrever extensas sequências procedurais.

Veja como esse conteúdo foi abordado na aula:

EXEMPLO PRÁTICO: CRIAÇÃO DE SEÇÕES ADICIONAIS COM CABEÇALHO CONDICIONAL PARA HISTÓRICOS DE COLABORADORES

Siga os passos abaixo para configurar seções adicionais vinculadas ao colaborador principal, estruturando cabeçalhos controlados por regra:

1. Abra o modelo de relatório no Gerador de Relatórios e assegure que a tabela de Colaboradores (R034FUN) atue como tabela base na seção de Detalhe.
2. Crie seções do tipo Adicional no layout para os dados complementares, nomeando-as como Adicional_Dep (dependentes), Adicional_Sal (salários), Adicional_CCU (centros de custo) e Adicional_Esc (escalas).
3. Crie seções adicionais de cabeçalho correspondentes, posicionando títulos de colunas descritivos para cada histórico.
4. Na seção de Detalhe principal, acesse o evento Depois de Imprimir e declare os cursores SQL responsáveis pela busca em tabelas como R038HSA e R038HES.
5. Declare variáveis numéricas de controle (flags) no início da regra para administrar a exibição dos cabeçalhos.
6. Monte o laço de leitura do primeiro histórico e insira a condição: caso a flag esteja zerada, dispare a função ListaSecao para o cabeçalho e altere a flag para 1.
7. Dentro do mesmo laço, popule as variáveis visuais com os dados obtidos pelo cursor e invoque a função ListaSecao para a respectiva seção de dados.
8. Feche o cursor do bloco atual e reinicialize a flag de controle para o próximo histórico.
9. Repita o procedimento sequencialmente para os demais históricos complementares.
10. Opcionalmente, declare uma função na guia de Funções Gerais para parametrizar o envio do identificador de cada seção adicional.
11. Execute o relatório no modo de visualização e valide se os cabeçalhos foram impressos estritamente uma única vez antes de seus respectivos registros.

CONSIDERAÇÕES FINAIS

O domínio das seções adicionais no Senior HCM transforma modelos estáticos em ferramentas versáteis de análise cadastral e histórica. A capacidade de articular consultas personalizadas sem perder o vínculo com a entidade central assegura a integridade de relatórios operacionais e gerenciais.

A observância estrita dos eventos de impressão, em especial o disparo posterior ao detalhamento principal, aliada ao controle de cabeçalhos por flags lógicas, assegura um padrão visual elegante e profissional.

Por fim, a decisão entre centralizar regras ou modularizá-las em funções reflete o nível de maturidade do desenvolvimento, permitindo que a equipe técnica entregue soluções de alta manutenibilidade e desempenho dentro do ecossistema Senior.


Módulo 21: GERADOR DE RELATÓRIOS SENIOR HCM: CONTROLE DE FLUXO E CONDIÇÕES DE IMPRESSÃO


No desenvolvimento de soluções analíticas no Senior HCM, a criação de relatórios modulares representa um ganho significativo de produtividade e manutenção. Em vez de construir múltiplos arquivos para atender a demandas semelhantes, a aplicação de filtros de fluxo permite consolidar diversas visões operacionais em um único modelo personalizável.

A gestão eficiente da exibição de seções exige o domínio de variáveis de controle, parâmetros de tela abrangentes e validação de regras de negócio em tempo de execução. Esse mecanismo viabiliza a emissão seletiva de históricos salariais, centros de custo, escalas ou blocos de dependentes com base na escolha do usuário final.

Neste artigo, serão exploradas as melhores práticas para parametrização de fluxo, tratamento de erros em campos do tipo memorando, configuração de propriedades dimensionais e condicionamento de seções via regras LSP.

CONSOLIDAÇÃO MODULAR E FLUXO DINÂMICO

A arquitetura modular visa transformar um relatório cadastral simples em uma ficha completa do colaborador. Por meio do controle de fluxo, o sistema decide dinamicamente quais blocos de dados devem ser processados e exibidos na listagem.

Vantagens da centralização em modelos modulares:

- Redução de manutenção: evita a proliferação de relatórios duplicados na base de dados do sistema.
- Flexibilidade operacional: o usuário seleciona exatamente os blocos necessários para cada rotina de trabalho.
- Padronização visual: unifica cabeçalhos, rodapés e identidades corporativas em uma estrutura única.
- Otimização de desempenho: seções não solicitadas têm seu processamento de dados suprimido.

Essa estratégia eleva a eficiência da equipe técnica e simplifica o menu de opções dos usuários operacionais.

PARAMETRIZAÇÃO VIA TELA DE ENTRADA

O controle seletivo tem início na tela de entrada do relatório, onde parâmetros de controle orientam as decisões das regras de negócio. A criação de campos alfanuméricos com opções predefinidas direciona a filtragem das seções que serão renderizadas.

Práticas recomendadas para configuração de parâmetros:

- Uso de delimitadores claros: atribuir códigos objetivos como 'T' para todos, 'F' para funcionários e 'D' para dependentes.
- Tratamento de caixa alta: aplicar formatação de caracteres em maiúsculo para garantir a validação exata nas expressões lógicas.
- Instruções claras no leiaute: descrever as opções no texto da tela de entrada para evitar seleções ambíguas.
- Valor padrão funcional: definir a opção de emissão geral como padrão para agilizar consultas habituais.

Esses identificadores alimentam as variáveis internas que atuam como gatilhos nas regras das seções.

COMPORTAMENTO DE CAMPOS MEMORANDO E QUEBRAS DE LINHA

A inclusão de cláusulas contratuais e informações descritivas no relatório demanda o uso do componente Memorando. Contudo, a concatenação de textos extensos com funções de retorno de quebra exige cuidados específicos de dimensionamento.

Aspectos técnicos para o uso de memorandos dinâmicos:

- Manipulação de caracteres de controle: funções que injetam saltos de linha devem ser dosadas para não desalinhar a diagramação.
- Propriedade de tamanho automático: o recurso de dimensionamento automático pode causar estouro de página quando associado a quebras forçadas.
- Fixação de dimensões da seção: desativar o ajuste automático em cenários com quebras manuais previne inconsistências de renderização.
- Gestão de limites visuais: monitorar a altura máxima da seção para assegurar que textos complementares caibam na folha sem truncamento.

O ajuste equilibrado entre altura física e quebras programadas assegura legibilidade sem quebra indevida de páginas.

CONDICIONAMENTO DE SEÇÕES COM REGRAS LSP

A supressão ou ativação de blocos ocorre por meio de testes condicionais aplicados nos eventos das seções. As regras verificam o parâmetro de entrada e decidem se a linha deve prosseguir ou ter seu processamento interrompido.

Mecanismos de controle em regras de negócio:

- Testes lógicos encadeados: verificação condicional que avalia se a opção selecionada inclui a seção atual.
- Cancelamento seletivo: invocação de funções de cancelamento de seção caso o critério de impressão não seja satisfeito.
- Disparo sob demanda: uso de comandos de listagem manual para acionar seções adicionais apenas quando houver dados cadastrados.
- Validação de integridade: bloqueio de cabeçalhos intermediários caso os registros dependentes não existam para o colaborador.

Esse encadeamento lógico garante que apenas conteúdos pertinentes cheguem ao documento final impresso ou exportado.

INTEGRAÇÃO DE DADOS COMPLEMENTARES DA TABELA R034CPL

Para consolidar uma visão completa do colaborador, frequentemente é necessário associar a ficha cadastral principal aos registros complementares. A tabela R034CPL contém dados fundamentais como documentação civil e campos de identificação civil.

Diretrizes para inserção de campos complementares:

- Criação de junções seguras: conectar as tabelas R034FUN e R034CPL preservando a integridade das chaves de empresa e cadastro.
- Alinhamento de componentes visuais: padronizar o posicionamento horizontal e vertical de registros de identificação como RG e CPF.
- Tratamento de nulos: assegurar que campos não preenchidos não desestruturem o alinhamento visual dos demais dados.
- Manutenção da ordenação: garantir que os registros complementares respeitem a mesma sequência definida na seção principal de detalhe.

A correta disposição dos campos documentais confere aspecto profissional à ficha cadastral corporativa.

Veja como esse conteúdo foi abordado na aula:

EXEMPLO PRÁTICO: IMPLEMENTAÇÃO DE CONTROLE DE FLUXO E SEÇÃO MEMORANDO

Siga os passos a seguir para estruturar um parâmetro de controle e exibir uma seção adicional descritiva no modelo:

1. Acesse o Gerador de Relatórios e abra o modelo cadastral de colaboradores.
2. Crie uma variável de entrada do tipo alfa denominada EAbrMi para captura da opção de visualização.
3. Configure na tela de entrada as opções disponíveis: 'T' para Todos, 'F' para Ficha Básica, 'D' para Dependentes e 'I' para Informações Complementares.
4. Adicione uma seção do tipo Adicional e insira nela um componente de campo Memorando.
5. Acesse as propriedades do campo Memorando e defina a propriedade de tamanho automático conforme o padrão de quebra estabelecido.
6. Na regra da seção de detalhe, monte uma variável de texto contendo a descrição formatada e o valor salarial por extenso.
7. Elabore a condição lógica na regra verificando se EAbrMi é igual a 'T' ou igual a 'I'.
8. Condicione o disparo da seção Adicional por meio do comando ListaSecao apenas se a validação retornar verdadeira.
9. Insira o controle condicional nas seções de dependentes e históricos salariais, cancelando a execução quando o parâmetro for 'F'.
10. Adicione os campos de RG e CPF oriundos da R034CPL na seção de dados do colaborador e ajuste o alinhamento visual.
11. Salve o modelo e execute testes informando cada um dos parâmetros de entrada para validar o comportamento do fluxo.

CONSIDERAÇÕES FINAIS

A aplicação de controle de fluxo no Gerador de Relatórios do Senior HCM proporciona maior versatilidade aos modelos corporativos. O desenvolvimento de soluções modulares reduz a carga de manutenção técnica e simplifica a usabilidade para os setores de RH e Departamento Pessoal.

Compreender as propriedades dimensionais de componentes como campos memorando previne comportamentos inesperados de estouro de página, assegurando uma apresentação limpa e uniforme dos documentos emitidos.

A conjugação de telas de entrada funcionais, regras LSP bem estruturadas e junções de tabelas complementares transforma relatórios comuns em ferramentas cadastrais abrangentes e adaptadas às demandas da organização.


Módulo 22: GERADOR DE RELATÓRIOS SENIOR HCM: VARIÁVEIS DE SISTEMA E FUNÇÕES NATIVAS


A criação de relatórios e regras customizadas no Senior HCM exige o conhecimento dos recursos nativos que a plataforma disponibiliza para captura de dados contextuais e processamento de informações. O uso de variáveis de sistema e funções programadas acelera o desenvolvimento e garante consistência às saídas operacionais.

Durante a execução de um modelo, o sistema mantém em memória informações críticas do ambiente corporativo, como empresa ativa, competência de cálculo vigente, datas de referência e dados da sessão do usuário. Acessar esses registros de forma direta reduz a necessidade de consultas complexas a tabelas de banco de dados.

Neste artigo, serão detalhados o funcionamento das variáveis de sistema, as diferenças conceituais para as variáveis de entrada, o controle visual de sintaxe nas regras e as principais funções nativas para conversão de tipos, formatação e direcionamento de fluxo.

CONCEITO E APLICAÇÃO DAS VARIÁVEIS DE SISTEMA NO SENIOR HCM

As variáveis de sistema representam valores globais gerenciados pelo próprio ecossistema do Senior HCM. Elas refletem o contexto atual da operação em andamento, permitindo que cabeçalhos, rodapés e regras de cálculo exibam metadados sem esforço manual de pesquisa.

Exemplos comuns de variáveis de sistema utilizadas em relatórios:

- Nome e código da empresa ativa: exibem a identificação corporativa da sessão atual.
- Competência e código de cálculo da folha: recuperam o período de pagamento ativo selecionado pelo usuário.
- Data e hora do sistema: estampam o instante exato da geração do documento.
- Numeração de página: controlam a paginação sequencial das seções impressas.

A aplicação desses componentes padroniza o leiaute de relatórios e evita discrepâncias entre o que o operador visualiza na tela e o que é emitido no documento final.

IDENTIFICAÇÃO VISUAL E PREVENÇÃO DE CONFLITOS NO EDITOR DE REGRAS

O editor de regras da Linguagem Senior de Programação (LSP) utiliza esquemas de cores para diferenciar palavras-chave, variáveis internas e funções. Compreender essas sinalizações visuais impede a sobreposição de termos protegidos durante a declaração de variáveis personalizadas.

Diretrizes de identificação no editor:

- Destaque em vermelho: sinaliza variáveis de sistema reservadas pela plataforma.
- Destaque em roxo: identifica funções e comandos nativos disponíveis para execução.
- Conflito de nomenclatura: declarar uma variável de usuário com o mesmo nome de uma variável de sistema acarreta falhas de compilação.
- Validação prévia de sintaxe: o acionamento do verificador de regras aponta erros imediatos de identificadores duplicados ou reservados.

Ao estruturar novas regras, é recomendável adotar prefixos específicos para variáveis customizadas, prevenindo colisões acidentais com a sintaxe nativa.

COMPATIBILIDADE DE VARIÁVEIS ENTRE MÓDULOS DO ECOSSISTEMA HCM

Nem todas as variáveis de sistema e funções estão disponíveis de maneira universal em todos os módulos da plataforma Senior. O escopo de execução varia conforme a licença e a arquitetura da rotina em operação.

Fatores de compatibilidade a observar:

- Escopo por módulo: variáveis vinculadas à folha de pagamento podem não retornar dados quando invocadas no módulo de Controle de Ponto.
- Restrições de ambiente: certas chamadas de sistema operam com exclusividade em telas desktop ou serviços web.
- Consulta à documentação: a verificação do catálogo de variáveis do sistema valida a disponibilidade do recurso no módulo de destino.

Identificar antecipadamente o contexto em que o relatório será emitido previne retornos nulos ou interrupções abruptas do processamento.

GESTÃO DE PARÂMETROS COM VARIÁVEIS DE ENTRADA

As variáveis de entrada cumprem o papel de receber parâmetros fornecidos diretamente pelo usuário na tela de filtros antes da emissão do relatório. Elas se diferenciam das variáveis de sistema por terem seu conteúdo estabelecido sob demanda a cada execução.

Boas práticas no manuseio de variáveis de entrada:

- Padronização de prefixos: utilização da letra inicial 'E' para nomear campos de entrada, como EDatIni e EDatFin.
- Vinculação com filtros automáticos: aproveitamento das variáveis de entrada para alimentar cláusulas WHERE de consultas do gerador.
- Distinção de parâmetros homônimos: atenção para não confundir variáveis de entrada de data de referência com as variáveis de sistema correspondentes.

A parametrização adequada assegura que os filtros restrinjam a volumetria de dados no banco de dados com segurança e performance.

PALAVRAS RESERVADAS E DIRECIONAMENTO DE FLUXO COM COMANDOS DE REGRA

A linguagem do Senior HCM oferece comandos específicos para controle do fluxo de processamento e cancelamento condicional de rotinas. Esses recursos permitem criar validações rígidas antes da renderização das seções do modelo.

Comandos fundamentais de controle:

- Cancel: interrompe imediatamente a execução da regra ou a emissão do relatório diante de parâmetros inválidos.
- VáPara e rótulos de salto: redireciona a execução do código para uma etiqueta pré-determinada, viabilizando saídas rápidas de laços.
- Condicionais compostas: combinação de instruções 'Se' e 'Senão' para tomada de decisão lógica estruturada.

O uso equilibrado desses comandos torna o código mais limpo e impede a execução de trechos desnecessários quando uma precondição de negócio for violada.

INTERAÇÃO COM O USUÁRIO E CAPTURA DE RETORNO EM DIÁLOGOS

Para cenários em que o sistema precisa confirmar uma decisão antes de prosseguir com uma rotina, a função de exibição de mensagens permite criar diálogos interativos com caixas de opção.

Mecanismos da captura de resposta:

- Invocação de diálogos do tipo Sim/Não: apresentação de janelas de confirmação para o operador.
- Retorno numérico ordinal: o valor retornado pela função vincula-se à posição do botão configurado, e não ao texto literal.
- Avaliação por índices inteiros: o índice 0 representa a primeira opção definida, enquanto o índice 1 corresponde à segunda opção.
- Tratamento em variáveis: armazenamento do retorno em variável numérica para direcionar a continuidade ou o encerramento do processo.

Essa sistemática viabiliza a implementação de alertas de segurança antes de processamentos demorados ou gravações adicionais.

FUNÇÕES DE CONVERSÃO E MANIPULAÇÃO DE TIPOS DE DADOS

O ambiente de regras do Senior HCM é fortemente tipado, o que impede a atribuição direta ou concatenação de campos numéricos com variáveis alfanuméricas sem o uso de funções intermediárias de conversão.

Principais funções de conversão utilizadas:

- NumeroParaAlfa: transforma valores numéricos de ponto flutuante em sequências alfanuméricas.
- IntParaAlfa e AlfaParaInt: convertem valores inteiros em texto e vice-versa para montagem de contadores e chaves.
- MontaData e DesmontaData: decompõem estruturas de calendário em inteiros de dia, mês e ano, ou recompõem datas a partir de partes isoladas.
- AlfaParaData: converte representações textuais no formato padrão em tipos de data válidos para operações aritméticas.

A aplicação correta das funções de conversão evita falhas de compilação e perdas de precisão em cálculos temporais e contábeis.

FORMATAÇÃO DE MÁSCARAS E ESTRUTURAÇÃO DE VALORES TEXTUAIS

Além de converter tipos de dados, o desenvolvedor frequentemente necessita adequar a apresentação de valores numéricos, horas e moedas aos padrões visuais corporativos exigidos em auditorias e recibos.

Recursos nativos de formatação textual:

- ConverteMascara: aplica máscaras visuais predefinidas sobre números e horas com base em códigos de formatação.
- RetornaAsc: injeta caracteres especiais de controle, como quebras de linha em campos alfanuméricos longos.
- ExtensoNumero e RetMoeda: transformam quantias monetárias em transcrições completas por extenso.

O domínio dessas rotinas confere acabamento profissional aos documentos corporativos, dispensando o desenvolvimento de algoritmos manuais para tarefas já consolidadas na plataforma.

Veja como esse conteúdo foi abordado na aula:

EXEMPLO PRÁTICO: VALIDAÇÃO DE ENTRADA, EXIBIÇÃO DE MENSAGEM E CONVERSÃO DE DADOS

Siga os passos abaixo para configurar uma validação de parâmetros de entrada com caixa de diálogo e conversão de valores em uma regra de relatório:

1. Acesse o Gerador de Relatórios e abra o modelo de trabalho desejado.
2. Crie uma variável de entrada de data denominada EDatIni para receber o período inicial do relatório.
3. No editor de regras, declare uma variável numérica NResposta e uma variável alfanumérica XDataTexto.
4. Crie uma validação verificando se a variável EDatIni contém a data zerada padrão do sistema (31/12/1900).
5. Caso a data esteja em branco, invoque a função de mensagem com opções de confirmação e capture a resposta na variável NResposta.
6. Teste o valor de NResposta: se o usuário selecionar a opção de cancelamento (índice 1), execute a instrução Cancel.
7. Se o processamento continuar, utilize a função de conversão para transformar a data informada em formato alfanumérico e atribuir a XDataTexto.
8. Utilize o comando ConverteMascara para formatar a data por extenso ou aplicar separadores adequados antes da impressão.
9. Vincule a variável alfanumérica tratada a um campo visual posicionado no cabeçalho do modelo.
10. Compile a regra com a combinação de teclas de validação e execute o relatório para homologar o comportamento.

CONSIDERAÇÕES FINAIS

O domínio das variáveis de sistema e das funções nativas de LSP é indispensável para elevar o padrão técnico dos modelos desenvolvidos no Gerador de Relatórios do Senior HCM. Esse ecossistema de recursos simplifica tarefas rotineiras de formatação e parametrização.

Compreender as diferenças conceituais entre variáveis de sistema, variáveis de entrada e identificadores de usuário reduz sensivelmente o índice de erros de compilação e comportamentos imprevistos durante a execução dos relatórios.

A estruturação de uma biblioteca interna com exemplos de funções testadas acelera futuras manutenções e garante que a equipe de desenvolvimento aproveite plenamente as capacidades nativas disponibilizadas pela Senior.


Módulo 23: GERADOR DE RELATÓRIOS SENIOR HCM: CONTROLES AVANÇADOS, CÓDIGOS DE BARRA E GRÁFICOS


A apresentação visual e estrutural dos dados em relatórios corporativos exige mais do que a simples listagem de registros em formato tabular. No ecossistema Senior HCM, o Gerador de Relatórios dispõe de controles avançados capazes de transformar listagens operacionais em formulários padronizados, fichas cadastrais e demonstrativos executivos.

O domínio desses componentes permite atender a exigências legais e corporativas complexas, desde a impressão de logomarcas institucionais e caixas delimitadoras até a geração automatizada de códigos de barras vinculados ao controle de documentos.

Neste artigo, serão detalhados o funcionamento dos controles especiais para filtros de abrangência, o uso de componentes de desenho para leiautes de fichas, a parametrização de códigos de barra com registro de pendência e a consolidação de indicadores por meio de gráficos estatísticos.

TIPOS DE CONTROLES NATIVOS NO GERADOR DE RELATÓRIOS

O ambiente de desenvolvimento do gerador disponibiliza uma barra de ferramentas com componentes específicos para cada necessidade de apresentação. Cada controle possui propriedades distintas de dimensionamento, formatação e vinculação com o banco de dados.

Principais controles disponíveis no leiaute:

- Descrição: rótulo estático utilizado para títulos de colunas e identificações textuais.
- Cadastro: campo vinculado diretamente a uma coluna física de uma tabela do sistema.
- Fórmula: elemento que processa cálculos lógicos ou matemáticos em tempo de execução.
- Totalizador: acumulador de valores numéricos associado a quebras de seção ou totais gerais.
- Sistema: exibe metadados operacionais, como número de página, data e hora de emissão.
- Especial: componente técnico para viabilizar filtros complexos com máscaras.
- Memorando, Imagem, Desenho, Código de Barras e Gráfico: controles visuais avançados.

A escolha do componente correto assegura performance na extração e clareza na visualização das informações.

APLICAÇÃO DO CONTROLE ESPECIAL EM FILTROS DE ABRANGÊNCIA

O controle do tipo Especial possui uma finalidade técnica específica dentro do modelo de relatório. Ele é obrigatório quando a tela de entrada do usuário implementa filtros de abrangência estruturados sobre tabelas que utilizam máscaras, a exemplo de cargos, locais e centros de custo.

Diretrizes para o uso do controle especial:

- Vinculação de tabela e campo: deve ser associado ao campo correspondente do filtro (por exemplo, CodCar da tabela R024CAR).
- Desativação do tamanho automático: a propriedade de dimensionamento automático deve ser definida como falso para evitar distorções.
- Posicionamento em seção de detalhe: atua internamente para que o motor do gerador consiga interpretar a abrangência informada na entrada.
- Tratamento de históricos: essencial para relatórios que processam históricos de colaboradores sob regras de abrangência de datas e estruturas.

Caso o relatório não possua telas de entrada com abrangência de máscara, a inserção deste componente torna-se desnecessária.

PERSONALIZAÇÃO VISUAL COM CONTROLES DE IMAGEM

A identidade visual dos documentos corporativos depende da correta inserção de elementos gráficos nos cabeçalhos de página ou rodapés. O controle do tipo Imagem permite carregar arquivos estáticos, como o logotipo institucional da organização.

Boas práticas para aplicação de imagens:

- Formato compatível: utilizar extensões suportadas pelo gerador, preferencialmente arquivos de mapa de bits (BMP) ou ícones otimizados.
- Proporção e dimensionamento: fixar a altura e o comprimento nas propriedades do controle para preservar a nitidez e o alinhamento.
- Alocação no cabeçalho de página: posicionar o componente na seção superior para que seja reproduzido automaticamente em todas as páginas do modelo.

Esse procedimento confere acabamento profissional aos documentos emitidos para colaboradores e auditorias externas.

ESTRUTURAÇÃO DE FORMULÁRIOS COM CONTROLES DE DESENHO

A confecção de documentos estruturados, como fichas de registro, espelhos de ponto e termos de admissão, demanda delimitações visuais em forma de caixas e molduras. Nesses cenários, o controle de Desenho difere fundamentalmente do controle de Imagem.

Características e configurações do controle de desenho:

- Construção de grades e molduras: permite desenhar retângulos ao redor de agrupamentos de dados, como blocos de endereço da tabela R034CPL.
- Configuração de bordas: ajuste de linhas sólidas, espessura e tonalidade para destacar campos específicos.
- Sobreposição de campos: campos de cadastro e descrições são alocados no interior do desenho, gerando um formulário visualmente delimitado.
- Padronização dimensional: alinhamento preciso de altura e largura cria formulários uniformes para assinatura e arquivamento.

A utilização sistemática de caixas de desenho organiza densos volumes de informações cadastrais em um espaço visual compacto.

GERAÇÃO PROGRAMADA DE CÓDIGOS DE BARRA E REGISTRO NA R034RED

Para rotinas de controle de circulação de documentos físicos e fichas de ponto, o Gerador de Relatórios possibilita a emissão de códigos de barras programados, integrados às tabelas do Senior HCM.

Etapas da configuração do código de barras:

- Parametrização do componente: definição do padrão do código (como Intercalado 2 de 5) e ativação do modo de impressão BMP como verdadeiro.
- Dimensionamento recomendado: atribuição de medidas estritas de altura e comprimento conforme a documentação técnica para permitir leitura ótica precisa.
- Configuração da regra LSP: declaração de variáveis alfanuméricas para compor o valor do código, tipo de documento e data de referência.
- Integração com a tabela R034RED: gravação do registro de emissão do documento, vinculando número da empresa, matrícula e data para histórico de pendências.

Esse mecanismo automatiza o rastreio documental e garante a rastreabilidade das minutas entregues aos colaboradores.

APRESENTAÇÃO ESTRUTURADA DE DADOS COM CONTROLE DE GRÁFICO

Além de listagens e números, o gerador permite a criação de gráficos de barras, linhas ou setores para demonstrativos comparativos de remuneração ou jornadas.

Aspectos da parametrização do controle de gráfico:

- Associação com campos acumuladores: o gráfico é alimentado por totalizadores ou fórmulas calculadas durante a quebra da seção.
- Definição de séries e agrupamentos: seleção dos eixos categóricos (como mês ou departamento) e dos valores numéricos a serem plotados.
- Ajuste de eixos e legendas: personalização de títulos para os eixos esquerdo e inferior, fontes e cores das séries.
- Comportamento visual: o componente adapta escalas de valores conforme o volume de dados apurado pelo cursor de processamento.

O gráfico consolida análises gerenciais em relatórios que dispensam o detalhamento individual de cada registro.

TÉCNICAS DE OCULTAÇÃO DE SEÇÕES PARA DEMONSTRATIVOS GERENCIAIS

Muitas vezes, a elaboração de um gráfico requer a leitura linha a linha de tabelas operacionais (como apurações de ponto na R066APU), mas a visualização do detalhe precisa ser suprimida para não poluir o relatório.

Procedimentos para consolidação de resumos:

- Supressão da seção de detalhe: definir a propriedade de impressão da seção de detalhe como falso.
- Alimentação de totalizadores: os cálculos matemáticos continuam sendo processados e acumulados nos subtotais mesmo com a linha oculta.
- Exibição no subtotal: alocar o controle de gráfico na seção de subtotal correspondente à quebra principal (como empresa ou período).

Essa técnica viabiliza relatórios puramente estatísticos baseados na base operacional do sistema.

Veja como esse conteúdo foi abordado na aula:

EXEMPLO PRÁTICO: FORMULÁRIO COM DESENHO DE ENDEREÇO E LOGOTIPO CORPORATIVO

Siga os passos abaixo para construir um cabeçalho personalizado com logotipo e uma ficha cadastral de endereço delimitada por molduras:

1. Acesse o Gerador de Relatórios e abra o modelo baseado nas tabelas de Colaboradores (R034FUN) e Complemento (R034CPL).
2. No cabeçalho de página, insira um controle do tipo Imagem no canto superior esquerdo e selecione o arquivo do logotipo com dimensões fixas de 50x50.
3. Na seção de detalhe, adicione um controle do tipo Desenho e dimensione sua largura para cobrir a área útil do relatório.
4. Nas propriedades do desenho, defina a cor de borda e a linha como sólida, mantendo o fundo transparente ou branco.
5. Insira controles do tipo Descrição dentro da área do desenho para identificar os rótulos de CEP, Tipo de Logradouro, Rua e Número.
6. Adicione os controles do tipo Cadastro correspondentes aos campos da tabela R034CPL alinhados ao lado de cada descrição.
7. Caso haja filtro de entrada com abrangência de cargos, adicione um controle Especial na seção de detalhe apontando para CodCar da R024CAR com tamanho automático falso.
8. Salve o modelo e execute a pré-visualização para validar o enquadramento dos dados cadastrais dentro das caixas desenhadas.

CONSIDERAÇÕES FINAIS

A aplicação de controles avançados no Gerador de Relatórios do Senior HCM expande a capacidade técnica da equipe de sistemas, viabilizando soluções que superam as tradicionais listagens de texto.

Elementos como molduras de desenho, campos especiais de abrangência e códigos de barra agregam valor funcional aos documentos da empresa, atendendo aos rigorosos padrões de conformidade do setor de Recursos Humanos.

Compreender a lógica de parametrização visual e os impactos de cada controle no processamento assegura que os relatórios sejam rápidos, esteticamente adequados e precisos.


Módulo 24: PERFORMANCE EM RELATÓRIOS SENIOR HCM: TÉCNICAS DE FILTRAGEM, PROCESSAMENTO E OTIMIZAÇÃO


A eficiência no processamento de relatórios dentro do Senior HCM está diretamente associada ao controle adequado da volumetria de dados e à correta aplicação de filtros na camada de banco. O processamento irrestrito de tabelas densas, como as de apuração de ponto e situações, compromete o tempo de resposta e consome recursos desnecessários do servidor.

A ausência de critérios restritivos ou de parametrizações consistentes na tela de entrada faz com que o gerador processe históricos completos de colaboradores. Isso resulta em relatórios com milhares de páginas indesejadas e redundância de registros.

Neste artigo, são examinadas as práticas fundamentais para elevar o desempenho de modelos no Gerador de Relatórios, abordando a injeção dinâmica de filtros SQL em estruturas mestre-detalhe, validações preventivas de execução e condicionamento lógico de totalizadores.

IMPACTO DO VOLUME DE DADOS E A IMPORTÂNCIA DOS FILTROS PREVENTIVOS

Um dos principais causadores de lentidão em relatórios personalizados reside na extração integral de históricos funcionais sem delimitação de período. Tabelas operacionais, a exemplo da apuração de situações (R066SIT), acumulam milhões de apontamentos ao longo dos anos.

Consequências da ausência de filtros na extração:

- Elevação exponencial no tempo de processamento das consultas SQL.
- Sobrecarga de memória no cliente e no servidor de aplicação.
- Emissão de relatórios extensos com centenas de páginas irrelevantes para o usuário final.
- Degradação geral do banco de dados corporativo durante a execução de rotinas pesadas.

A inserção de parâmetros obrigatórios de abrangência e período temporal reduz drasticamente a massa de registros antes mesmo de sua renderização visual.

ESTRUTURAÇÃO DE PROCESSAMENTO MESTRE-DETALHE ENTRE TABELAS

A correta articulação entre entidades hierárquicas assegura que tabelas dependentes sejam consultadas apenas no contexto do registro principal. Ao relacionar o cadastro de colaboradores (R034FUN) aos registros de situações (R066SIT), a configuração mestre-detalhe vincula as chaves de ligação automaticamente no gerador.

Fatores determinantes na arquitetura mestre-detalhe:

- Segmentação clara entre seções de detalhe para cada tabela envolvida.
- Definição precisa da ordenação e das chaves primárias na seção mestre.
- Garantia de que junções automáticas operem sobre índices nativos do banco de dados.

Essa divisão estrutural impede a geração de produtos cartesianos indesejados durante o laço de execução do modelo.

INJEÇÃO DINÂMICA DE FILTROS SQL EM SEÇÕES ESPECÍFICAS

O assistente padrão do gerador nem sempre contempla todas as condições exigidas pela regra de negócio, sendo necessária a complementação via código. Por meio de comandos de inclusão SQL nas regras de inicialização, é possível anexar restrições diretamente na consulta do detalhe desejado.

Etapas para inclusão programada de filtros:

- Montagem da expressão de filtro em variável alfanumérica, tratando limites de datas.
- Conversão prévia de datas de tela para formato compatível com o banco de dados.
- Direcionamento da instrução de filtro à seção de detalhe correta por meio da função de inclusão SQL.
- Validação da query final gerada na aba de análise de comando SQL do gerador.

O direcionamento assertivo do filtro para a seção exata assegura que cláusulas WHERE não sejam aplicadas indevidamente a tabelas mestre desprovidas desses campos.

TRATAMENTO LÓGICO DE VARIÁVEIS E TOTALIZADORES CONDICIONAIS

A apuração segregada de horas por situação exige lógica condicional precisa para evitar que valores calculados em linhas anteriores contaminem o registro subsequente. Se uma variável numérica não for reinicializada a cada iteração, ela poderá imprimir incorretamente a quantidade apurada do evento precedente.

Diretrizes para apuração e totalização de métricas:

- Verificação condicional da situação informada comparada à linha de processamento.
- Atribuição explícita de zero à variável no bloco alternativo da condição lógica.
- Configuração adequada dos gatilhos de quebra e limpeza nos componentes de totalização.
- Alinhamento de valores numéricos sempre à margem direita para preservação visual do layout.

Essas medidas asseguram integridade aritmética em totalizadores parciais e somatórios gerais por empresa ou colaborador.

VALIDAÇÃO PREVENTIVA DE ENTRADA DE DADOS E CANCELAMENTO ANTECIPADO

A execução de um relatório jamais deve prosseguir caso os parâmetros indispensáveis não tenham sido preenchidos pelo operador. Regras de validação na tela de entrada impedem que consultas onerosas ao banco de dados sejam disparadas sem os critérios mínimos.

Boas práticas de validação pré-execução:

- Teste de preenchimento obrigatório para campos numéricos e datas limites.
- Emissão de avisos ao usuário por meio da função de mensagem do sistema.
- Interrupção imediata do processamento com a instrução de cancelamento caso falte parâmetro essencial.

Ao barrar o processamento na entrada, poupa-se tempo do operador e preserva-se o ambiente de infraestrutura corporativa.

CONTROLE DINÂMICO DE VISUALIZAÇÃO E EMISSÃO SELETIVA

Um mesmo modelo pode atender a demandas de detalhamento sintético, analítico ou representação gráfica sem a necessidade de criar múltiplos relatórios. Criar opções de seleção na tela de entrada permite alternar o comportamento das seções dinamicamente.

Aplicações do controle de exibição:

- Cancelamento da seção analítica quando a opção selecionada for apenas resumo ou gráfico.
- Supressão de cabeçalhos e rodapés intermediários com base no tipo de relatório selecionado.
- Exibição de gráficos comparativos atrelados a quebras estruturadas por empresa ou filial.

Essa flexibilidade consolida múltiplos propósitos operacionais em um único arquivo de modelo, facilitando o versionamento e o suporte técnico.

Veja como esse conteúdo foi abordado na aula:

EXEMPLO PRÁTICO: OTIMIZAÇÃO DE RELATÓRIO DE APURAÇÃO DE HORAS COM FILTROS DINÂMICOS

Siga os passos a seguir para estruturar um relatório performático que consolida situações de apuração com validação de parâmetros e totalizadores:

1. Acesse o Gerador de Relatórios e defina a tabela R034FUN como base principal do modelo.
2. Adicione uma seção de detalhe adicional vinculada à tabela de apuração R066SIT, nomeando-a como Detalhe_Sit.
3. Configure o tipo de processamento da seção de detalhe para o modelo mestre-detalhe atrelado ao colaborador.
4. Crie os parâmetros de tela para data inicial, data final e dois códigos numéricos de situação para comparação.
5. Na regra de entrada ou pré-seleção, adicione a verificação se os códigos de situação e as datas foram informados, disparando cancelamento preventivo com mensagem caso estejam zerados.
6. Monte a variável alfanumérica de filtro contendo o intervalo da data de apuração referente à R066SIT.
7. Aplique a função de inclusão SQL direcionando o comando estritamente para a seção Detalhe_Sit.
8. Na regra de detalhe, verifique se a situação corrente corresponde aos parâmetros informados, atribuindo as horas correspondentes ou zerando a variável caso não satisfaça o teste.
9. Adicione totalizadores na quebra por colaborador e na quebra por empresa, configurando o reset dos acumuladores no evento correto.
10. Crie um parâmetro de tipo de relatório permitindo suprimir a seção detalhada via instrução de cancelamento quando o usuário optar apenas pelo gráfico ou subtotal.
11. Execute a validação na tela de análise SQL e verifique a redução no volume de páginas geradas.

CONSIDERAÇÕES FINAIS

A aplicação disciplinada de boas práticas de performance transforma relatórios lentos e sobrecarregados em extrações ágeis e confiáveis no Senior HCM. A antecipação de filtros na camada de banco de dados representa o fator de maior impacto no consumo de recursos da aplicação.

Além dos ganhos técnicos de desempenho, a inclusão de validações na tela de entrada e o gerenciamento criterioso de variáveis asseguram dados fidedignos para tomadas de decisão gerenciais.

Modelos modulares que combinam filtros dinâmicos, controle condicional de seções e gráficos integrados garantem longevidade à ferramenta e maior satisfação aos usuários corporativos.



Módulo 25: GERADOR DE RELATÓRIOS SENIOR HCM: CONSOLIDAÇÃO INTERMEDIÁRIA DE LEIAUTE, CURSORES E REGRAS


O desenvolvimento de relatórios corporativos no Senior HCM atinge um nível intermediário quando exige a convergência de múltiplos recursos do sistema. Modelos completos demandam estruturação refinada de seções, tratamento de parâmetros de entrada, cálculos estatísticos e extração de históricos.

Nesse estágio, a interface visual do gerador atua em conjunto com a Linguagem Senior de Programação (LSP). Essa união permite manipular desde relacionamentos relacionais mestre-detalhe até a injeção dinâmica de cláusulas SQL e o controle de seções adicionais.

Este artigo consolida as principais técnicas para projetar um relatório analítico intermediário, englobando validações de tela, contadores acumulados, leitura de tabelas de histórico via cursor e formatação para exportação.

ARQUITETURA DE SEÇÕES E ESTRUTURA MESTRE-DETALHE

A composição de um modelo intermediário inicia-se pela definição precisa da hierarquia de seções. A utilização de seções de detalhe encadeadas estabelece o conceito de mestre-detalhe, indispensável para relacionar a ficha básica do colaborador com seus registros complementares.

Boas práticas na modelagem de seções principais:

- Associação mestre-detalhe: configurar a primeira seção de detalhe com a tabela base R034FUN e atrelar a segunda seção à tabela de complemento R034CPL.
- Configuração de orientação: ajustar a página para modo paisagem quando a densidade de colunas exigir maior extensão horizontal.
- Utilização de campos de sistema: inserir variáveis globais no cabeçalho e rodapé para identificar data de emissão, número de página e nome da empresa.
- Padronização tipográfica: uniformizar fontes e tamanhos em todos os elementos visuais para preservar a identidade visual do leiaute.

Essa organização garante que cada colaborador liste seus respectivos dados complementares sem gerar produtos cartesianos indesejados.

CRIAÇÃO DE TELAS DE ENTRADA E VALIDAÇÃO DE PARÂMETROS

A confiabilidade do relatório depende do controle prévio das informações preenchidas pelo usuário. As variáveis de entrada do gerador devem ser acompanhadas de regras de validação antes do disparo das consultas no banco de dados.

Diretrizes para configuração da tela de entrada:

- Parâmetros essenciais: criação de filtros para empresa, tipo de colaborador, matrículas e período de admissão.
- Definição de abrangência: habilitação da propriedade de abrangência para campos alfanuméricos que representam listas ou faixas numéricas.
- Validação de preenchimento: checagem de campos de data inicial e final para impedir parâmetros zerados na execução.
- Interrupção por inconsistência: aplicação da função Cancel(1) combinada com caixas de mensagem ao identificar intervalos invertidos.

A checagem preventiva no evento de inicialização economiza tempo de processamento e orienta o operador quanto ao correto uso dos filtros.

INJEÇÃO DINÂMICA DE FILTROS COM SQL WHERE E CONVERSÃO DE DATAS

Relatórios flexíveis dispensam filtros estáticos, adotando a composição de comandos dinâmicos via regras. A inclusão de predicados em tempo de execução personaliza o filtro conforme a necessidade de cada extração.

Etapas para a injeção dinâmica de critérios:

- Conversão de tipos: uso da função ConverteDataBanco para adequar datas informadas pelo usuário ao formato interpretado pelo motor SQL.
- Montagem da expressão: concatenação de campos de data e identificadores de tabela em uma variável alfanumérica dedicada.
- Aplicação do filtro: chamada da função nativa IncluiSQLWhere direcionada à seção de detalhe correspondente.
- Depuração de sintaxe: verificação da pontuação e dos operadores lógicos para assegurar a compatibilidade do comando gerado.

Com esse método, a consulta principal restringe o volume de registros na origem, otimizando o desempenho do banco de dados.

TOTALIZADORES, CONTADORES E SEÇÕES DE LIMPEZA

A síntese dos dados exige a apresentação tanto de montantes financeiros quanto da quantidade de pessoas físicas processadas. O Gerador de Relatórios possui componentes nativos capazes de acumular e realizar contagens ordenadas.

Configuração de acumuladores e contadores:

- Totalizador por soma: definição do campo de valor salarial com propriedade de soma para consolidação em subtotais e no total geral.
- Totalizador por contagem: configuração do campo de matrícula sob o modo contador para apurar a quantidade de vínculos da quebra.
- Vinculação de quebras: amarração das variáveis de totalização aos campos de controle de agrupamento, como o código da empresa.
- Seção de limpeza: associação de seções de subtotal à propriedade de limpeza dos totalizadores para reiniciar a contagem no próximo grupo.

O ajuste adequado das seções de limpeza impede que as somatórias de uma filial ou empresa contaminem os grupos subsequentes.

CURSORES PROGRAMADOS PARA LEITURA DE TABELAS HISTÓRICAS

Quando um cadastro possui histórico com relacionamento de um para muitos, como a tabela de alterações salariais (R038HSA), o vínculo direto no assistente de tabelas pode duplicar a seção de detalhe. Nesses cenários, a leitura via cursor programado garante controle total.

Mecanismos para consulta de históricos via regra:

- Declaração do cursor: especificação do cursor associado à tabela de histórico desejada.
- Parametrização da busca: inclusão das chaves de empresa, tipo e matrícula para limitar o histórico ao colaborador em processamento.
- Estrutura de repetição: iteração por meio de laço condicional com teste de leitura e avanço de registros.
- Desalocação de recursos: fechamento imediato do cursor ao término da varredura para liberar a conexão no banco.

A extração modular em regras isoladas mantém a integridade do fluxo da seção de detalhe primária.

MODULARIZAÇÃO DE SEÇÕES ADICIONAIS E IMPRESSÃO CONDICIONAL

A segmentação de diferentes saídas visuais é viabilizada pelo uso de seções adicionais. Ao contrário das seções de detalhe, as seções adicionais permanecem ocultas até que uma instrução explícita ordene sua renderização.

Vantagens da utilização de seções adicionais:

- Independência de conteúdo: criação de seções exclusivas para detalhar históricos de salários e blocos de texto memorando.
- Invocação programada: execução da função ListaSecao no momento exato em que a regra do colaborador processar o item.
- Organização do fluxo: controle sequencial permitindo imprimir primeiro os dados contratuais, seguidos pelo histórico e observações.
- Identificação visual: atribuição de cores de fundo distintas no ambiente de projeto para distinguir componentes dinâmicos de áreas estáticas.

Essa flexibilidade estrutural viabiliza relatórios multifacetados dentro de um mesmo modelo operacional.

CAMPOS MEMORANDO E QUEBRAS DE LINHA PROGRAMADAS

A inserção de notas explicativas, pareceres ou descrições extensas requer componentes de dados contínuos. O campo memorando atende a essa exigência ao possibilitar a impressão de textos em múltiplos parágrafos.

Procedimentos para manipulação de campos memorando:

- Dimensionamento e módulo: ajuste de altura fixa ou automática e configuração do módulo de indentação visual.
- Montagem da cadeia de caracteres: concatenação sequencial de variáveis alfanuméricas compondo o corpo da mensagem.
- Inserção de quebras de linha: aplicação da função RetornaAsc com código decimal 13 para forçar saltos de parágrafo no texto.
- Tratamento de visibilidade: cancelamento da impressão caso o colaborador não apresente textos descritivos cadastrados.

Esse recurso substitui caixas de texto rígidas por blocos fluidos e adaptados à extensão real de cada registro.

SUPRESSÃO CONDICIONAL DE CABEÇALHO E EXPORTAÇÃO PARA PLANILHAS

Embora o relatório seja projetado primariamente em formato gráfico, a necessidade de extrair dados em planilhas eletrônicas como XLS e CSV é rotineira na rotina de Recursos Humanos. O excesso de cabeçalhos pode desalinhar as colunas na planilha.

Técnicas de otimização para exportação:

- Parâmetro booleano de cabeçalho: criação de variável de entrada permitindo ao usuário suprimir títulos decorativos.
- Cancelamento programado: uso do comando Cancel(1) na regra antes de imprimir do cabeçalho quando a opção for negativa.
- Aplicação de molduras funcionais: emprego de linhas limpas nas seções de detalhe para orientar a delimitação das células na exportação.
- Preservação de dados cadastrais: garantia de que metadados essenciais, como nome do relatório e usuário, permaneçam rastreáveis.

A possibilidade de desativar elementos ornamentais assegura que o arquivo exportado permaneça limpo e pronto para análises estatísticas externas.

Veja como esse conteúdo foi abordado na aula:

EXEMPLO PRÁTICO: CONSTRUÇÃO DE UM RELATÓRIO COMPLETO COM DADOS CADASTRAIS E HISTÓRICOS

Siga os passos abaixo para construir um modelo estruturado com validações, relacionamento mestre-detalhe, cursores e exportação:

1. Inicie um relatório em branco no Gerador de Relatórios e configure a página para o formato Paisagem.
2. Crie a estrutura de seções com Cabeçalho de Página, Detalhe 1 (tabela R034FUN), Detalhe 2 (tabela R034CPL), Subtotal, Total Geral e Rodapé de Página.
3. Configure o relacionamento mestre-detalhe atrelando a seção de detalhe do complemento (R034CPL) à seção principal de colaboradores.
4. Adicione na tela de entrada os parâmetros de empresa, tipo, matrícula e as datas de início e fim do período de admissão.
5. Na regra de inicialização, insira a validação checando se as datas foram preenchidas e se a data inicial é inferior à data final, aplicando Cancel(1) em caso de erro.
6. Realize a conversão das datas com ConverteDataBanco e monte o filtro dinâmico na variável alfanumérica, injetando-a com IncluiSQLWhere na seção de colaboradores.
7. Insira na seção de Subtotal um campo somando o salário e um campo contador baseado na matrícula, vinculando ambos à seção de limpeza do subtotal.
8. Adicione duas seções Adicionais no relatório: uma para o histórico salarial e outra para o campo memorando descritivo.
9. Crie uma regra ligada ao detalhe que declare um cursor sobre a tabela R038HSA, abra a leitura com base na matrícula e chame ListaSecao para renderizar cada alteração salarial.
10. Na seção adicional de memorando, monte uma variável alfanumérica com quebras de linha via RetornaAsc(13) e imprima o bloco descritivo.
11. Insira na regra do cabeçalho de página uma verificação para cancelar sua exibição caso o parâmetro de supressão de cabeçalho esteja selecionado.
12. Execute o modelo, valide o disparo das mensagens com parâmetros inconsistentes e teste a exportação dos dados no formato XLS.

CONSIDERAÇÕES FINAIS

A elaboração de relatórios intermediários no ecossistema Senior HCM exige harmonia entre os elementos do leiaute gráfico e as rotinas programadas em LSP. A substituição de junções estáticas por cursores dinâmicos resolve gargalos estruturais e previne redundâncias na leitura de dados históricos.

A inclusão de mecanismos de validação nas telas de entrada eleva a usabilidade do modelo, evitando que o banco de dados processe consultas desnecessárias quando parâmetros essenciais forem omitidos.

Por fim, a adoção de boas práticas na totalização de registros e na formatação para exportação garante que o produto final atenda plenamente tanto à visualização em tela quanto à manipulação de dados em planilhas externas.