Não consigo utilizar a função FWSX1UTIL. Sempre que tento usar o FWSX1Util():AddGroup() ele retorna NIL independente do que colocar, já tentei de tudo e de várias formas. Alguém consegue me dar um exemplo bom? Ou algo que estava errando?
Não consigo utilizar a função FWSX1UTIL. Sempre que tento usar o FWSX1Util():AddGroup() ele retorna NIL independente do que colocar, já tentei de tudo e de várias formas. Alguém consegue me dar um exemplo bom? Ou algo que estava errando?
Lucas,
Abaixo um exemplo de utilização da classe FWSX1Util:
#include "protheus.ch"
//Trocar conforme ambiente
#define C_GRUPO_EMPRESA "99"
#define C_FILIAL_COMPLETA "01"
//Trocar conforme a busca no SX1
#define C_PERGUNTE_X1 "FIN080"
//Exemplo de Pergute que não existe
#define C_PERG_ERRADO "ÇAPÚ-KURURUH"
//Posições do array de retorno do método getGroup da FWSX1Util
#define N_GROUP_ID_PERGUNTE 1
#define N_GROUP_DADOS_PERGUNTE 2
//------------------------------------------------------------------
/*/{Protheus.doc} x1Example
Exemplo de utilização da classe FWSX1Util
@author Daniel Mendes
@since 31/05/2022
@version 1.0
/*/
//-------------------------------------------------------------------
user function x1Example()
local oSX1 as object
rpcSetEnv(C_GRUPO_EMPRESA, C_FILIAL_COMPLETA)
oSX1 := FWSX1Util():New()
oSX1:addGroup(C_PERGUNTE_X1) //Funciona
oSX1:addGroup(C_PERG_ERRADO) //Não existe
oSX1:searchGroup()
exibeX1Console(oSX1, C_PERGUNTE_X1)
exibeX1Console(oSX1, C_PERG_ERRADO)
exibeX1Console(oSX1, "XISTO") //Esse eu nem mesmo adicionei via addGroup, vai retornar vazio
freeObj(oSX1)
rpcClearEnv()
return
//------------------------------------------------------------------
/*/{Protheus.doc} exibeX1Console
Exibe alguns dados do SX1 no console
@param oSX1, object, FWSX1Util
@param cPerg, character, Pergunte
@author Daniel Mendes
@since 31/05/2022
@version 1.0
/*/
//-------------------------------------------------------------------
static function exibeX1Console(oSX1, cPerg)
local aPergs as array
local nSize as numeric
local nI as numeric
aPergs := oSX1:getGroup(cPerg)
nSize := len(aPergs)
if nSize == 0 .or. (nSize >= N_GROUP_DADOS_PERGUNTE .and. empty(aPergs[N_GROUP_DADOS_PERGUNTE]))
conErr(cPerg + ": Pergunte nao encontrado no SX1")
conOut("") //Quebra de linha
else
conOut("Pergunte:" + aPergs[N_GROUP_ID_PERGUNTE])
for nI := 1 to Len(aPergs[N_GROUP_DADOS_PERGUNTE])
conOut(aPergs[N_GROUP_DADOS_PERGUNTE][nI]:cX1_Pergunt)
conOut(aPergs[N_GROUP_DADOS_PERGUNTE][nI]:cX1_Tipo)
conOut(aPergs[N_GROUP_DADOS_PERGUNTE][nI]:cX1_Ordem)
conOut("") //Quebra de linha
next
endif
aSize(aPergs, 0)
return
Documentação: https://tdn.totvs.com/display/framework/FWSX1Util