Resposta rápida
- Onde fica
- Ambiente > Cadastros > Catálogo de Personalização, rotina
CFGA030. - Como um PE entra na lista
- sozinho, quando alguma rotina testa a existência dele com
ExistBlockouExistTemplate, ou antes, pelo botão +Incluir. - O que dá para fazer
- desabilitar ou fixar um retorno, para o ambiente todo ou por filial.
- O que ele não alcança
- validações, gatilhos, chamada direta com
U_e aplicação sem ambiente preparado. - Armadilha
- o Retorno padrão é instrução AdvPL macroexecutada, e não um texto.
Consulta rápida7 seções
Um ponto de entrada novo foi para produção e o faturamento parou. Recompilar o repositório sem ele leva tempo e exige janela. O Catálogo de Personalizações resolve em um minuto: você desliga o ponto de entrada no Configurador, o padrão volta a rodar sem ele, e o fonte continua compilado para quando o problema for corrigido.
Se o conceito de ponto de entrada ainda é novo, comece por Ponto de entrada no Protheus: como o padrão te chama.
Como os pontos de entrada entram no catálogo
O cadastro acontece sozinho sempre que uma rotina, padrão ou customizada,
verifica se um ponto de entrada existe com ExistBlock, ou um template com
ExistTemplate. No banco, os registros criados assim trazem na descrição um
texto como este:
Automaticamente adicionado pelo sistema.-<data da inclusão>Daí saem duas consequências práticas:
- Um ponto de entrada que nunca rodou não aparece. Compilou o
MT410TOKontem e ninguém incluiu pedido desde então? Ele ainda não está na lista. Não é preciso esperar: a rotina permite antecipar o cadastro pelo botão +Incluir. Assim dá para deixar um ponto de entrada desabilitado antes de ele rodar pela primeira vez. - Chamada direta fica de fora. O catálogo só funciona quando a
verificação e a chamada passam por
ExistBlock(),ExistTemplate(),ExecBlock()eExecTemplate(). Função chamada direto comU_ouT_não é contemplada.
Os campos do cadastro
O cadastro tem duas partes. O cabeçalho identifica a personalização:
| Campo | O que vai nele |
|---|---|
| Função | O nome do ponto de entrada ou do template, sem U_ nem T_ |
| Tipo de Função | 1 - ExecBlock para ponto de entrada (User Function); 2 - Template Function para template |
| Descrição | Texto livre. Nos registros automáticos, o sistema preenche com a data da inclusão |
A documentação da TOTVS ainda fala em cadastrar só as 8 primeiras posições
do nome. No banco, porém, o cadastro automático grava o nome completo: o
TMA144BUT, ponto de entrada do padrão, aparece na tabela com os 9
caracteres. Antes de incluir um nome longo à mão, confira como os registros
automáticos do seu ambiente o gravaram.
Os itens definem o comportamento, para todas as filiais ou para filiais específicas:
| Campo | O que decide |
|---|---|
| Filial | Em branco, vale para todas; preenchida, vale para aquela filial |
| Situação | 1 - Habilitado: executa normalmente. 2 - Desabilitado: não executa, mesmo compilado. 3 - Retorno Padrão: não executa, e o Protheus devolve o resultado do campo Retorno padrão |
| Retorno padrão | Instrução AdvPL a ser macroexecutada. Só tem efeito quando a Situação é 3 |
Por filial: a filial logada tem prioridade
O sistema sempre prioriza o item da filial logada sobre o item de filial em branco. Isso resolve os três casos comuns:
- Desligar em todas as filiais: uma linha, filial em branco, Situação
2. - Desligar numa filial só: uma linha com a filial, Situação
2. - Deixar ligado numa filial só: duas linhas. Uma com a filial em branco e
Situação
2; outra com a filial desejada e Situação1. Não é preciso cadastrar as demais filiais.
Desligar ou fixar o retorno
Com o MT410TOK, o ponto de entrada do OK do pedido de venda, a diferença
fica clara.
Desabilitado tira a sua regra do caminho. O ponto de entrada não executa, mesmo compilado. É a escolha segura para “parou tudo, desliga”.
Retorno padrão é outra coisa: o Protheus não executa o seu código, mas
devolve o resultado da instrução informada. No exemplo da documentação, o
campo leva .T., e o ponto de entrada passa a devolver .T. sempre que é
acionado.
Num ponto de entrada cujo retorno o padrão usa, esse valor passa a decidir a
operação. No MT410TOK, o retorno é atribuído sem conferir o que o padrão já
tinha decidido, como explica o
artigo dele.
Antes de fixar um retorno, leia como o padrão trata o retorno daquele ponto
de entrada.
Para desabilitar:
- No Configurador, abra Ambiente > Cadastros > Catálogo de Personalização.
- Posicione no ponto de entrada e use Alterar.
- Na Situação, escolha
2 - Desabilitadoe confirme.
A partir daí, o ponto de entrada fica desativado no ambiente, sem apagar nada do repositório.
O que o catálogo não alcança
O catálogo trata só de pontos de entrada e templates. Não influencia:
- validações customizadas;
- gatilhos;
- os outros tipos de personalização.
E só tem efeito em aplicação com ambiente preparado: com login feito pelo
usuário ou com RpcSetEnv. Fora disso, ele não tem efeito.
Pela mesma razão, a documentação avisa que os pontos de entrada SXALTERPATH
e MSQUIT não seguem as regras do catálogo: o disparo deles pode ocorrer
antes da abertura dos dicionários de dados.
Se a regra problemática mora num X3_VALID ou num gatilho, desligar o ponto
de entrada vizinho não resolve. É preciso ir ao dicionário.
A armadilha de quem esquece o que desligou
Ao tentar executar uma customização desabilitada, o Protheus mostra a mensagem de que a função de usuário não está compilada no repositório. É a mesma cara de um fonte que nunca foi compilado. Quem não sabe que alguém desligou a função no catálogo perde tempo recompilando.
Por isso vale ter à mão a lista do que está fora da situação normal. Os
dados do catálogo ficam nas tabelas XX6 (cabeçalho) e XX7 (itens por
filial). As duas carregam a função e o tipo de função (1 ExecBlock, 2
Template Function), e é por esses dois campos que elas se ligam. Os
registros automáticos nascem com XX7_STATUS = '1' e filial em branco, o que
corresponde a 1 - Habilitado na tela. Esta consulta lista tudo o que tem
situação diferente de '1':
SELECT XX6.XX6_CODFUN, XX6.XX6_TYPE, XX7.XX7_FILIAL, XX7.XX7_STATUS,
XX7.XX7_DEFRET, XX6.XX6_DESC
FROM XX6010 XX6
JOIN XX7010 XX7
ON XX7.XX7_CODFUN = XX6.XX6_CODFUN
AND XX7.XX7_TYPE = XX6.XX6_TYPE
AND XX7.D_E_L_E_T_ = ' '
WHERE XX6.D_E_L_E_T_ = ' '
AND XX7.XX7_STATUS <> '1'
ORDER BY XX6.XX6_CODFUN, XX7.XX7_FILIALO 010 é o sufixo da empresa e muda de ambiente para ambiente. As colunas
foram conferidas num ambiente com dicionário no banco. Se a consulta falhar
no seu, confira a estrutura antes de concluir que o catálogo está vazio.
Rodar essa consulta antes de abrir chamado de “função não compilada” poupa uma recompilação.
Os seus pontos de entrada também ganham o interruptor
Se você cria pontos de entrada nas suas próprias rotinas, chame-os do mesmo jeito que o padrão chama os dele, testando a existência antes:
// Na gravação do cadastro de motoristas (ZA1): um ponto de entrada da
// própria customização, com o mesmo interruptor dos pontos do padrão.
If ExistBlock("ZA1GRV")
ExecBlock("ZA1GRV", .F., .F., {nOpc})
EndIfComo a chamada passa por ExistBlock, o ZA1GRV entra no catálogo na
primeira execução. Quem der suporte depois consegue desligá-lo pelo
Configurador, sem mexer no seu fonte. Se a mesma rotina chamasse
U_ZA1GRV() direto, o catálogo não teria como desligá-lo.
Referências
TDNtdn.totvs.com
TDN — Catálogo de Personalizações (CFGA030 - SIGACFG)TDNtdn.totvs.com
TDN — Procedimentos de Utilização (CFGA030 - SIGACFG)Central de Atendimentocentraldeatendimento.totvs.com
Central de Atendimento TOTVS — Desabilitar Customizações e Pontos de Entrada pelo Catálogo de PersonalizaçãoTDNtdn.totvs.com
TDN — ExecBlock, execução do ponto de entradaTDNtdn.totvs.com
TDN — Macro Substituição
Continue por aqui
- Vídeo
ProtheusGuia de processo
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.