cFunNameNome da rotina de menu associada ao processamento.
AdvPL GuiaFWGridProcess():New( cFunName, cTitle, cDescription, bProcess, [cPerg], [cGrid], [lSaveLog] )Cria uma interface padronizada para parametrizar, acompanhar e executar processamentos AdvPL, inclusive com divisão do trabalho em múltiplas threads.
FWGridProcess organiza rotinas de processamento em uma interface com informações, perguntas SX1, log e configuração de concorrência. A rotina principal é recebida em um bloco de código; quando uma função de grid é informada, CallExecute() distribui unidades de trabalho entre as threads configuradas. Réguas de progresso, cancelamento e gravação de log ajudam a acompanhar execuções demoradas.
FWGridProcess():New( cFunName, cTitle, cDescription, bProcess, [cPerg], [cGrid], [lSaveLog] )cFunNameNome da rotina de menu associada ao processamento.
cTitleTítulo exibido na interface.
cDescriptionDescrição apresentada na área de informações.
bProcessBloco que executa o processamento e recebe, por referência, o indicador lógico de cancelamento.
cPergGrupo de perguntas SX1 usado para montar a tela de parâmetros.
cGridNome da função executada por CallExecute() quando o processamento em grid estiver configurado.
lSaveLogHabilita a persistência das mensagens enviadas por SaveLog() no log de processamento SXU.
New() retorna a instância de FWGridProcess. IsFinished() informa se o processamento terminou; CallExecute() devolve o resultado do controle da execução da unidade enviada ao grid.
#Include "TOTVS.ch"
User Function ExGridProcess()
Local oProcesso
oProcesso := FWGridProcess():New( ;
"MATA330", ;
"Processamento", ;
"Exemplo de processamento em grade", ;
{|lCancelar| U_ExProcessa(oProcesso, @lCancelar)}, ;
"MTA330", ;
"U_ExUnidade" ;
)
oProcesso:SetMeters(2)
oProcesso:SetThreadGrid(5)
oProcesso:Activate()
If oProcesso:IsFinished()
MsgInfo("Processamento concluído.", "FWGridProcess")
Else
MsgAlert("Processamento cancelado ou finalizado com erro.", "FWGridProcess")
EndIf
ReturnA classe abre a interface padronizada. A área Informações apresenta o título, a descrição e os comandos de execução.
// O grupo MTA330 informado no construtor
// alimenta automaticamente a área Perguntas.
oProcesso := FWGridProcess():New( ;
"MATA330", cTitulo, cDescricao, bProcesso, ;
"MTA330", "U_ExUnidade" ;
)Os parâmetros do grupo SX1 são exibidos em uma área própria, com controles adequados ao tipo de cada pergunta.
User Function ExProcessa(oProcesso, lCancelar)
Local nGrupo
Local nItem
oProcesso:SetMaxMeter(4, 1, "Grupos")
For nGrupo := 1 To 4
oProcesso:SetMaxMeter(10, 2, "Itens")
For nItem := 1 To 10
If !oProcesso:CallExecute("Unidade carregada", 1)
lCancelar := .T.
EndIf
oProcesso:SetIncMeter(2)
If lCancelar
Exit
EndIf
Next nItem
If lCancelar
Exit
EndIf
oProcesso:SetIncMeter(1)
Next nGrupo
Return
User Function ExUnidade(cParametro, lErro)
// Processe uma unidade independente nesta função.
Sleep(1000)
Return .T.A configuração permite escolher o número de processos simultâneos. Cada régua acompanha um nível do trabalho e CallExecute() encaminha a unidade à função de grid.
oProcesso:SaveLog("Início do lote " + cValToChar(nGrupo))
If lCancelar
oProcesso:SaveLog("Processamento cancelado pelo usuário")
Else
oProcesso:SaveLog("Processamento concluído")
EndIf
ConOut(oProcesso:GetLastLog())As mensagens podem ser acompanhadas na área Log de Processos e, quando habilitado no construtor, persistidas no controle SXU.
© 2026 Usina.BR. Todos os direitos reservados. TOTVS, Protheus, Microsiga e seus respectivos logotipos são marcas de titularidade da TOTVS S.A. AdvPL é uma linguagem de programação desenvolvida pela TOTVS. O AdvPL Guia é um projeto independente, sem vínculo, representação, patrocínio ou afiliação com a TOTVS S.A., suas franquias ou representantes.