IsBlind ADVPL: Como Verificar Conexões Sem Interface no Protheus

Tempo de leitura: 3 minutos

Neste post, vamos aprender de forma objetiva como utilizar a função IsBlind em ADVPL. Esta função é essencial para identificar se o código está sendo executado em um ambiente com interface gráfica (SmartClient) ou em segundo plano (Jobs, Web Services ou RPC), permitindo que você evite erros de interface em processos automáticos.

 

A IsBlind faz parte da biblioteca de Controle de Processamentos em ADVPL, sendo uma das ferramentas mais importantes para garantir a estabilidade de customizações que rodam tanto via menu quanto via agendamento. Dominar essa verificação é um passo fundamental na trilha de ADVPL Avançado.

A utilização da função é extremamente simples, pois ela não requer parâmetros de entrada e retorna um valor lógico.

 

Sintaxe:

IsBlind()
 

Retorno:

 

Exemplo da função IsBlind em ADVPL:

#include 'protheus.ch'
#include 'rwmake.ch'
#INCLUDE "TBICONN.CH"
/*{Protheus.doc} User Function fIsBlind
    (Essa função tem por finalidade mostrar a função IsBlind em ADVPL)
    @type  Function
    @author Adilio Costa
    @since 12/12/2024
    @version 1.0

@?Inscreva-se no Blog ProtheusAdvpl:
https://www.protheusadvpl.com.br
@?Inscreva-se no Canal ProtheusAdvpl:
https://www.youtube.com/protheusadvpl
@?Siga-nos no Instagram:
https://www.instagram.com/protheusadvpl
@?Conheça os Cursos e Formações do ProtheusAdvpl:
https://cursos-e-formacoes-protheusadvpl.gr-site.com/

@Participe de nossas comunidades no WhatsApp:
-Comunidade Protheus Backoffice:https://chat.whatsapp.com/KMUIAjwZ6EZ6eAHsLkPTyb
-Comunidade Protheus-RH:https://chat.whatsapp.com/L5dUyAna6xU4ylG5DUgfOW
-Comunidade Protheus-Programação:https://chat.whatsapp.com/LsD6z0apdqKHlOz67bcaEn
-Comunidade Protheus-Framework:https://chat.whatsapp.com/BzUFpjaSnTC3vtsfa77jmG

|Se esse conteúdo foi útil pra você nos ajude divulgando 
ele e nossas redes sociais!!|
*/

User Function fIsBlind()
	Local aArea      := FWGetArea()
	Local cMsg  := ""

	// Verifica se a conexão é "cega" (sem interface)
If IsBlind()
	// Se for .T., registramos apenas no console/log do servidor
	ConOut("[INFO] Processo executado em background. Interface IsBlind = .T.")
Else
	// Se for .F., podemos interagir com o usuário na tela
	cMsg := "A conexão atual possui interface gráfica ativa."
	
	// Exemplo de função que exige interface: MsgStop
	// Link de referência: https://protheusadvpl.com.br/mostrando-uma-mensagem-de-advertencia-na-tela-com-msgstop-em-advpl/
	MsgStop(cMsg, "Validação de Interface")
EndIf
Return

Explicação do Código

  1. Verificação Inicial: O If IsBlind() separa o fluxo de execução.
  2. Ambiente Background: Usamos a função ConOut para enviar informações ao console do Log do AppServer, já que não há tela.
  3. Ambiente Foreground: Quando detectamos interface (.F., utilizamos a função MsgStop() para exibir um alerta visual ao usuário. Se o processo fosse um Job, a chamada da MsgStop() travaria a execução.
 
 

Boas Práticas e Recomendações

Ao desenvolver rotinas customizadas, sempre considere o uso do IsBlind antes de qualquer chamada que envolva a interface (FWMsgRun, MsgInfo, MsDialog, etc). Isso garante que seu código seja portável e seguro para ser agendado no configurador (SIGACFG).

 

Se você deseja aprofundar seus conhecimentos em processamentos robustos, recomendo verificar a documentação da função FWMsgRun() no portal da TOTVS, que é amplamente utilizada para mostrar réguas de processamento em tempo real.

 

Conclusão

A função IsBlind é um pilar de segurança no desenvolvimento ADVPL avançado. Com ela, evitamos que rotinas automatizadas falhem por tentar interagir com uma interface inexistente, elevando a qualidade e a confiabilidade das suas customizações no Protheus.

 

 

 
🚀 Quer evoluir no ADVPL de verdade?

Receba conteúdos práticos, códigos prontos e dicas que você 

 não aprende na documentação oficial

✔ Funções essenciais do ADVPL
✔ Exemplos reais usados no Protheus
✔ Dicas de debug e performance

🔐 Seu email está seguro. Sem spam.
 

 

 

Participe das nossas comunidades:

 

 
 
 

Resumindo

  • IsBlind identifica se a execução ocorre com ou sem interface gráfica (SmartClient).
  • Essencial para evitar erros em Jobs, Web Services e processos agendados.
  • Use sempre antes de funções como MsgStop() ou FWMsgRun().

 

 

 

Bem, finalizamos mais um post aqui no blog. Espero que você tenha entendido, qualquer dúvida nos envie um e-mail para adiliocosta@protheusadvpl.com.br. Grande abraço e fica com Deus.

Links de referência(s):

 
🚀 Quer dominar o Protheus de verdade?
Entre para o ProtheusAdvpl e receba conteúdos exclusivos sobre desenvolvimento, infraestrutura, módulos e carreira no Protheus

✔ Conteúdos organizados por categorias (Programação, Framework, Backoffice e RH)
✔ Dicas práticas usadas no dia a dia do Protheus
✔ Acesso a materiais, post e atualizações do Blog
🔐 Seu email está seguro. Sem spam. Só conteúdo profissional.