FAQs - Suporte técnico

MP - ADVPL - OPENSXS() PARA LEITURA DE DICIONÁRIO DE DADOS

DÚVIDA
Como utilizar a função OpenSXs() para efetuar a leitura dos dicionários de dados de modo a não gerar inconsistências na ferramenta CodeAnalysis?

AMBIENTE
Protheus – ADVPL – A partir da versão 12.1.23

SOLUÇÃO
Adicionar os campos desejados em um vetor manipulá-los como exemplo abaixo

// BIBLIOTECAS NECESSÁRIAS
#Include "TOTVS.ch"

// UTILIZAÇÃO DO DICIONÁRIO DE DADOS SX3
User Function T190SX3()
Local aSX3 := {} // DADOS DA SX3 COM BASE NO VETOR AFIELDS
Local aFields := GetColumns() // CAMPOS DA SX3 PARA ESTRUTURA

// PREPARAÇÃO DO AMBIENTE (REMOVER SE VIA GUI)
RPCSetEnv("99", "01")
// EFETUA A ABERTURA E GERAÇÃO DO ARQUIVO DE TRABALHO
If (OpenDic())
// PERCORRE A TABELA FILTRADA E MONTA ESTRUTURA
DbEval({|| AAdd(aSX3, GenStruct(aFields))})

// FECHA O ARQUIVO DE TRABALHO
DbCloseArea()
EndIf
RPCClearEnv() // ENCERRA O AMBIENTE (REMOVER SE VIA GUI)
Return (NIL)

// CAMPOS QUE DESEJO UTILIZAR NA MINHA ESTRUTURA
Static Function GetColumns()
Local aFields := {} // VETOR DE CAMPOS

// ADIÇÃO DOS CAMPOS DESEJADOS
AAdd(aFields, "X3_TITULO")
AAdd(aFields, "X3_CAMPO")
AAdd(aFields, "X3_PICTURE")
AAdd(aFields, "X3_TAMANHO")
AAdd(aFields, "X3_DECIMAL")
AAdd(aFields, "X3_VALID")
AAdd(aFields, "X3_USADO")
AAdd(aFields, "X3_TIPO")
AAdd(aFields, "X3_F3")
AAdd(aFields, "X3_CONTEXT")
AAdd(aFields, "X3_CBOX")
AAdd(aFields, "X3_RELACAO")
AAdd(aFields, "X3_WHEN")
AAdd(aFields, "X3_VISUAL")
AAdd(aFields, "X3_VLDUSER")
Return (aFields)

// EFETUA A ABERTURA E GERAÇÃO DO ARQUIVO TEMPORÁRIO
Static Function OpenDic()
Local lOpen := .F. // VALIDAÇÃO DE ABERTURA DE TABELA
Local cAlias := GetNextAlias() // APELIDO DO ARQUIVO DE TRABALHO
Local cFilter := cAlias + "->" + "X3_ARQUIVO" + " == " + "'DIC'" // FILTRO PARA A TABELA SX3

// ABERTURA DO DICIONÁRIO SX3
OpenSXs(NIL, NIL, NIL, NIL, "99", cAlias, "SX3", NIL, .F.)
lOpen := Select(cAlias) > 0

// CASO ABERTO FILTRA O ARQUIVO PELO X3_ARQUIVO "DIC",
// DEFINE COMO TABELA CORRENTE E POSICIONA NO TOPO
If (lOpen)
DbSelectArea(cAlias)
DbSetFilter({|| &(cFilter)}, cFilter)
DbGoTop()
EndIf
Return (lOpen)

// RETORNA A ESTRUTURA DE UM CAMPO COM BASE NA SX3
Static Function GenStruct(aFields)
Local aAux := {} // VETOR AUXILIAR PARA MONTAGEM DA ASX3

// LAÇO DE REPETIÇÃO NOS CAMPOS DA SX3 PARA MONTAR A ESTRUTURA DE DIC
AEval(aFields, {|cField| AAdd(aAux, &(cField))})
Return (aAux)

 



OBSERVAÇÃO
O uso deste exemplo acima pode ser adaptado para uso com os diversos outros dicionários.

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

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 _