Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

NomeTipoDescriçãoObrigatórioReferência
cFunctionCaracterNome da função que está chamando o objeto.X
cTitleCaracterTítulo da árvore de opções.

bProcessBloco de códigoBloco de execução que será executado ao confirmar a tela.X
cDescriptionCaracterDescrição da rotina

cPergCaracterNome do Pergunte (SX1) a ser utilizado na rotina.

aInfoCustomArray of RecordInformações adicionais carregada na árvore de opções. Estrutura:[1] - Nome da opção[2] - Bloco de execução[3] - Nome do bitmap[4] - Informações do painel auxiliar.

lPanelAuxLógicoSe .T. cria uma um novo painel auxiliar ao executar a rotina.

nSizePanelAuxNuméricoTamanho do painel auxiliar, utilizado quando lPanelAux = .T.

cDescriAuxCaracterDescrição a ser exibida no painel auxiliar.

lViewExecuteLógicoSe .T. exibe o painel de execução. Se falso, apenas executa a função sem exibir a régua de processamento.

lOneMeterLógico

Se .T. cria apenas uma régua de processamento.



lSchedAuto

Lógico

Se .T. habilita o botão de processamento em segundo plano (execução ocorre pelo Scheduler)

Disponivel a partir da lib 20240520



...



Exemplo:

oProcess:SaveLog("Gravacao Gravação de log")


Informações
titleObservações
  • A filial gravada no log é sempre a filial utilizada durante a operação.
  • A data gravada no log é sempre a data de login informada no sistema.
  • O usuário gravado é sempre o usuário logado no sistema.

...

Bloco de código
titleExemplo
linenumberstrue
#INCLUDE "PROTHEUS.CH"
#INCLUDE "RWMAKE.CH"

Static Function SchedDef()
       // aReturn[1] - Tipo
       // aReturn[2] - Pergunte
       // aReturn[3] - Alias
       // aReturn[4] - Array de ordem
       // aReturn[5] - Titulo
Return { "P", "MTA410", "", {}, "tNewProc" }

/*/{Protheus.doc} tNewProc
    Exemplo de implementação da classe tNewProcess com opção de processamento em segundo plano
    @type  Function
    @author Bruno Pirolo
    @since 26/04/2024
    @return nil
/*/
Function tNewProc()
Local bProcess := {|oSelf| Executa(oSelf) }    
Local cPerg := "MTA410"  
Local aInfoCustom := {}
Local oProcess

//Adiciona opções customizadas
Aadd(aInfoCustom,{"Visualizar",{|oCenterPanel| visualiza(oCenterPanel)},"WATCH" })
Aadd(aInfoCustom,{"Relatorio" ,{|oCenterPanel| Relat(oCenterPanel) },"RELATORIO"})

//Instancia o objeto tNewProcess
oProcess := tNewProcess():New("tNewPro"                         /*cFunction*/    ,; 
                              "Teste MsNewProcess"              /*cTitle*/       ,; 
                              bProcess                          /*bProcess*/     ,; 
                              "Breve descrição da rotina"       /*cDescription*/ ,; 
                              cPerg                             /*cPerg*/        ,; 
                              aInfoCustom                       /*aInfoCustom*/  ,; 
                              .T.                               /*lPanelAux*/    ,; 
                              5                                 /*nSizePanelAux*/,; 
                              "Descrição do painel Auxiliar"    /*cDescriAux*/   ,; 
                              .T.                               /*lViewExecute*/ ,;
                              .F.                               /*lOneMeter*/    ,;
                              .T.                               /*lSchedAuto*/) 

Return

/*/{Protheus.doc} Executa
    Função de processamento
    @type  Static Function
    @author Bruno Pirolo
    @since 26/04/2024
    @param oProcess, object, Objeto da classe TNewProcess
    @return return_var, return_type, return_description
    @example
    (examples)
    @see (links_or_references)
/*/
static Function Executa(oProcess)   
Local nCountC5 as numeric
Local nCountC6 as numeric

DbSelectArea("SC5")
DbSetOrder(1)

//Calcula a quantidade de registros na tabela SC5
count to nCountC5

//Posiciona no topo da tabela
DbGotop()

/*Define a quantidade de registros que serão processados na régua 1 (deverá 
  corresponder exatamente a quantidade de chamadas do metodométodo IncRegua1)*/
oProcess:SetRegua1(nCountC5)         

//Percorre os registros da tabela SC5
While SC5->(!Eof()) 	
    //Incrementa a régua de processamento 1
    oProcess:IncRegua1("Lendo Pedido de Venda:" + SC5->C5_NUM)   

    DbSelectArea("SC6")	
    DbSetOrder(1) //C6_FILIAL, C6_NUM, C6_ITEM, C6_PRODUTO
    
    //Elimina filtros criados na tabela SC6
    DbClearFil()	
    
    //Filtra os registros da SC6
    Set Filter to SC6->C6_FILIAL == xFilial("SC5") .And. SC6->C6_NUM == SC5->C5_NUM	
    
    //Calcula a quantidade de registros na tabela SC5
    COUNT to nCountC6	
    
    //Posiciona no topo da tabela
    DbGotop()	

    /*Define a quantidade de registros que serão processados na régua 2 (deverá 
      corresponder exatamente a quantidade de chamadas do metodométodo IncRegua2)*/
    oProcess:SetRegua2(nCountC6)	
    
    While SC6->(!Eof())
        //Incrementa a régua de processamento 2
        oProcess:IncRegua2("Pedido: "+SC5->C5_NUM+" - Item: "+SC6->C6_ITEM)    		
        //Grava log do processo (estes dados serão apresentados na opção Log de Processos do componente)
        oProcess:SaveLog("Item: "+SC6->C6_ITEM)	   		
        Conout("Pedido: "+SC5->C5_NUM+" - Item: "+SC6->C6_ITEM)
        SC6->(DbSkip())	
    End        	
    
    SC5->(DbSkip()) 
End
Return

/*/{Protheus.doc} visualiza
    Função de teste customizada
    @type  Static Function
    @author Bruno Pirolo
    @since 26/04/2024
    @param oCenterPanel, object, Objeto do Painel
    @return Nil
/*/
Static Function visualiza(oCenterPanel)  	
    @ 65,10 Say "Visualiza" SIZE 80,10 OF oCenterPanel PIXEL
Return 

/*/{Protheus.doc} Relat
    Função de teste customizada
    @type  Static Function
    @author Bruno Pirolo
    @since 26/04/2024
    @param oCenterPanel, object, Objeto do Painel
    @return Nil
/*/
Static Function Relat(oCenterPanel)
@ 65,10 Say "RelatorioRelatório" SIZE 80,10 OF oCenterPanel PIXEL
Return