Base de conhecimento
Encontre respostas para suas dúvidas em quatro fontes de conhecimento diferentes ao mesmo tempo, simplificando o processo de pesquisa.

Cross Segmento - TOTVS Backoffice Linha Protheus - ADVPL - Exemplo de uso MsNewGetDados com dicionário em banco

time.pngTempo aproximado para leitura: 00:02:00 min

Ocorrência
Na documentação da msnewgetdados possui exemplo apenas para ambientes que não estão com o dicionário em banco.

Ambiente
Cross Segmento - TOTVS BackOffice (Linha Protheus) – ADVPL – A partir da versão 12.1.33

Causa
Por conta da migração do dicionário para o banco de dados não se pode mais realizar o acesso direto as SXs, assim o exemplo documentado na função não pode ser utilizado neste cenário.


Solução 
Foi criado o exemplo abaixo montando o aHeader e o aCols, ele não realiza acesso direto as SXs e sim as funções auxiliares de dicionário, assim é valido para ambientes com dicionário em banco.

 

#include "totvs.ch"

User Function MrbwGtCl()

Private cCadastro := "Exemplo MsNewGetDados"
Private aRotina := {{"Pesquisar" , "axPesqui" , 0, 1},;
{"Incluir" , "U_ModGtd" , 0, 3}}

DbSelectArea("SC5")
DbSetOrder(1)
MBrowse(6,1,22,75,"SC5")

Return

User Function ModGtd(cAlias,nReg,nOpc)
Local nX := 0
Local nG := 0
Local nUsado := 0
Local aButtons := {}
Local cAliasGD := "SC6"
Local cIniCpos := "C6_ITEM"
Local nSuperior := 30
Local nEsquerda := 000
Local nInferior := 250
Local nDireita := 400
Local cLinOk := "AllwaysTrue"
Local cTudoOk := "AllwaysTrue"
Local nFreeze := 000
Local nMax := 999
Local cFieldOk := "AllwaysTrue"
Local cSuperDel := ""
Local cDelOk := "AllwaysFalse"
Local aAlterGDa := {}
Local aCamposUsados:= {}
Local aCampos:= {}
Local cSX3Cache

Private aHeader := {}
Private aCols := {}
Private oDlg
Private oGetD
Private oEnch
Private aTELA[0][0]
Private aGETS[0]
Private N :=0

// Define a tabela a ser utilizada
cAliasGD := "SC6"

// Obtêm as informações dos campos da tabela SC6
aCampos := FWSX3Util():GetAllFields(cAliasGD)
aCamposUsados := {}
For nG:=1 to len(aCampos)
// Obtêm as informações dos campos usados no dicionário SX3
cSX3Cache := getsx3cache(aCampos[nG],"X3_USADO")
If X3USO(cSX3Cache)
AADD(aCamposUsados, aCampos[nG])
aStruct:=FWSX3Util():GetFieldStruct(aCampos[nG])
Aadd(aHeader,{AllTrim(X3Titulo(aCampos[nG])),aCampos[nG],X3Picture(aCampos[nG]),aStruct[3],aStruct[4], "", "", aStruct[2], "", ""})
EndIf
next

nUsado:=Len(aCamposUsados)

If nOpc==3 // Caso seja inclusão
aCols:={Array(nUsado+1)}
aCols[1,nUsado]:=.F.

For nX:=1 to nUsado
aCols[1,nX]:=CriaVar(aHeader[nX,2])
Next
Else

aCols:={}

dbSelectArea("SC6")
dbSetOrder(1)
dbSeek(xFilial())

While !eof().and.C6_NUM==M->C5_NUM
AADD(aCols,Array(nUsado+1))
For nX:=1 to nUsado
aCols[Len(aCols),nX]:=FieldGet(FieldPos(aHeader[nX,2]))
Next
aCols[Len(aCols),nUsado+1]:=.F.
dbSkip()
End
Endif

aAlterGDa:=aClone(aCamposUsados)

oDlg := MSDIALOG():New(000,000,600,800, cCadastro,,,,,,,,,.T.)
oGetD:= MsNewGetDados():New(nSuperior,nEsquerda,nInferior,nDireita, nOpc,cLinOk,cTudoOk,cIniCpos,aAlterGDa,nFreeze,nMax,cFieldOk, cSuperDel,cDelOk, oDLG, aHeader, aCols)
oGetD:oBrowse:bRClicked := { || Alert("clique direita")}
oGetD:oBrowse:brabsClicked := { || Alert("clique esquerda")}
oDlg:bInit := {|| EnchoiceBar(oDlg, {||oDlg:End()}, {||oDlg:End()},,aButtons)}
oDlg:lCentered := .T.
oDlg:Activate()
Return

 

Saiba Mais

MsNewGetDados

Funções Auxiliares de Dicionário

Esse artigo foi útil?
Usuários que acharam isso útil: 1 de 1

0 Comentários

Por favor, entre para comentar.
X Fechar

Olá ,

Há pendência referente a um de seus produtos contratados para a empresa ().

Entre em contato com o Centro de Serviços TOTVS para tratativa.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cobrança – Verificação de pendências financeiras . clique aqui.

TOTVS

X Fechar

Olá ,

Seu contato não está cadastrado no Portal do Cliente como um perfil autorizado a solicitar consultoria telefônica.

Por gentileza, acione o administrador do Portal de sua empresa para: (1)configurar o seu acesso ou (2)buscar um perfil autorizado para registro desse atendimento.

Em caso de dúvidas sobre a identificação do contato administrador do Portal, ligue (11) 4003-0015, opção 7 e, em seguida, opção 4 para buscar o suporte com o time de Assessoria ao Portal do Cliente. . clique aqui.

TOTVS

X Fechar

Olá ,

Para o atendimento de "Consultoria Telefônica" você deverá estar de acordo com o Faturamento.

TOTVS

X Fechar

Olá,

Algo inesperado ocorreu, e o usuario nao foi reconhecido ou você nao se encontra logado

Por favor realize um novo login

Em caso de dúvidas, entre em contato com o administrador do Portal de Clientes de sua empresa para verificação do seu usuário, ou Centro de Serviços TOTVS.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cadastros . clique aqui.

TOTVS

Chat _

Preencha os campos abaixo para iniciar o atendimento:

Chat _