Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Painel
borderStylesolid
titleNovos métodos e passo a passo

Foi implementado na integração com o Smart View a possibilidade de criação de objetos de negócios aninhados.

Um objeto de negócio aninhado consiste em um objeto de negócio que possui propriedades multiníveis e relações de dados, permitindo assim que os dados sejam enviados em um mesmo objeto, mas com grupos separados.

Aviso
titleObjetos aninhados

As propriedades aninhadas (formato array) devem ser utilizados apenas em relatórios. Na visão de dados e tabela dinâmica as mesmas não trarão resultados dentro do objeto. Essas propriedades, incluindo suas subpropriedades, não são filtráveis.

Novos Métodos na classe totvs.framework.treports.integratedprovider.IntegratedProvider

addNestedProperty()

Adiciona uma propriedade aninhado no objeto de negócio.

Parâmetros:

Nome

Tipo

Obrigatório

Default

Descrição

cIdCaractereX
Id da propriedade
cDescriptionCaractereX
Descrição da propriedade
cDisplaynameCaractereX
Nome de exibição
cAliasCaractere

Indica o alias da propriedade
xFieldVariantX
Caractere ou Array contendo a estrutura/campos do objeto aninhado
Informações

Para adicionar em uma única propriedade aninhada campos de várias tabelas, é necessário mandar o 5º parâmetro com a estrutura dos campos com 4 posições e o cAlias nulo:

1-Id | 2-Descrição | 3-Tipo | 4-DisplayName

Exemplo completo:

Bloco de código
aFields := {}

aAdd(aFields , {"A2_NOME", "Nome", "string", "Nome"})

aAdd(aFields , {"A1_COD", "Código", "string", "Código"})

self:addNestedProperty("Aninhado", "Aninhado", "Aninhado", , aFields)

Adicionando uma propriedade para fazer 2 níveis de objetos aninhados:

Bloco de código
aFields := {} 

aAdd(aFields , {"A2_NOME", "Nome", "string", "Nome"})
aAdd(aFields , {"A1_COD", "Código", "string", "Código"})
aAdd(aFields , {"NIVEL2", "Nível 2", "array", "Nível 2"}) //Posso enviar o tipo como "array" já que irei transformar em objeto aninhado

self:addNestedProperty("Aninhado", "Aninhado", "Aninhado", , aFields)

aFields2 := {} 
aAdd(aFields2 , {"A2_COD", "Código", "string", "Código"}) 
self:transformInNested("NIVEL2", "", aFields2) //Transformo em objeto aninhado e já indico os campos que irão ficar dentro

Desta forma acima o objeto "Aninhado" terá dentro dele um outro objeto chamado "NIVEL2"

Exemplo de uso:

self:addNestedProperty("Fornecedores", "Fornecedores (SA2)", "Fornecedores (SA2)", "SA2", {"A2_NATUREZ", "A2_CGC"})

Sintaxe: self:addNestedProperty() → nil


transformInNested()

Transforma a propriedade em uma propriedade aninhada no objeto de negócio.

Parâmetros:

Nome

Tipo

Obrigatório

Default

Descrição

cIdCaractereX
Id da propriedade
cAliasCaractereX
Indica o alias da propriedade
xFieldVariantX
Caractere ou Array contendo a estrutura/campos do objeto aninhado

Exemplo de uso:

self:transformInNested("EnderecoDetalhes", "SA2", {"A2_END", "A2_BAIRRO"})

Sintaxe: self:transformInNested() → nil


getStructNestedFields()

Retorna a estrutura dos campos aninhados.

Exemplo de uso:

self:getStructNestedFields()

Sintaxe: self:getStructNestedFields() → array

...