Função para executar fórmulas no Protheus 12

Função para executar fórmulas no Protheus 12

Olá pessoal…

Como é de conhecimento de muitos analistas, o Fórmulas foi bloqueado no Protheus 12 para execução de blocos de código, pensando nisso, criei uma função bem prática para executar blocos de código.

Antes de mais nada, eu sei que é possível executar no lançamento padrão, porém essa rotina foi criada devido a praticidade de apenas colocar no menu e executar quantas vezes quiser a expressão digitada.

Essa função, você consegue colocar em um menu (cuidado para deixar exposto para qualquer usuário), e nela você consegue executar a fórmula digitada (até mais de uma vez). A tela é bem simples, tem um campo para digitação e o botão de execução.

Mini Fórmulas
Mini Fórmulas

Abaixo o código fonte criado:

//Bibliotecas
#Include "Protheus.ch"

/*/{Protheus.doc} zMiniForm
Função Mini Fórmulas, para executar fórmulas
@author Atilio
@since 17/12/2017
@version 1.0
@type function
@obs Assim como o fórmulas foi bloqueado no Protheus 12, cuidado ao deixar exposto no menu o Mini Fórmulas
/*/

User Function zMiniForm()
	Local aArea := GetArea()
	//Variáveis da tela
	Private oDlgForm
	Private oGrpForm
	Private oGetForm
	Private cGetForm := Space(250)
	Private oGrpAco
	Private oBtnExec
	//Tamanho da Janela
	Private nJanLarg := 500
	Private nJanAltu := 120
	Private nJanMeio := ((nJanLarg)/2)/2
	Private nTamBtn  := 048
	
	//Criando a janela
	DEFINE MSDIALOG oDlgForm TITLE "zMiniForm - Execução de Fórmulas" FROM 000, 000  TO nJanAltu, nJanLarg COLORS 0, 16777215 PIXEL
		//Grupo Fórmula com o Get
		@ 003, 003  GROUP oGrpForm TO 30, (nJanLarg/2)-1        PROMPT "Fórmula: " OF oDlgForm COLOR 0, 16777215 PIXEL
			@ 010, 006  MSGET oGetForm VAR cGetForm SIZE (nJanLarg/2)-9, 013 OF oDlgForm COLORS 0, 16777215 PIXEL
		
		//Grupo Ações com o Botão
		@ (nJanAltu/2)-30, 003 GROUP oGrpAco TO (nJanAltu/2)-3, (nJanLarg/2)-1 PROMPT "Ações: " OF oDlgForm COLOR 0, 16777215 PIXEL
			@ (nJanAltu/2)-24, nJanMeio - (nTamBtn/2) BUTTON oBtnExec PROMPT "Executar" SIZE nTamBtn, 018 OF oDlgForm ACTION(fExecuta()) PIXEL
		
	//Ativando a janela
	ACTIVATE MSDIALOG oDlgForm CENTERED
	
	RestArea(aArea)
Return

/*---------------------------------------*
 | Func.: fExecuta                       |
 | Desc.: Executa a fórmula digitada     |
 *---------------------------------------*/

Static Function fExecuta()
	Local aArea    := GetArea()
	Local cFormula := Alltrim(cGetForm)
	Local cError   := ""
	Local bError   := ErrorBlock({ |oError| cError := oError:Description})
	
	//Se tiver conteúdo digitado
	If ! Empty(cFormula)
		//Inicio a utilização da tentativa
		Begin Sequence
			&(cFormula)
		End Sequence
		
		//Restaurando bloco de erro do sistema
		ErrorBlock(bError)
		
		//Se houve erro, será mostrado ao usuário
		If ! Empty(cError)
			MsgStop("Houve um erro na fórmula digitada: "+CRLF+CRLF+cError, "Atenção")
		EndIf
	EndIf
	
	RestArea(aArea)
Return

Esses e outros códigos, estão disponíveis gratuitamente no nosso GitHub, acesse em github.com/dan-atilio/AdvPL.
Caso queira uma customização específica para sua empresa, saiba mais em nossa Loja.

Bom pessoal, por hoje é só.
Abraços e até a próxima.

About Dan_Atilio

Analista e desenvolvedor de sistemas. Técnico em Informática pelo CTI da Unesp. Graduado em Banco de Dados pela Fatec Bauru. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor do projeto Terminal de Informação, onde são postados tutoriais e notícias envolvendo o mundo da tecnologia.

6 comentários em “Função para executar fórmulas no Protheus 12

  1. Desculpa, mas eu não entendi… usamos o P12 desde a versão 12.1.7 hoje estamos na 12.1.17 e eu sempre usei o Fórmulas para testar várias rotinas…. Quando que ele foi bloqueado??? Foi esses dias???

Deixe uma resposta

%d blogueiros gostam disto: