Olá pessoal…
Recentemente desenvolvi uma rotina que retorna o código da última pergunta executada pelo Protheus (SX1, através da rotina Pergunte).
Mas qual seria a funcionalidade real da rotina? Simples, existem várias funções no padrão, que chamam duas ou três perguntas diferentes (como Documento de Saída) e através de pontos de entrada, precisamos saber qual foi a última pergunta executada, foi por essa necessidade que a rotina foi desenvolvida.
A rotina basicamente, verifica se o grupo de perguntas, não está no início, caso não esteja, volta 1 registro, pois toda vez que a rotina Pergunte é chamada, ela não volta o ponteiro na SX1, portanto, sempre ao voltar 1, foi a última pergunta carregada na memória.
//Bibliotecas
#Include "Protheus.ch"
/*/{Protheus.doc} zLastPerg
Retorna a última pergunta executada pelo Protheus
@type function
@author Atilio
@since 05/03/2016
@version 1.0
@return cPerg, Código da pergunta
/*/
User Function zLastPerg()
Local aArea := GetArea()
Local aAreaX1 := SX1->(GetArea())
Local cPerg := ""
DbSelectArea("SX1")
//Se não tiver no começo da tabela
If ! SX1->(BoF())
//Volta um registro e pega o grupo
SX1->(DbSkip(-1))
cPerg := SX1->X1_GRUPO
EndIf
RestArea(aAreaX1)
RestArea(aArea)
Return cPerg
Bom pessoal, por hoje é só.
Abraços e até a próxima.
