Victor,
Uma opção é utilizar da função FWSFAllUsers
e com base em seu retorno, efetuar a busca.
Veja um exemplo de implementação:
//-------------------------------------------------------------------
/*{Protheus.doc} u_UsrByName
Busca e retorna um usuário com base no nome
@param cName Nome do usuário
@return aUser Array com os dados do usuário encontrado
@author Daniel Mendes
@since 25/06/2020
@version 1.0
*/
//-------------------------------------------------------------------
function u_UsrByName(cName)
local aUsersAux as array
local aUser as array
local nPos as numeric
aUsersAux := FWSFAllUsers(/*aUserList*/, {"USR_NOME"})
cName := Upper(AllTrim(cName))
nPos := aScan(aUsersAux, {|aUsr| Upper(AllTrim(aUsr[3])) == cName})
if nPos > 0
aUser := aClone(aUsersAux[nPos])
else
aUser := {}
endif
aSize(aUsersAux, 0)
aUsersAux := nil
return aUser
Com isso basta então chamar a função u_UsrByName
informando o nome do usuário:
//-------------------------------------------------------------------
/*{Protheus.doc} u_TestUsr
Teste da função u_UsrByName, responsável por retornar um
array com as informações do usuário com base em seu nome
@author Daniel Mendes
@since 25/06/2020
@version 1.0
*/
//-------------------------------------------------------------------
function u_TestUsr()
local aUser as array
rpcSetEnv("99", "01")
aUser := u_UsrByName("Daniel Mendes")
varInfo("User", aUser)
aSize(aUser, 0)
aUser := nil
aUser := u_UsrByName("Não existe")
varInfo("User", aUser)
aSize(aUser, 0)
aUser := nil
rpcClearEnv()
return nil
Se desejar retornar mais dados do usuário, basta informar outros valores no array de segundo parâmetro da função FWSFAllUsers
, mas manter o nome é essencial para a mesma funcionar.
Documentação: https://tdn.totvs.com/display/public/PROT/FWSFALLUSERS
Obs.: Ressalto que o nome do usuário pode ser repetido, logo a função retornará o primeiro usuário encontrado.
Victor, seria o nome ou o login? Vale ressaltar que o nome pode ser repetido, você pode ter N usuários chamados Batata.
— Daniel Mendes 25 de Jun de 2020A api será consumida por usuários chaves em cada departamento, por enquanto ficou acertado que eles vão passar o nome completo como parâmetro
— Victor S Henrique 25 de Jun de 2020