Boa tarde,
Galera, pelo Advpl, tem como listar / imprimir - MENUS X USUARIOS,
pois necessito saber que usuário acesso qual menu, porém temo 250 usuário,
a impressão que gera direto no cadastro do usuário, é muito ruim.
Boa tarde,
Galera, pelo Advpl, tem como listar / imprimir - MENUS X USUARIOS,
pois necessito saber que usuário acesso qual menu, porém temo 250 usuário,
a impressão que gera direto no cadastro do usuário, é muito ruim.
@Reginaldo_DIAS uso essa query aqui, é bem completa. Basta ajustar para o que você precisa os filtros e colunas.
SELECT RTRIM(SYS_USR.USR_ID) AS ‘Cod. Usuario’
,RTRIM(SYS_USR.USR_CODIGO) AS ‘Usuario’
,RTRIM(UPPER(SYS_USR.USR_NOME)) AS ‘Nome Usuario’
,RTRIM(UPPER(SYS_GRP_GROUP.GR__CODIGO)) AS ‘Grupo’
,RTRIM(REPLACE(ISNULL(MENU1.N_DESC, ‘’), ‘&’, ‘’)) AS ‘Menu’
,RTRIM(REPLACE(ISNULL(SUBR.N_DESC, ‘’), ‘&’, ‘’)) AS ‘Sub-Menu’
,RTRIM(REPLACE(ISNULL(MPMENU_I18N.N_DESC, ‘’), ‘&’, ‘’)) AS ‘Rotina’
,RTRIM(ISNULL(MPMENU_ITEM.I_ACCESS, ‘’)) AS ‘Acesso’
,RTRIM(ISNULL(MPMENU_FUNCTION.F_FUNCTION, ‘’)) AS ‘Funcao’
,RTRIM(UPPER(REPLACE(REPLACE(MPMENU_MENU.M_ARQMENU, '\SYSTEM', ‘’), ‘.XNU’, ‘’))) AS ‘XNU’
FROM SYS_USR
–GRUPOS DO USUÁRIO
INNER JOIN SYS_USR_GROUPS
ON SYS_USR_GROUPS.D_E_L_E_T_ = ’ ’
AND SYS_USR.USR_ID = SYS_USR_GROUPS.USR_ID
– GRUPOS
INNER JOIN SYS_GRP_GROUP
ON SYS_GRP_GROUP.D_E_L_E_T_ = ’ ’
AND RTRIM(SYS_USR_GROUPS.USR_GRUPO) = RTRIM(SYS_GRP_GROUP.GR__ID)
– GRUPOS_X_MENUS
INNER JOIN SYS_GRP_MODULE
ON SYS_GRP_MODULE.D_E_L_E_T_ = ’ ’
AND RTRIM(SYS_GRP_GROUP.GR__ID) = RTRIM(SYS_GRP_MODULE.GR__ID)
AND SYS_GRP_MODULE.GR__ACESSO = ‘T’
–MENUS
INNER JOIN MPMENU_MENU
ON MPMENU_MENU.D_E_L_E_T_ = ’ ’
AND SYS_GRP_MODULE.GR__ARQMENU = MPMENU_MENU.M_ID
–ITENS DOS MENUS
INNER JOIN MPMENU_ITEM
ON MPMENU_ITEM.D_E_L_E_T_ = ’ ’
AND MPMENU_MENU.M_ID = MPMENU_ITEM.I_ID_MENU
– FUNCOES
INNER JOIN MPMENU_FUNCTION
ON MPMENU_FUNCTION.D_E_L_E_T_ = ’ ’
AND MPMENU_ITEM.I_ID_FUNC = MPMENU_FUNCTION.F_ID
– NOME ROTINA
LEFT JOIN MPMENU_I18N
ON MPMENU_I18N.D_E_L_E_T_ = ’ ’
AND MPMENU_ITEM.I_ID = MPMENU_I18N.N_PAREN_ID
AND MPMENU_I18N.N_LANG = ‘1’
– NOME SUB-MENU
LEFT JOIN MPMENU_I18N SUBR
ON SUBR.D_E_L_E_T_ = ’ ’
AND MPMENU_ITEM.I_FATHER = SUBR.N_PAREN_ID
AND SUBR.N_LANG = ‘1’
– PRA BUSCAR O AVÔ
LEFT JOIN MPMENU_ITEM MENU0
ON MENU0.D_E_L_E_T_ = ’ ’
AND SUBR.N_PAREN_ID = MENU0.I_ID
– MENU (AVÔ)
LEFT JOIN MPMENU_I18N MENU1
ON MENU1.D_E_L_E_T_ = ’ ’
AND MENU0.I_FATHER = MENU1.N_PAREN_ID
AND MENU1.N_LANG = ‘1’
–FILTROS
WHERE SYS_USR.D_E_L_E_T_ = ’ ’
– AND SYS_USR.USR_CODIGO = ‘fulano’
–and MPMENU_FUNCTION.F_FUNCTION IN (‘CTBA102’)
–and MPMENU_I18N.N_DESC like ‘%estoque%’
ORDER BY SYS_USR.USR_CODIGO
,SYS_USR.USR_ID
,SYS_GRP_GROUP.GR__CODIGO
,MPMENU_ITEM.I_ORDER
,MENU1.N_DESC
,SUBR.N_DESC
,MPMENU_I18N.N_DESC
Valeu pela ajuda, deu um norte legal… Obrigado
Aproveitando o gancho do post, alguém sabe de alguma função que liste as permissões cadastradas no SIGACFG? Por exemplo, alguma função que me retorne se aquele usuário possui visualização de outras filiais marcada como sim no MBrowse. Tentei essa função GetAccessList - Frameworksp - TDN
mas ela me parece trazer apenas como informativo e não se o usuário realmente possui acesso ou não