Vídeo Aula – AdvPL 024 – Rotinas Automáticas em MVC

Olá pessoal…

Na aula de hoje vou mostrar como executar rotinas automáticas em MVC com FWExecView e FWMVCRotAuto.



Abaixo o código fonte de exemplo da FWExecView.

//Bibliotecas
#Include 'Protheus.ch'
#Include 'FWMVCDef.ch'

/*/{Protheus.doc} zExecView
Função de teste que demonstra o funcionamento da FWExecView
@type function
@author Atilio
@since 24/10/2016
@version 1.0
	@example
	u_zExecView()
@obs Se a rotina tiver grid, provavelmente será necessário declarar a variável "n" como private
/*/
User Function zExecView()
	Local aArea := GetArea()
	Local cFunBkp     := FunName()
	
	DbSelectArea('ZZ1')
	ZZ1->(DbSetOrder(1)) //Filial + Código
	
	//Se conseguir posicionar
	If ZZ1->(DbSeek(FWxFilial('ZZ1') + "000002"))
		SetFunName("zModel1")
		FWExecView('Visualizacao Teste', 'zModel1', MODEL_OPERATION_VIEW)
		SetFunName(cFunBkp)
	EndIf
	
	RestArea(aArea)
Return

Abaixo o código fonte de exemplo da FWMVCRotAuto.

//Bibliotecas
#Include 'Protheus.ch'
#Include 'FWMVCDef.ch'

/*/{Protheus.doc} zRotAuto
Exemplo de ExecAuto utilizando MVC (inclusão na ZZ1)
@type function
@author Atilio
@since 24/10/2016
@version 1.0
	@example
	u_zRotAuto()
/*/
User Function zRotAuto()
	Local aArea         := GetArea()
	Local aDados        := {}
	Private aRotina     := StaticCall(zModel1, MenuDef)
	Private oModel      := StaticCall(zModel1, ModelDef)
	Private lMsErroAuto := .F.
	
	//Adicionando os dados do ExecAuto
	aAdd(aDados, {"ZZ1_DESC", "ROT AUTO", Nil})
	
	//Chamando a inclusão - Modelo 1
	lMsErroAuto := .F.
	FWMVCRotAuto(	oModel,;                        //Model
					"ZZ1",;                         //Alias
					MODEL_OPERATION_INSERT,;        //Operacao
					{{"FORMZZ1", aDados}})          //Dados
	
	//Se tiver mais de um Form, deve se passar dessa forma:
	// {{"ZZ2MASTER", aAutoCab}, {"ZZ3DETAIL", aAutoItens}})
	
	//Se houve erro no ExecAuto, mostra mensagem
	If lMsErroAuto
		MostraErro()
	
	//Senão, mostra uma mensagem de inclusão	
	Else
		MsgInfo("Registro incluido!", "Atenção")
	EndIf
	
	RestArea(aArea)
Return

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

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

4 Responses

  1. Felipe disse:

    Boa tarde!

    Cara tentei fazer da mesma maneira que foi indicada por você, porém está gerando um errorlog.

    (argumento #0 , parâmetro oObj erro, previsto O->U on FWFORMVIEW:SETMODEL(FWFORMVIEW.PRW) 12/07/2019 17:27:31 line : 715)

    Estou passando o nome do Fonte certinho, porém não funciona na hora de invoca-lo.

    (
    SetFunName(“TEST”)
    FWExecView(‘Visualizacao Teste’, ‘TEST’, MODEL_OPERATION_UPDATE)
    SetFunName(cFunBkp)
    )

    TEST.PRW => É o nome do fonte com os construtores MVC

  2. CAIO MAIOR GARCIA disse:

    Eu consigo gerar uma rotina automatica para qualquer rotina em MVC da TOTVS? Ou ela tem que estar preparada para isso?

Deixe uma resposta para CAIO MAIOR GARCIACancelar resposta

Terminal de Informação