Aviso | ||
---|---|---|
| ||
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 | ||
---|---|---|
| ||
É 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 |
...
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:
Onde:
Exemplo de como seria a nomenclatura de um layout de tabela dinâmica:
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 | ||
---|---|---|
| ||
Para criar o arquivo .trp deve ser seguido os passos demonstrados no gif abaixo: 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 |
...
Informações | ||
---|---|---|
| ||
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 | ||||
---|---|---|---|---|
| ||||
#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 |
...