Pragiva — Tecnologia na prática

Manutenção de profile: quando a tela quebra só para um usuário

Manutenção de Profile: o que o profile do usuário guarda, como limpar pelo Configurador sem apagar demais e como ver por SQL o que está salvo.

Protheus Guia de processo 4 min de leitura

Assista o vídeo

Nesta página5 seções

A mesma rotina, na mesma filial, funciona para todo mundo e dá erro para uma pessoa só. Antes de reinstalar o SmartClient dela, olhe o profile. A própria TOTVS orienta assim: problema pontual de um usuário só pode ser “sujeira” no perfil dele, e a saída é recriar o profile daquele usuário, sem tocar no dos outros.

A ferramenta é a Manutenção de Profile (programa PROFMGR), em Ambiente > Cadastros > Manutenção de Profile no Configurador.

O que o profile guarda

Profile é o que o Protheus lembra de um usuário entre uma sessão e outra. Com o dicionário no banco, esses registros ficam na tabela MP_SYSTEM_PROFILE. A chave única da tabela é usuário, programa, tarefa, tipo, empresa e filial (colunas P_NAME, P_PROG, P_TASK, P_TYPE, P_EMPANT e P_FILANT). Então o mesmo usuário tem registros diferentes por rotina e por empresa/filial.

Num ambiente real, aparecem combinações como estas (programa / tarefa / tipo):

  • MTA410 / PERGUNTE / MV_PAR: as últimas respostas às perguntas do grupo MTA410, da SX1. Aqui o “programa” é o nome do grupo de perguntas.
  • CONPAD / CONFIG / BRWPOS e SAVESEEK: chaves ligadas e desligadas das consultas padrão. O conteúdo é só .T. ou .F., e não uma posição ou uma pesquisa gravada.
  • MATA410 / PROTHEUS / BROWSESC5 e MATA410 / FWFILTER / : registros do pedido de venda ligados à tabela SC5. Pelos nomes, indicam o browse e os filtros da rotina. É leitura dos nomes: a documentação não descreve esses tipos.
  • MATA410 / 05 / LAST: um registro do pedido de venda no módulo 05, o Faturamento. O conteúdo não traz data nem hora.

Por isso o sintoma costuma ser de uma tela só: cada rotina tem as próprias linhas, de cada usuário. Uma preferência com problema atrapalha a tela a que pertence, e só para o dono dela.

Dá para ler parte do conteúdo

O conteúdo de cada preferência fica na coluna P_DEFS, que é binária. Mas boa parte é texto. Convertendo para varchar, as chaves aparecem como .T. e .F., e as respostas de perguntas aparecem uma linha por pergunta do grupo, na ordem, começando pelo tipo da pergunta como na SX1 (C#C#2, N#C#1…):

Confira no seu ambienteSQL
SELECT P_NAME, P_PROG, P_TASK, P_TYPE,
       CAST(P_DEFS AS varchar(max)) AS CONTEUDO
  FROM MP_SYSTEM_PROFILE
 WHERE P_PROG = 'MTA410'
   AND P_TASK = 'PERGUNTE'
   AND D_E_L_E_T_ = ' '

Útil no diagnóstico: se o relatório “lembra” uma resposta que o usuário jura que não deu, ela está ali. Nem tudo converte limpo. Alguns registros guardam estruturas binárias e mostram caracteres de controle.

Vendo o profile de alguém antes de apagar

A MP_SYSTEM_PROFILE não leva sufixo de empresa no nome: é uma tabela só para o ambiente, com a empresa e a filial em colunas próprias. Na maior parte das linhas, P_NAME guarda o código do usuário, que se liga ao cadastro de usuários do dicionário no banco (SYS_USR). Para achar pelo login:

Confira no seu ambienteSQL
SELECT P.P_NAME, P.P_PROG, P.P_TASK, P.P_TYPE, P.P_EMPANT, P.P_FILANT
  FROM MP_SYSTEM_PROFILE P
  JOIN SYS_USR U
    ON U.USR_ID = P.P_NAME
   AND U.D_E_L_E_T_ = ' '
 WHERE U.USR_CODIGO = 'mariana.costa'
   AND P.D_E_L_E_T_ = ' '
 ORDER BY P.P_PROG, P.P_TASK, P.P_TYPE

Troque mariana.costa pelo login de quem está com o problema.

Confira no seu ambienteSQL
SELECT P_NAME, P_PROG, P_TASK, P_TYPE, P_EMPANT, P_FILANT
  FROM MP_SYSTEM_PROFILE
 WHERE P_PROG = 'MATA410'
   AND D_E_L_E_T_ = ' '
 ORDER BY P_NAME, P_TASK, P_TYPE

Se o erro é numa rotina que nem aparece no profile do usuário, o profile provavelmente não é o culpado. Vale procurar em outro lugar antes de apagar qualquer coisa.

Guarde uma cópia antes de apagar

Antes de excluir, a documentação da TOTVS manda fazer backup. No profile em arquivo, o backup é da pasta Profile, dentro da Protheus_Data, com os serviços parados. Com o dicionário no banco, peça ao responsável pelo banco uma cópia das linhas do usuário, por exemplo:

SQL
SELECT *
  INTO MP_SYSTEM_PROFILE_BKP
  FROM MP_SYSTEM_PROFILE
 WHERE P_NAME = '000123'

Troque 000123 pelo código do usuário. É uma operação de escrita no banco: deve ser feita por quem tem permissão para isso, e não por um usuário de consulta.

Limpando pela rotina

  1. Abra Ambiente > Cadastros > Manutenção de Profile.
  2. Localize o usuário pelo código.
  3. Posicione no registro e use Excluir. O sistema pergunta se deve apagar só o registro posicionado ou todos os registros do usuário.
  4. Peça ao usuário para entrar de novo na rotina e testar.

Comece pelo pontual. Se o erro é na tela do pedido de venda, apague as linhas do MATA410 e teste. Só parta para “todos os registros” se o problema não for de uma tela só, ou se o pontual não resolver.

A exclusão se faz pela Manutenção de Profile, que é o caminho documentado. Um DELETE escrito à mão nessa tabela, com o filtro errado, apaga o profile de todo mundo de uma vez.

Se a tela continua quebrando depois de limpar o profile, o problema está em outro lugar: acesso, menu ou dicionário. O cadastro de usuários é o próximo lugar a olhar.

Referências

  1. TDNtdn.totvs.com

    TDN — Manutenção de Perfil de Usuário (Profile)
  2. Central de Atendimentocentraldeatendimento.totvs.com

    Central de Atendimento TOTVS — Manutenção de Profile de Usuários
  3. Central de Atendimentocentraldeatendimento.totvs.com

    Central de Atendimento TOTVS — Limpar Dados do Profile

Continue por aqui