GetArea()Não recebe argumentos. Retorna um array com Alias(), IndexOrd() e Recno() do ambiente capturado.
AdvPL GuiaaArea := GetArea() // ... processamento ... RestArea(aArea)Preserve alias, ordem e registro antes de navegar por tabelas e devolva ao chamador o mesmo contexto de trabalho.
Em AdvPL, uma rotina que seleciona aliases, altera ordens ou movimenta registros pode modificar o ambiente que o código chamador esperava continuar usando. GetArea() captura o alias ativo, a ordem selecionada e o registro corrente; RestArea() restaura esse conjunto. Quando a rotina também manipula um alias conhecido, preserve tanto a área geral quanto a área específica. Restaure primeiro o alias manipulado e, por último, a área geral, pois a última área restaurada permanece ativa. A documentação e os exemplos atuais também apresentam FWGetArea() e FWRestArea() como evolução no Framework; confirme a disponibilidade na LIB do ambiente e use o par adotado pelo projeto de forma consistente.
aArea := GetArea() // ... processamento ... RestArea(aArea)GetArea()Não recebe argumentos. Retorna um array com Alias(), IndexOrd() e Recno() do ambiente capturado.
Alias->(GetArea())Captura o estado de uma área específica sem torná-la definitivamente a área ativa da rotina.
RestArea(aArea)Recebe o array criado por GetArea() e restaura alias, ordem e registro. A última restauração determina a área ativa.
GetArea() retorna um array com o alias, a ordem e o número do registro atuais. RestArea() usa esse array para recompor o ambiente salvo.
#Include "TOTVS.ch"
User Function ExConsultaCliente()
Local aAreaAnterior := GetArea()
Local cNomeCliente := ""
DbSelectArea("SA1")
SA1->(DbSetOrder(1))
If SA1->(DbSeek(xFilial("SA1") + "000001"))
cNomeCliente := SA1->A1_NOME
EndIf
RestArea(aAreaAnterior)
Return cNomeClienteA consulta pode usar SA1 sem deixar essa tabela, sua ordem ou seu registro como contexto ativo do chamador.
#Include "TOTVS.ch"
User Function ExValidaProduto()
Local aAreaAnterior := GetArea()
Local aAreaSB1 := SB1->(GetArea())
Local lEncontrado := .F.
DbSelectArea("SB1")
SB1->(DbSetOrder(1))
lEncontrado := SB1->(DbSeek(xFilial("SB1") + "000001"))
// Primeiro restaura o alias manipulado.
SB1->(RestArea(aAreaSB1))
// Por último restaura a área que o chamador deixou ativa.
RestArea(aAreaAnterior)
Return lEncontradoSB1 recupera sua posição anterior e a rotina devolve ao chamador o ambiente geral que recebeu.
#Include "TOTVS.ch"
User Function ExAreaFramework()
Local aAreaAnterior := FWGetArea()
Local aAreaSC5 := SC5->(FWGetArea())
DbSelectArea("SC5")
SC5->(DbSetOrder(1))
SC5->(DbGoTop())
FWRestArea(aAreaSC5)
FWRestArea(aAreaAnterior)
ReturnO mesmo padrão é aplicado com as funções do Framework, desde que estejam disponíveis na LIB homologada.
© 2026 Usina.BR. Todos os direitos reservados. TOTVS, Protheus, Microsiga e seus respectivos logotipos são marcas de seus titulares. O AdvPL Guia é independente e utiliza citações limitadas, atribuídas e justificadas por finalidade educativa. Consulte os Termos de Uso. Termos de Uso