A rotina de Diagnóstico de Dicionários permite fazer uma verificação na base em busca de possíveis erros que podem causar problemas ou impedir a correta execução de rotinas de atualização, como o UPDDISTR por exemplo. Utilizando a rotina de Diagnóstico, é possível identificar problemas de integridade para uma tabela específica em sua base de dados, que podem ocasionar erros em sua rotina.

Obs. 1: esta rotina apenas exibe uma listagem dos problemas encontrados. Qualquer correção deve ser feita manualmente pelo administrador do sistema.

Obs. 2: disponível a partir da LIB versão 20230109 com dicionário no banco de dados.

Para utilização desse App no Protheus, é necessário ativar as seguintes linhas no arquivo appserver.ini:

[General]
App_Environment={nome-do-ambiente-utilizado}

[Drivers]
MULTIPROTOCOLPORT=1

[WEBAPP]
Port={porta-http-desejada => Ex.:4322} 
Enable=1


Maiores detalhes sobre a configuração para execução de Apps no Protheus:
https://tdn.totvs.com/display/tec/WebApp+-+Configurando+nativamente+o+Application+Server+como+servidor+Web
https://tdn.totvs.com/display/public/framework/FwCallApp+-+Abrindo+aplicativos+Web+no+Protheus



Para iniciar a rotina de Diagnóstico, deve-se pressionar as teclas Shift+F6 do teclado em qualquer tela do sistema, e na janela de informações que aparece, clique em Avançar. Na tela 2 da janela, clique no botão Diagnóstico, na seção de Dicionário de Dados.


Tela principal

Na tela principal, conforme exemplificado na imagem abaixo, temos os seguintes itens:



OPERAÇÃO

Caixa de seleção para escolher qual operação de dicionários será executada no diagnóstico. Pode ser marcada mais de uma caixinha de operação para executar. As opções que estão disponíveis para diagnóstico são:

- Integridade SX3 (campos) x SXG (grupo de campos): indica problemas de cadastro entre a tabela SX3 e a tabela SXG, como por exemplo, grupos de campos indicados em um campo na SX3, mas que não existe de fato cadastrado na SXG.

- Integridade SX1 (perguntas) x SXG (grupo de campos): indica problemas de cadastro entre a tabela SX1 e a tabela SXG, como por exemplo, um grupo de campos indicado em uma pergunta, mas que não existe de fato cadastrado na SXG.

- Integridade SX3 x tabela física: faz a busca por diferenças entre campos na tabela SX3 e os campos que estão nas tabelas físicas criadas. Por exemplo, pode detectar que um campo está cadastrado na SX3 como pertencente a tabela SA1, mas esse campo não existir de fato na SA1. Ou ao contrário, o campo existir na tabela SA1, mas não estar cadastrado na SX3.

- Integridade SX3 (campos) x SIX (índices): indica divergências entre campos e índices, como por exemplo campos que aparecem listados em índices, mas que não existem de fato cadastrados na SX3.

- Integridade SIX (índices) x tabela física: faz a busca por diferenças entre índices na tabela SIX e os índices que estão nas tabelas físicas criadas. Por exemplo, pode detectar que um índice está cadastrado na SIX como pertencente a tabela SA1, mas esse índice não existir de fato na SA1. Ou ao contrário, o índice existir na tabela SA1, mas não estar cadastrado na SIX.



DICIONÁRIO DE:

Indica o dicionário inicial da busca. Habilitado quando pelo menos uma operação envolver os dicionários SX3 ou SIX. Opções de busca:
- Digitar diretamente o código da tabela que deseja utilizar como parâmetro inicial da busca (por exemplo, SA1)
- Digitar apenas a letra A, para iniciar da primeira tabela disponível
- Utilizar a lupa para obter uma listagem das tabelas disponíveis

Obs.: diretamente no campo, você pode digitar o código de qualquer tabela existente no Protheus, mas se utilizar a lupa, somente serão listadas as tabelas que já tenham sido criadas fisicamente no banco de dados.



DICIONÁRIO ATÉ:

Indica o dicionário final da busca. Habilitado quando pelo menos uma operação envolver os dicionários SX3 ou SIX. Opções de busca:
- Digitar diretamente o código da tabela que deseja utilizar como parâmetro final da busca (por exemplo, SA6)
- Digitar apenas as letras ZZZ, para terminar na última tabela disponível
- Utilizar a lupa para obter uma listagem das tabelas disponíveis

Obs.: diretamente no campo, você pode digitar o código de qualquer tabela existente no Protheus, mas se utilizar a lupa, somente serão listadas as tabelas que já tenham sido criadas fisicamente no banco de dados.



PERGUNTA DE:

Indica a pergunta inicial da busca. Habilitado quando a operação envolver o dicionário SX1. Opções de busca:
- Digitar diretamente o código da pergunta que deseja utilizar como parâmetro inicial da busca (por exemplo, ACC010)
- Digitar apenas a letra A, para iniciar da primeira pergunta disponível
- Utilizar a lupa para obter uma listagem das perguntas disponíveis



PERGUNTA ATÉ:

Indica a pergunta final da busca. Habilitado quando a operação envolver o dicionário SX1. Opções de busca:
- Digitar diretamente o código da pergunta que deseja utilizar como parâmetro final da busca (por exemplo, FINR917)
- Digitar apenas as letras ZZZZZZZZZZ, para terminar na última pergunta disponível
- Utilizar a lupa para obter uma listagem das perguntas disponíveis



BOTÃO PROCESSAR:

Após configurar qual(is) dicionário(s) e parâmetros deseja executar, clique no botão Processar para iniciar o processamento das informações.



Tela de Resultado de Diagnóstico

Nesta tela são apresentados os resultados baseados na busca feita com os parâmetros selecionados. Temos aqui os seguintes itens:



COLUNAS - OPERAÇÃO, CHAVE, DESCRIÇÃO E RESULTADO:

Apresentam as informações dos resultados da busca efetuada.



BOTÃO CARREGAR MAIS RESULTADOS:

Se o texto estiver na cor cinza, indica que todos os resultados já estão carregados na tela. Mas se o texto estiver azul, indica que o botão está disponível para ser clicado e existem mais resultados para carregar na tela, devido a grande quantidade de resultados obtidos.



CAIXA DE PESQUISAR:

Permite digitar uma string (completa ou parcial de um texto), e procura em todas as colunas. Por exemplo, na imagem acima, eu posso digitar na busca apenas a palavra "Teste", e a pesquisa vai trazer resultados contendo os campos A1_TESTE, A2_TESTE2 e A6_TESTE2 (imagem abaixo).

Obs.: Devido a necessidade de pesquisar em todos os resultados, se houverem mais dados do que os que cabem na tela, ao pesquisar será automaticamente acionado o botão de Carregar mais resultados até que todos estejam carregados, para que a busca seja feita corretamente. Sendo assim, se cancelar a pesquisa (clicando no X que aparece na etiqueta de Pesquisa rápida ou limpando a caixa de pesquisa e clicando na Lupa), todos os resultados já vão estar carregados na tela, não sendo mais necessário clicar no botão Carregar mais resultados.



BUSCA AVANÇADA:

Semelhante ao botão Pesquisar, porém com a possibilidade de combinar colunas (Operação, Chave, Descrição ou Resultado) para trazer um resultado mais preciso. Por exemplo, na imagem acima, a pesquisa por "Teste" trouxe os resultados que tem os campos A1_TESTE, A2_TESTE2 e A6_TESTE2. Mas se for colocado na Busca avançada, a Chave "SA2" e a Descrição "Teste", o resultado será apenas o registro que tem a tabela SA2, campo A2_TESTE2 (imagens abaixo).

Obs.: Para limpar os filtros, clique no X ao lado de cada filtro na tela de Resultado, ou clique em Remover todos.



BOTÃO EXPORTAR:

Permite fazer a exportação dos resultados para uma planilha. Ao clicar no botão Exportar, o aviso abaixo será exibido:


Se escolher a opção Grid, apenas os dados que estão carregados na tela até o momento serão exportados para a planilha. Se tiver feito um filtro, por exemplo, irá exibir os resultados do filtro. Se for selecionada a opção TODOS, serão exportados para a tabela todos os resultados da busca efetuada mediante os parâmetros. Esta opção pode demorar um pouco mais pois precisa terminar de carregar todos os resultados antes de fazer a exportação.