Histórico da Página
...
Aviso | ||
---|---|---|
| ||
O tWebEngine possui uma proteção para não realizar download de arquivos maliciosos. Por padrão é possível realizar download de arquivos do Smart View com as seguintes extensões: pdf, xls, xlsx, rtf, docx, mht, html, txt, csv e png. Caso seja necessário realizar o download de outras extensões deve ser realizado tratamento pelo ponto de entrada AddLexList (https://tdn.totvs.com/display/PROT/AdDLExList). Para utilizar este ponto de entrada é necessário o fonte FwDLExList.prw mais atual. |
Unificando o Menu/Rotina com recursos diferentes
Com o padrão de nomenclatura definido acima, é possível unificar os recursos em apenas uma chamada, sendo:
- 1 Relatório
- 1 Tabela Dinâmica
- 1 Visão de Dados
Para isso preciso ter os 3 .trp's compilados e com as nomenclaturas corretas, como no exemplo abaixo:
- Relatório - framework.sv.framework.product.rep.bra.trp
- Tabela Dinâmica - framework.sv.framework.product.pv.trp
- Visão de Dados - framework.sv.framework.product.dg.trp
Para a chamada do recurso o ID enviado na função totvs.framework.treports.callTReports deverá ser o seguinte: framework.sv.framework.product (área responsável + agrupador + nome do ON) e não deve ser mandado o parâmetro que indica o tipo do recurso, já que o recurso deverá ser escolhido pelo usuário.
Exemplo completo:
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 treports pela função totvs.framework.treports.callTReports
@author Vanessa Ruama
@since 01/12/2022
@version 1.0
/*/
//-------------------------------------------------------------------
User Function poc_mvc()
Local oBrowse As Object
oBrowse := FWMBrowse():New()
oBrowse:SetAlias('SC7')
oBrowse:SetDescription('Pedido de Compras')
oBrowse:Activate()
Return
//-------------------------------------------------------------------
/*/{Protheus.doc} MenuDef
Função para carregamento do menu.
@return aRotina, array, array com as opções de menu.
@author Vanessa Ruama
@since 01/12/2022
@version 1.0
/*/
//-------------------------------------------------------------------
Static Function MenuDef()
Local aRotina As Array
Local aMedicao As Array
aRotina := {}
aMedicao := {}
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 Multi' ACTION 'callMulti' OPERATION 8 ACCESS 0
Return aRotina
//-------------------------------------------------------------------
/*/{Protheus.doc} ModelDef
Definição do model referente aos pedidos
@return oModel, objeto, objeto do modelo
@author Vanessa Ruama
@since 01/12/2022
@version 1.0
/*/
//-------------------------------------------------------------------
Static Function ModelDef()
Local oModel As Object
Local oStruSC7 As Object
oStruSC7 := FWFormStruct(1,"SC7")
oModel := MPFormModel():New("PEDIDO")
oModel:SetDescription("Pedido de Compras")
oModel:addFields('MASTERSC7',,oStruSC7)
oModel:getModel('MASTERSC7'):SetDescription('Pedido de Compras')
Return oModel
//-------------------------------------------------------------------
/*{Protheus.doc} ViewDef
Interface do modelo de dados
@return oView , objeto, retorna a view do modelo
@author Vanessa Ruama
@since 01/12/2022
@version 1.0
*/
//-------------------------------------------------------------------
Static Function ViewDef()
Local oModel := ModelDef()
Local oView
Local oStrSC7:= FWFormStruct(2, 'SC7')
oView := FWFormView():New()
oView:SetModel(oModel)
oView:AddField('FORM_PROD' , oStrSC7,'MASTERSC7' )
oView:CreateHorizontalBox( 'BOX_FORM_PROD', 100)
oView:SetOwnerView('FORM_PROD','BOX_FORM_PROD')
Return oView
//-------------------------------------------------------------------
/*{Protheus.doc} callMulti
Chamada de múltiplos recursos do Smart View
@author Vanessa Ruama
@since 15/09/2023
@version 1.0
*/
//-------------------------------------------------------------------
Function callMulti()
Local lSuccess As logical
Local cError as character
//1º parâmetro = Relatório cadastrado na tabela de De/Para (Campo TR__IDREL)
//2º parâmetro = Tipo do relatório ("reports" = relatório comum, "data-grid" = visão de dados, "pivot-table" = tabela dinâmica)
//3º parâmetro = Tipo do impressão (Arquivo=1, Email=2)
//4º parâmetro = Informações de impressão
//5º parâmetro = Parâmetros do relatório
//6º parâmetro = Indica se executa em job
//7º parâmetro = Indica se exibe os parâmetros para preenchimento
//8º parâmetro = Indica se exibe o wizard de configuração do Smart View
//9º parâmetro = Erro da execução
lSuccess := totvs.framework.treports.callTReports("framework.sv.framework.product",,,,,.F.,,.T., @cError)
If !lSuccess
Conout(cError)
EndIf
Return .T. |
Utilização da função
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 em job, caso esse parâmetro seja enviado será aberta a tela de opções lSuccess := totvs.framework.treports.callTReports("MATA010", "report") If !lSuccess Conout("Erro na geração, verificar logs") EndIf Return |
...