|
Bem Vindo, Visitante
|
Todos os Fórums
ADVPL
|
Imprimir
Enviar Para um Amigo Precisa estar Logado
|
|
|
Assunto: |
PutSX1 Descontinuado no Protheus 12? |
|
Versão: |
. |
|
Plataforma: |
. |
Complemento: |
|
|
DB: |
. |
Complemento: |
|
|
|
|
|
Mensagem do
LEXX
em 06/02/2017, 10:26 h
Local: MG Registro: 01/07/2015 Postagens: 87 |
Bom dia pessoal, estava usando um relatório customizado na 11 e quando coloquei na 12, começou a dar erro, fui verificar e o PutSX1 não criou a pergunta do relatório.
No link do TDN tem uma observação: Função não disponível no Protheus 12.
http://tdn.totvs.com/pages/releaseview.action;jsessionid=B53926AEF5304F339ECD16467CB67C8F?pageId=244740739
Alguém sabe, se existe outra função substituta?
Atenciosamente,
Alexandre Gonçalves
Analista/Programador
|
|
|
Mensagem do
JFERNANDE
em 08/02/2017, 13:57 h
Local: SP Registro: 19/05/2014 Postagens: 3 |
Você pode criar uma static function igual a PutSX1 com outro nome.
Segue abaixo:
Static Function xPutSx1(cGrupo,cOrdem,cPergunt,cPerSpa,cPerEng,cVar,;
cTipo ,nTamanho,nDecimal,nPresel,cGSC,cValid,;
cF3, cGrpSxg,cPyme,;
cVar01,cDef01,cDefSpa1,cDefEng1,cCnt01,;
cDef02,cDefSpa2,cDefEng2,;
cDef03,cDefSpa3,cDefEng3,;
cDef04,cDefSpa4,cDefEng4,;
cDef05,cDefSpa5,cDefEng5,;
aHelpPor,aHelpEng,aHelpSpa,cHelp)
LOCAL aArea := GetArea()
Local cKey
Local lPort := .f.
Local lSpa := .f.
Local lIngl := .f.
cKey := "P." + AllTrim( cGrupo ) + AllTrim( cOrdem ) + "."
cPyme := Iif( cPyme == Nil, " ", cPyme )
cF3 := Iif( cF3 == NIl, " ", cF3 )
cGrpSxg := Iif( cGrpSxg == Nil, " ", cGrpSxg )
cCnt01 := Iif( cCnt01 == Nil, "" , cCnt01 )
cHelp := Iif( cHelp == Nil, "" , cHelp )
dbSelectArea( "SX1" )
dbSetOrder( 1 )
// Ajusta o tamanho do grupo. Ajuste emergencial para validação dos fontes.
// RFC - 15/03/2007
cGrupo := PadR( cGrupo , Len( SX1->X1_GRUPO ) , " " )
If !( DbSeek( cGrupo + cOrdem ))
cPergunt:= If(! "?" $ cPergunt .And. ! Empty(cPergunt),Alltrim(cPergunt)+" ?",cPergunt)
cPerSpa := If(! "?" $ cPerSpa .And. ! Empty(cPerSpa) ,Alltrim(cPerSpa) +" ?",cPerSpa)
cPerEng := If(! "?" $ cPerEng .And. ! Empty(cPerEng) ,Alltrim(cPerEng) +" ?",cPerEng)
Reclock( "SX1" , .T. )
Replace X1_GRUPO With cGrupo
Replace X1_ORDEM With cOrdem
Replace X1_PERGUNT With cPergunt
Replace X1_PERSPA With cPerSpa
Replace X1_PERENG With cPerEng
Replace X1_VARIAVL With cVar
Replace X1_TIPO With cTipo
Replace X1_TAMANHO With nTamanho
Replace X1_DECIMAL With nDecimal
Replace X1_PRESEL With nPresel
Replace X1_GSC With cGSC
Replace X1_VALID With cValid
Replace X1_VAR01 With cVar01
Replace X1_F3 With cF3
Replace X1_GRPSXG With cGrpSxg
If Fieldpos("X1_PYME") > 0
If cPyme != Nil
Replace X1_PYME With cPyme
Endif
Endif
Replace X1_CNT01 With cCnt01
If cGSC == "C" // Mult Escolha
Replace X1_DEF01 With cDef01
Replace X1_DEFSPA1 With cDefSpa1
Replace X1_DEFENG1 With cDefEng1
Replace X1_DEF02 With cDef02
Replace X1_DEFSPA2 With cDefSpa2
Replace X1_DEFENG2 With cDefEng2
Replace X1_DEF03 With cDef03
Replace X1_DEFSPA3 With cDefSpa3
Replace X1_DEFENG3 With cDefEng3
Replace X1_DEF04 With cDef04
Replace X1_DEFSPA4 With cDefSpa4
Replace X1_DEFENG4 With cDefEng4
Replace X1_DEF05 With cDef05
Replace X1_DEFSPA5 With cDefSpa5
Replace X1_DEFENG5 With cDefEng5
Endif
Replace X1_HELP With cHelp
PutSX1Help(cKey,aHelpPor,aHelpEng,aHelpSpa)
MsUnlock()
Else
lPort := ! "?" $ X1_PERGUNT .And. ! Empty(SX1->X1_PERGUNT)
lSpa := ! "?" $ X1_PERSPA .And. ! Empty(SX1->X1_PERSPA)
lIngl := ! "?" $ X1_PERENG .And. ! Empty(SX1->X1_PERENG)
If lPort .Or. lSpa .Or. lIngl
RecLock("SX1",.F.)
If lPort
SX1->X1_PERGUNT:= Alltrim(SX1->X1_PERGUNT)+" ?"
EndIf
If lSpa
SX1->X1_PERSPA := Alltrim(SX1->X1_PERSPA) +" ?"
EndIf
If lIngl
SX1->X1_PERENG := Alltrim(SX1->X1_PERENG) +" ?"
EndIf
SX1->(MsUnLock())
EndIf
Endif
RestArea( aArea )
Return |
|
|
Mensagem do
LEXX
em 09/02/2017, 13:45 h
Local: MG Registro: 01/07/2015 Postagens: 87 |
vlw, obrigado. |
|
|
Mensagem do
RIARSANSA
em 03/11/2017, 15:31 h
Local: 15 Registro: 03/11/2017 Postagens: 2 |
Muito obrigado. :) |
|
|
Mensagem do
RIARSANSA
em 03/11/2017, 15:31 h
Local: 15 Registro: 03/11/2017 Postagens: 2 |
Muito obrigado. :) |
|
|
Mensagem do
KELSON
em 03/06/2019, 14:51 h
Local: SP Registro: 17/11/2006 Postagens: 6 |
Boa tarde!
Agora com o protheus 12 lobo guara o dicionário irá para o banco de dados aonde não posso mais acessar as tabelas diretamente.. |
|
|
Mensagem do
THIAGOANDR
em 04/06/2019, 06:55 h
Local: SP Registro: 26/06/2014 Postagens: 31 |
Bom dia !
Sugiro a utilização do ParamBox ! Bem mais pratico sem vinculo com o Sx1 independente de função..
Documentação : http://tdn.totvs.com/display/public/mp/Parambox
Local aPergs := {}
Local aRet := {}
Local cBoxProd := SPACE(15)
aAdd(aPergs,{1,"Codigo do Produto" ,cBoxProd ,"" ,"","SB1" ,"", 60,.T.}) // MV_PAR01
aAdd(aPergs,{1,"Capacidade da Caixa Master" ,0 ,"@E 9999.99" ,"","" ,"", 60,.T.}) // MV_PAR02
aAdd(aPergs,{1,"Quantidade de etiquetas" ,0 ,"@E 9999.99" ,"","" ,"", 60,.T.}) // MV_PAR03
// 1 - MsGet [ParamBox]
// [2] : Descrição
// [3] : String contendo o inicializador do campo
// [4] : String contendo a Picture do campo
// [5] : String contendo a validação
// [6] : Consulta F3
// [7] : String contendo a validação When
// [8] : Tamanho do MsGet
// [9] : Flag .T./.F. Parâmetro Obrigatório ?
If ParamBox(aPergs ,"Parametros ",aRet)
EAN14PRO(cTitulo) // Chama o Programa
Else
Return()
EndIf
@thiago.andrrade |
|
|
Mensagem do
JLEEE
em 28/08/2019, 16:22 h
Local: MS Registro: 06/09/2005 Postagens: 112 |
boa tarde,
Essa solução do ParamBox é boa, porém ele quebra o Profile né? toda vez que chama a função é necessário preencher todos os parâmetros... |
|
|
Mensagem do
APORTA_PE
em 29/08/2019, 08:28 h
Local: PE Registro: 26/08/2019 Postagens: 1 |
JLEEE,
A idéia do Parambox é exatamente esta, não mexer em dicionário.
Ele é montado em tempo de execução. |
|
|
Mensagem do
WALTERFCAR
em 29/08/2019, 14:18 h
Local: SP Registro: 14/10/2015 Postagens: 61 |
Nem sempre o paramboz quebra os profiles
dá para parametrizar na chamada isso
|
|
Para postar no Fórum você precisa efetuar o seu login ou se registrar
|
|