Pular para o conteúdo principal

Postagem em destaque

BlackTDN :: Como Criar Relatórios de Cotações com Dados Agrupados Usando SQL

img: DALL·E 2024-08-09 07.00.00 - A high-quality image showcasing a detailed SQL query being written in a code editor, such as VS Code, on a dark theme background. ... ## Como Criar Relatórios de Cotações com Dados Agrupados Usando SQL Quando trabalhamos com sistemas ERP e precisamos gerar relatórios de cotações que apresentam dados de múltiplos fornecedores, é comum encontrarmos a necessidade de pivotar registros que, originalmente, são apresentados de forma vertical. Isso é especialmente útil quando o objetivo é comparar preços ou condições de diferentes fornecedores para um mesmo produto em uma única linha do relatório. Neste artigo, vamos explorar uma abordagem para transformar registros verticais em colunas, facilitando a impressão de relatórios que consolidam informações de vários fornecedores em uma única linha. Vamos utilizar SQL com técnicas de pivotagem, e ao final, mostraremos como estender essa técnica para um número variável de fornecedores. ### Estrutura do Relatór

Protheus :: Obtendo Array das Classes de Objetos com __ClsArr()


Se deseja obter as Classes para uso em Advpl utilize a função __ClsArr(). _Ela retornará um array multidimensional com todas as classes que poderão ser utilizadas em Advpl. No exemplo que postei sobre "Repositório Auxiliar" utilizei essa função para retornar as informações à respeito da classe "RPO".

Sua sintaxe é muito simples: __ClsArr() -> aClassArray.

Ex.:

Local aClassesArray := __ClsArray()

No Retorno de __ClsArray() obteremos um array com todas as classes, seus "membros", seus "métodos" e "parâmetros dos métodos". O único problema é que os parâmetros corresponderão ao seu tipo e não à sua descrição formal (o que dificulta, um pouco, ao leigos, saber o que passar para eles).

Usando como exemplo o array atribuido à variável aClassesArray teremos, para o elemento 4 as seguintes informações:

aClassesArray[4] //Informações da classe RPO
aClassesArray[4][1] //RPO que refere-se ao nome da classe
aClassesArray[4][2] //Esse elemento refere-se à Classe Pai
aClassesArray[4][3] //Retorna as variáveis "membros" da classe
aClassesArray[4][3][1][1] //Variável DEFINES
aClassesArray[4][3][2][1] //Variável ERRCOL
aClassesArray[4][3][3][1] //Variável ERRLINE
aClassesArray[4][3][4][1] //Variável ERRSTR
aClassesArray[4][3][5][1] //Variável INCLUDES
aClassesArray[4][3][6][1] //Variável MAINHEADER
aClassesArray[4][4] //Métodos da Classe
aClassesArray[4][4][1][1] //Método BASICOPCB
aClassesArray[4][4][1][2] //Parâmetros do Método BASICOPCB
aClassesArray[4][4][2][1] //Método CHKSUM
aClassesArray[4][4][2][2] //Parâmetros do Método CHKSUM
aClassesArray[4][4][3][1] //Método CLOSE
aClassesArray[4][4][3][2] //Parâmetros do Método CLOSE
aClassesArray[4][4][4][1] //Método COMPILE
aClassesArray[4][4][4][2] //Parâmetros do Método COMPILE
...

E assim por diante.

Percorra todos os elementos do array para obter informações de todas as classes disponíveis.



Comentários

  1. É possível obter os métodos de MsNewGetDados com essa função? Não consegui encontrar essa e nem outras funções de frame.

    ResponderExcluir
  2. Bom dia, gostaria de Deixa meu Agradecimento ao autor, pois a documentação do TDN ainda é muito mal documentada em relação a classe, um exmplo é sobre a MsNewGetDados que até hoje não tem as propriedades da classe na documentação.

    ResponderExcluir
  3. Tentei executar isso:
    Local aClassesArray := __ClsArray()

    Mas deu mensagem de erro:
    Opção não disponivel no Protheus
    Função: __CLSARRAY Called By ........ etc.

    ResponderExcluir
  4. Boa tarde.
    Gostaria de saber se alguém possui qualquer um dos fontes abaixo.
    CFGR510 e ou CFGA510.
    Quem tiver e puder me mandar ficaria muito agradecido e ate mesmo uma recompensa poderei dar.
    Mas desde já agradeço.

    ResponderExcluir
    Respostas
    1. Olá amigo, conseguiu o fonte do cfgr510 ?

      Excluir

Postar um comentário

Postagens mais visitadas