ExistBlock
Verifica se um Ponto de Entrada existe no RPO antes de chama-lo. Sempre cheque antes de ExecBlock — caso contrario quebra.
Assinatura: ExistBlock(cPE) -> lExiste
Retorna: Logical
Pontos de Entrada (PE) sao funcoes que o sistema chama em momentos pre-definidos (antes/depois de gravar, validar, etc.) pra permitir customizacao sem alterar fonte padrao. ExistBlock verifica se o PE existe; ExecBlock executa.
Sintaxe
If ExistBlock("NOME_DO_PE")
xRet := ExecBlock("NOME_DO_PE", .F., .F.)
EndIfExemplo
// Validacao customizada antes de gravar cliente (MA030VLD):
If ExistBlock("MA030VLD")
lOk := ExecBlock("MA030VLD", .F., .F.)
If !lOk
Help(...,..., "Bloqueado pela customizacao")
Return .F.
EndIf
EndIfPegadinhas
- Sempre
ExistBlockantes — chamarExecBlocknum PE inexistente lanca runtime error - Parametros 2 e 3 do ExecBlock:
.F., .F.= nao mostra mensagem nem stop em erro. Padrao - Convencao de nome: PEs padrao tem nome documentado no TDN (ex: MA030VLD, MT100GRV). Custom PE pode ter qualquer nome
- Cuidado com recursao: se o PE chama a propria rotina, garantir flag de saida
Diferenca de gatilho
Gatilhos (X3_TRIGGER, X3_RELACAO) sao por campo. PEs sao por momento da rotina. Funcoes diferentes.
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
cNomePE | Character | sim | Nome do Ponto de Entrada |
Exemplos
Padrao seguro
If ExistBlock("MA030VLD")
lOk := ExecBlock("MA030VLD", .F., .F.)
EndIf