Páginas filhas
  • Smart View - Gerando os recursos através de uma função

Versões comparadas

Chave

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

Essa função será depreciada a parte da LIB Label 20240226, utilizar a nova classe: Classe para execução dos recursos no Protheus

Função criada para execução dos relatórios do Smart View a partir do cadastro na tabela de De/Para ( FW_TREP_CONTROLLER )

...

Disponível a partir da LIB Label 20230227

Informações
titleLogs

É possível ver os logs da função ligando a chave FwTraceLog=1 no INI do ambiente utilizado, para mais informações sobre a chave: Chaves para controle de logs

...

Padrão para nomenclatura dos arquivos .trp

Os arquivos .trp são os layouts exportados do Smart View e que servem para a Importação Automática de Recursos dentro do Protheus, esse processo é possível através da rotina Amarração Protheus x Smart View e utilizando a função totvs.framework.treports.callTReports.

Definimos um padrão de nomenclatura para esse arquivo para que possamos unificar recursos que utilizem o mesmo objeto de negócio, para que o usuário possa escolher diferentes recursos em uma única chamada de menu/rotina.

Irei exemplificar a nomenclatura de um layout de relatório abaixo:

  •  framework.sv.framework.product.subtitle.rep.bra.trp

Onde:

  • framework: Nome da área/tribe responsável;
  • sv: Agrupador de inovação;
  • framework: Módulo Responsável;
  • product: Nome do ON;
  • subtitle: Nome complementar do ON (Ex: Analítico, Sintético...);
  • rep: Tipo de Layout (rep=Report/pv=Pivot Table/dg=Data Grid);
  • bra: País do ON;

Exemplo de como seria a nomenclatura de um layout de tabela dinâmica:

  • framework.sv.framework.product.default.pv.trp

Todos os complementos da nomenclatura são obrigatórios, com exceção do país do ON.

Se a nomenclatura do layout não tiver o país, como no exemplo acima, consideramos que esse layout é para todos os países.

Aviso
titleArquivo .trp

Para criar o arquivo .trp deve ser seguido os passos demonstrados no gif abaixo:

Image Removed

Não deverão ser utilizados programas para compactar, podendo dar problemas na descompactação do arquivo.

Basta exportar o layout do Smart View e renomear de acordo com o padrão demonstrado acima e mudar a extensão para .trp

Função totvs.framework.treports.callTReports

...

Informações
titleDisponibilidade

Funcionalidade disponível a partir da LIB Label 20231009

Com o padrão de nomenclatura definido acima Padrão para nomenclatura dos arquivos .trp (layouts) correto, é possível unificar os recursos em apenas uma chamada, sendo:

...

Bloco de código
titleExemplo com interface mvc e executando em jobsem interface
collapsetrue
#include "protheus.ch"
#include "fwmvcdef.ch"

//-------------------------------------------------------------------
/*/{Protheus.doc} poc_mvc
Exemplo de um modelo e view baseado em uma unica tabela com chamada
de um relatório no Smart View pela função totvs.framework.treports.callTReports  

@author  Framework
@since   01/12/2022
@version 1.0
/*/
//-------------------------------------------------------------------
User Function poc_mvc()
    Local oBrowse As Object
	
	oBrowse := FWMBrowse():New()
	oBrowse:SetAlias('SB1')
	oBrowse:SetDescription('Cadastro de Produtos')
	oBrowse:Activate()
		
Return

//-------------------------------------------------------------------
/*/{Protheus.doc} MenuDef
Função para carregamento do menu.

@return aRotina, array, array com as opções de menu.

@author  Framework
@since   01/12/2022
@version 1.0
/*/
//-------------------------------------------------------------------
Static Function MenuDef()
    Local aRotina As Array

    aRotina := {}

    ADD OPTION aRotina TITLE 'Visualizar'           ACTION 'VIEWDEF.poc_mvc' OPERATION 2 ACCESS 0
    ADD OPTION aRotina TITLE 'Incluir'              ACTION 'VIEWDEF.poc_mvc' OPERATION 3 ACCESS 0
    ADD OPTION aRotina TITLE 'Alterar'              ACTION 'VIEWDEF.poc_mvc' OPERATION 4 ACCESS 0
    ADD OPTION aRotina TITLE 'Excluir'              ACTION 'VIEWDEF.poc_mvc' OPERATION 5 ACCESS 0
    ADD OPTION aRotina TITLE 'Imprimir'             ACTION 'VIEWDEF.poc_mvc' OPERATION 8 ACCESS 0
    ADD OPTION aRotina TITLE 'Imprimir Smart View'  ACTION 'callTrep'        OPERATION 8 ACCESS 0
    ADD OPTION aRotina TITLE 'Copiar'               ACTION 'VIEWDEF.poc_mvc' OPERATION 9 ACCESS 0

Return aRotina

//-------------------------------------------------------------------
/*/{Protheus.doc} ModelDef
Definição do model referente aos produtos

@return oModel, objeto, objeto do modelo

@author  Framework
@since   01/12/2022
@version 1.0
/*/
//-------------------------------------------------------------------
Static Function ModelDef()
    Local oModel As Object
    Local oStruSB1 As Object

    oStruSB1 := FWFormStruct(1,"SB1")

	oModel := MPFormModel():New("PRODUTOS")
	oModel:SetDescription("Produtos - SB1")
	
	oModel:addFields('MASTERSB1',,oStruSB1)
	oModel:getModel('MASTERSB1'):SetDescription('Produtos - SB1')
	 
Return oModel

//-------------------------------------------------------------------
/*{Protheus.doc} ViewDef
Interface do modelo de dados

@return oView , objeto, retorna a view do modelo

@author  Framework
@since   01/12/2022
@version 1.0
*/
//-------------------------------------------------------------------
Static Function ViewDef()
Local oModel := ModelDef()
Local oView
Local oStrSB1:= FWFormStruct(2, 'SB1')
	
	oView := FWFormView():New()
	oView:SetModel(oModel)

	oView:AddField('FORM_PROD' , oStrSB1,'MASTERSB1' ) 
	oView:CreateHorizontalBox( 'BOX_FORM_PROD', 100)
	oView:SetOwnerView('FORM_PROD','BOX_FORM_PROD')	
	
Return oView

//-------------------------------------------------------------------
/*{Protheus.doc} callTReports Função para chamada do relatório do Smart View

@author  Framework
@since   01/12/2022
@version 1.0
*/
//-------------------------------------------------------------------
Function callTrep()
    Local lSuccess As Logical

    //1º parâmetro = Relatório cadastrado na tabela de De/Para (Campo TR__IDREL)
    //2º parâmetro = Tipo do relatório ("reports" = relatório, "data-grid" = visão de dados, "pivot-table" = tabela dinâmica)
	//Como não foi mandado o 6º parâmetro como .F. o relatório será gerado sem interface, caso esse parâmetro seja enviado será aberta a tela de opções
	lSuccess := totvs.framework.treports.callTReports("framework.sv.framework.product.default.pv", "pivot-table")      
    If !lSuccess
        Conout("Erro na geração, verificar logs")
    EndIf

Return

...