No vídeo de hoje, vamos demonstrar em como executar uma validação de campo padrão e gatilho via AdvPL.
Hoje, a dúvida foi feita pelo grande Rafael, onde ele perguntou, se poderia através de uma customização, acionar a validação padrão dos campos e disparar os gatilhos.
Então nesse vídeo, é demonstrado exatamente como fazer isso, interceptando as validações do campo, acionando elas e os gatilhos existentes.
E abaixo o código fonte desenvolvido para exemplificar:
//Bibliotecas #Include "TOTVS.ch" /*/{Protheus.doc} User Function MA010BUT Ponto de entrada para adicionar funções no ButtonBar da Mata010 @type Function @author Atilio @since 16/03/2022 @see https://tdn.engpro.totvs.com.br/pages/releaseview.action?pageId=6087592 /*/ User Function MA010BUT() Local aArea := FWGetArea() Local aButtons := {} aAdd(aButtons, {'NOTE', {|| u_zVid0027()}, '* Atualizar Grupo', '* Grupos' } ) FWRestArea(aArea) Return aButtons /*/{Protheus.doc} User Function zVid0027 Função para simular a digitação do campo de grupo de produtos @type Function @author Atilio @since 16/03/2022 /*/ User Function zVid0027() Local aArea := FWGetArea() Local aPergs := {} Local cCampo := "B1_GRUPO" Local cGrupo := Space(TamSX3(cCampo)[1]) Local cVldSis := "" Local cVldUsr := "" Local lContinua := .T. Local cConteud := "" //Somente se for inclusão ou alteração If INCLUI .Or. ALTERA //Adicionando os parametros do ParamBox aAdd(aPergs, {1, "Grupo", cGrupo, "", ".T.", "SBM", ".T.", 80, .F.}) //Se a pergunta for confirma, chama a tela If ParamBox(aPergs, "Informe os parametros", , , , , , , , , .F., .F.) cConteud := MV_PAR01 //Busca as validações do campo cVldSis := GetSX3Cache(cCampo, "X3_VALID") cVldUsr := GetSX3Cache(cCampo, "X3_VLDUSER") //Altera o ReadVar da Memória __ReadVar := "M->" + cCampo M->B1_GRUPO := cConteud //Chama a validação do sistema If ! Empty(cVldSis) lContinua := &(cVldSis) EndIf //Chama a validação de usuário If ! Empty(cVldUsr) .And. lContinua lContinua := &(cVldUsr) EndIf //Se deu tudo certo nas validações If lContinua //Como a mata010 esta em mvc, é necessário atualizar o campo no modelo de dados FWFldPut(cCampo, cConteud) //Chama gatilho caso exista If ExistTrigger(cCampo) RunTrigger( ; 1,; //nTipo (1=Enchoice; 2=GetDados; 3=F3) Nil,; //Linha atual da Grid quando for tipo 2 Nil,; //Não utilizado ,; //Objeto quando for tipo 1 cCampo; //Campo que dispara o gatilho ) EndIf Else Help(, , "Help", , "Falha ao validar o grupo!", 1, 0, , , , , , {"Verifique se o código do grupo informado esta correto"}) EndIf EndIf EndIf FWRestArea(aArea) Return
Bom pessoal, por hoje é só.
Abraços e até a próxima.