No vídeo de hoje, vamos demonstrar em como buscar quais usuários tem acesso a determinado módulo do Protheus através de uma query.
A dúvida de hoje, nos perguntaram, se seria possível através de uma query no banco de dados, retornar os usuários que tenham acesso a um determinado módulo do ERP.
Pensando nisso, montamos esse exemplo, onde demonstramos em como filtrar e relacionar as tabelas SYS_USR e SYS_USR_MODULE para buscar as informações desejadas.
Segue abaixo o vídeo exemplificando:
E abaixo o código da query:
SELECT
USUARIO.USR_ID,
USUARIO.USR_NOME,
MODULO.USR_MODULO,
MODULO.USR_CODMOD
FROM
SYS_USR AS USUARIO
INNER JOIN SYS_USR_MODULE AS MODULO ON (
USUARIO.USR_ID = MODULO.USR_ID
AND MODULO.USR_ACESSO = 'T'
AND MODULO.USR_MODULO IN ('7', '16')
AND MODULO.D_E_L_E_T_ = ' '
)
WHERE
USUARIO.USR_MSBLQL != '1'
AND USUARIO.D_E_L_E_T_ = ' '
ORDER BY
USR_ID
Bom pessoal, por hoje é só.
Abraços e até a próxima.
Seria legal tambem saber quais são as rotinas, seria possivel?
Bom dia Everton, tudo joia?
Sim, adicione um join entre a SYS_USR_MODULE com a MPMENU_MENU, e depois com as MPMENU_ITEM, MPMENU_FUNCTION e MPMENU_I18N.
Ai com isso, você consegue filtrar as rotinas contidas em um menu.
Obs.: No dia 02/10 vai subir um artigo sobre uma query com exemplo de JOIN entre as tabelas MPMENU_MENU, MPMENU_ITEM, MPMENU_FUNCTION e MPMENU_I18N, se quiser aguardar, ai acho que vai conseguir te dar um norte para o seu cenário.
Ou se você for um assinante premium, pode solicitar com antecedência o conteúdo do artigo, nos enviando um email – https://terminaldeinformacao.com/contato/
Tenha uma ótima e abençoada sexta feira.
Um grande abraço.
Fiz uma melhoria utilizando a STRING_AGG:
SELECT
USUARIO.USR_ID,
USUARIO.USR_NOME,
STRING_AGG(MODULO.USR_MODULO, ‘, ‘) AS CODIGO,
STRING_AGG(TRIM(MODULO.USR_CODMOD), ‘,’) AS MODULO
FROM
SYS_USR AS USUARIO
INNER JOIN SYS_USR_MODULE AS MODULO ON (
USUARIO.USR_ID = MODULO.USR_ID
AND MODULO.USR_ACESSO = ‘T’
–AND MODULO.USR_MODULO IN (‘7′, ’16’)
AND MODULO.D_E_L_E_T_ = ‘ ‘
)
WHERE
USUARIO.USR_MSBLQL != ‘1’
AND USUARIO.D_E_L_E_T_ = ‘ ‘
GROUP BY
USUARIO.USR_ID, USUARIO.USR_NOME
ORDER BY
USUARIO.USR_ID
Bom dia Rafael, tudo joia?
Opa, obrigado pela contribuição e adendo.
Tenha uma ótima e abençoada quinta feira.
Um forte abraço.
Olá, Atílio, parabéns pelos seus post. Gostaria de saber se há como extrair um relatório com o histórico do uso da senha de administrador, onde esteja disponível: Data, hora, Estacao IP do logon , Usuário do SO do logon. Estou sendo auditado, já deixei um chamado aberto na totvs, mas se conseguir ajudar… Desde já agradeço
Bom dia André, tudo joia?
Obrigado pelo feedback, é muita bondade e generosidade sua.
Eu conheço o relatório padrão de acessos, ele fica em Configurador (SIGACFG) > Base de Dados > Auditoria > Log De Acesso
Que é a rotina APCFGR40. Veja se ela te atende.
Além dessa rotina, tem a função de análise do que os usuários estão abrindo no sistema através do MV_LOGSIGA e MV_DIRLOG, tem exemplo na aula 06 do curso de Logs – https://tipremium.com/page.php?slug=curso-logs
Tenha uma ótima e abençoada terça feira.
Um forte abraço.