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.
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
Boa tarde Felipe.
No caso, a sua user function também se chama TEST? Pois o SetFunName deixa o nome da função, mas as vezes o prw tem um nome e a user function tem outro.
Fico no aguardo.
Eu consigo gerar uma rotina automatica para qualquer rotina em MVC da TOTVS? Ou ela tem que estar preparada para isso?
Creio eu que, mais de 90% de funções MVC da TOTVS você consegue usar o ExecAuto.
Só pelo fato de ter ModelDef e ViewDef você já consegue executar de maneira automática.