Função criada para execução dos relatórios do TReports a partir do cadastro na tabela de De/Para ( FW_TREP_CONTROLLER )
Informações |
---|
|
Disponível a partir da LIB Label 20220109 |
Pré-requisitos
- Já ter feito a instalação e integração com o TReports, mais informações nos links:
Instalação do TReports
Requisitos Mínimos
Função totvs.framework.treports.callTReports
Parâmetros:
Nome | Tipo | Obrigatório | Default | Descrição |
---|
cIdProt | caractere | X |
| Id do relatório que será impresso |
cType | caractere | X |
| Tipo de dado (report, pivot-table ou data-grid) |
nPrintType | numérico | Apenas se for utilizada em job |
| Tipo do impressão (Arquivo=1, Email=2) |
jPrintInfo | json | Apenas se for utilizada em job |
| Informações para a impressão do relatório |
jParams | json | Se houver parâmetros no relatório |
| Parâmetros do relatório |
lRunInJob | lógico |
| .T. | Indica se irá executar em job |
Informações |
---|
|
Ao utilizar a função o usuário deve ter conhecimento dos parâmetros cadastrados no TReports, pois os mesmos serão enviados a partir do jParams |
Propriedades do json jPrintInfo
É necessário o envio de algumas informações sobre a impressão a partir do jPrintInfo (4º parâmetro da função), sendo elas:
- Opção 1 - Impressão em arquivo
Propriedades:
Propriedades | Obrigatório | Default | Descrição |
---|
name |
| Nome do relatório na tabela (TR__IDREL) + Data/Hora | Nome do arquivo |
extension |
| pdf | Extensão |
path |
| \Spool\ | Pasta onde será salvo |
- Opção 2 - Impressão por E-mail
Propriedades:
Propriedades | Obrigatório | Default | Descrição |
---|
to | X |
| Destinatário do E-mail |
subject |
| Relatório TReports | Assunto do E-mail |
body |
| Descrição do relatório (TR__DESCRI) | Corpo do -email |
name |
| Nome do relatório na tabela (TR__IDREL) + Data/Hora | Nome do arquivo |
extension |
| pdf | Extensão |
path |
| \Spool\ | Pasta onde será salvo |
Aviso |
---|
title | Extensões disponíveis |
---|
|
O tWebEngine possui uma proteção para não realizar download de arquivos maliciosos. Por padrão é possível realizar download de arquivos do tReports 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. |
Utilização da função
Bloco de código |
---|
title | Exemplo com interface |
---|
collapse | true |
---|
|
#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 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 TReports' 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 TReports
@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)
lSuccess := totvs.framework.treports.callTReports("MATA010", "report")
If !lSuccess
Conout("Erro na geração, verificar logs")
EndIf
Return |
Bloco de código |
---|
title | Exemplo sem interface e geração de arquivo |
---|
collapse | true |
---|
|
User Function treportsJob()
Local lSuccess As Logical
Local jParams As Json
Local jPrintInfo As Json
RpcSetEnv('T1', 'M PR 02', "admin", "1234") //Caso não tenha ambiente aberto
//Preencher os parâmetros do relatório, caso o mesmo tenha parâmetro
jParams := JsonObject():New()
jParams['filial'] := "M PR 02"
jParams['periodo'] := "201601"
jParams['matriculade'] := "000003"
jParams['matriculaate'] := "000003"
jPrintInfo := JsonObject():New()
jPrintInfo['name'] := "GPER040_" + FwTimeStamp() //Adicionado o timestamp para não ter conflito no nome do arquivo
jPrintInfo['path'] := "C:\relatórios\"
jPrintInfo['extension'] := "pdf"
//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)
//3º parâmetro = Tipo de impressão (1 = Arquivo, 2 = E-mail )
//4º parâmetro = Informações de impressão
//5º parâmetro = Parâmetros do relatório
lSuccess := totvs.framework.treports.callTReports("GPER040", "report", 1, jPrintInfo, jParams)
If !lSuccess
Conout("Erro na geração, verificar logs")
EndIf
Return |
Bloco de código |
---|
title | Exemplo sem interface e envio por e-mail |
---|
collapse | true |
---|
|
User Function treportsJob()
Local lSuccess As Logical
Local jPrintInfo As Json
RpcSetEnv('T1', 'M PR 02', "admin", "1234") //Caso não tenha ambiente aberto
jPrintInfo := JsonObject():New()
jPrintInfo['to'] := "[email protected]" //Obrigatório setar o destinatário
jPrintInfo['name'] := "Produtos - " + FWTimeStamp()
//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)
//3º parâmetro = Tipo de impressão (1 = Arquivo, 2 = E-mail )
//4º parâmetro = Informações de impressão
lSuccess := totvs.framework.treports.callTReports("MATA010", "report", 2, jPrintInfo)
If !lSuccess
Conout("Erro na geração e envio do e-mail, verificar logs")
EndIf
Return |
Observações
- Os tipos de relatório pivot-table e data-grid serão gerados apenas com interface.
- Os parâmetros do relatório deverão ser enviados pela função, mesmo com a opção de abrir a interface de impressão.
- O nome do relatório na propriedade 'name' enviada pelo json jPrintInfo deverá se atentar a nomes iguais, caso a função seja chamada em job. A sugestão é colocar o nome + FWTimeStamp()