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.