01. DADOS GERAIS
Produto: |
TOTVS RH
|
---|---|
Linha de Produto: | Linha Protheus |
Segmento: | RH |
Módulo: | GESTÃO DE PESSOAS (SIGAGPE) |
Função: | TRMA020 |
Ticket: | 14315231 |
Requisito/Story/Issue (informe o requisito relacionado) : | DRHROTPRT-5634 |
02. SITUAÇÃO/REQUISITO
Inconsistência no uso de consulta padrão para tabela SQ3 - Cargos quando utilizada em campo de usuário cadastrado para a mesma tabela, referenciando outro registro no Cadastro de Cargos do módulo CSA.
03. SOLUÇÃO
O comportamento esperado de uma consulta padrão com retorno tipo campo é posicionar no registro selecionado da tabela consultada.
Sendo assim, neste cenário recomenda-se a criação de consulta específica (RE), utilizando funções de expressão e retorno via User Function, onde seja efetuado o reposicionamento no registro original da tabela após obtenção do retorno.
Abaixo segue modelo de utilização para o cenário exemplificado da tabela SQ3:
- No programa SIGACFG, acessar Base de Dados > Dicionário > Base de Dados
- Na coluna à esquerda, abrir o menu da Empresa, selecionar o item 'Consultas Padrão' e nos ícones superiores clicar em 'Incluir'
- Informar: primeira tela - Tipo de Consulta: Consulta Específica, Nome da consulta (a ser cadastrada no X3_F3 do campo de usuário) e Descrição;
segunda tela - Funções de Expressão e Retorno, a serem criadas via RDMake, informadas no formato u_NomeFunção(), e finalizar. - Incluir nova consulta com as informações desejadas em tela como índices, colunas, etc. da tabela consultada e informar o mesmo retorno da consulta anterior *(Verificar item 04. Demais Informações)
Exemplo de RDMake a ser compilado no ambiente com as User Functions informadas:
customprog.prw/*/Função de Expressão da consulta específica Deve ser cadastrada na SXB no formato "u_NomeDaFunção()" /*/ User Function f3Custom() Local aArea := GetArea() Local aAreaSQ3 := SQ3->(GetArea()) //Guarda a posição atual da tabela Local uContent Local lRet := ConPad1( ,,, "SQ3PAD",,,,,, @uContent) //Cria tela de consulta conforme o nome passado por parâmetro e cadastro da SXB //Nome da consulta padrão criada no passo anterior If lRet VAR_IXB := SQ3->Q3_CARGO //registro selecionado na consulta Else VAR_IXB := uContent //Conteúdo anterior do campo EndIf RestArea(aAreaSQ3) //Reposiciona no registro aberto da tabela em manutenção RestArea(aArea) Return lRet //Retorno deve ser lógico, conforme uso da tela de consulta (.T. ao confirmar, .F. ao cancelar) /*/Função de Retorno da consulta - formato "u_NomeDaFunção()" /*/ User Function F3RetCustom() Return VAR_IXB //definido conforme tipo do campo e conteúdo especificado no retorno da consulta
04. DEMAIS INFORMAÇÕES
Neste exemplo, a expressão f3Custom() da consulta específica CUSTOM faz chamada à função ConPad1() para criação de tela no formato de consulta.
Em rotinas estruturadas em MVC é possível utilizar a função ConPad1() dentro de uma consulta específica (como utilizado na consulta CUSTOM), passando por parâmetro qualquer outra consulta existente no dicionário (SXB).
ConPad1( ,,, "SQ3PAD",,,,,, @uContent) => Informada no 4º parâmetro.
Já em outros padrões de enchoice, como é o caso da rotina especificada no cenário (TRMA020), para compatibilidade com o uso da ConPad1(), a consulta passada por parâmetro também foi criada manualmente (consulta SQ3PAD) para conter retorno do tipo expressão.*
Como alternativa à criação da segunda consulta, é possível criar manualmente uma tela de consulta para exibição dos registros desejados, ao invés do uso da ConPad1(), na função de expressão da consulta específica.
05. ASSUNTOS RELACIONADOS