Páginas filhas
  • Classe para execução dos recursos no Protheus

Versões comparadas

Chave

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

...

Índice
maxLevel2
excludeÍndice

Unificando o Menu/Rotina com recursos diferentes

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

  • Múltiplos Relatórios
  • Múltiplas Tabelas Dinâmicas
  • Múltiplas Visões de Dados

Para isso preciso ter os 4 .trp's compilados (no caso da importação automática) e com as nomenclaturas corretas, como no exemplo abaixo:

...

Pré-requisitos

  • Já ter feito a instalação e integração com o Smart View, mais informações nos links:

           Instalação do Smart View

           Requisitos Mínimos

...

Unificando o Menu/Rotina com recursos diferentes

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

  • Múltiplos Relatórios
  • Múltiplas Tabelas Dinâmicas
  • Múltiplas Visões de Dados

Para isso preciso ter os 4 .trp's compilados (no caso da importação automática) e com as nomenclaturas corretas, como no exemplo abaixo:

  • Relatório 1 -  
  • Relatório 1 -  framework.sv.framework.product.synthetic.rep.bra.trp
  • Relatório 2 -  framework.sv.framework.product.analytical.rep.bra.trp
  • Tabela Dinâmica - framework.sv.framework.product.default.pv.trp
  • Visão de Dados - framework.sv.framework.product.synthetic.rep.bra.trp
  • Relatório 2 -  framework.sv.framework.product.analytical.rep.bra.trp
  • Tabela Dinâmica - framework.sv.framework.product.default.pv.trp
  • Visão de Dados - framework.sv.framework.product.default.dg.trp

Para a chamada do recurso o ID enviado (cProtheusId) no método new() desta classe deverá ser o seguinte: framework.sv.framework.product (área responsável + agrupador + modulo + 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.

...

Método de instância da classe.

Parâmetros: 

Nome

TipoObrigatórioDefaultDescrição
cProtheusIdCaractereX
Id do recurso que será
executado
impresso (relacionado ao nome do arquivo .trp)
cType
cType
CaractereApenas quando for a execução de recurso único
Tipo do recurso (report, pivot-table ou data-grid)

Exemplos de uso:

Bloco de código
titleRecurso único
oSmartView := totvs.framework.smartview.callSmartView():new("framework.sv.framework.product.default.rep.bra", "report")

...

Propriedades

Obrigatório

Default

Descrição

name
Nome do relatório na tabela (TR__IDREL) + Data/HoraNome do arquivo
extension
pdfExtensão
path\Spool\
MV_RELTPasta onde será salvo


  • Opção 2 - Impressão por E-mail

...

Propriedades

Obrigatório

Default

Descrição

toX
Destinatário do E-mail
subject
Relatório Smart ViewAssunto do E-mail
body

Descrição do relatório (TR__DESCRI)

Corpo do -email
name
Nome do relatório na tabela (TR__IDREL) + Data/HoraNome do arquivo
extension
pdfExtensão
path\Spool\
MV_RELTPasta onde será salvo
Informações

Necessário ter configurado o SMTP para envio de e-mail - Configurar o SMTP para envio de relatórios por e-mail

Aviso
titleExtensõ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 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.atual.

Exemplo de uso:

Bloco de código
jPrintInfo := jsonObject():new()
jPrintInfo["extension"] := "xlsx"
jPrintInfo["name"] := "product" + FWTimeStamp()
oSmartView:setPrintInfo(jPrintInfo)

Sintaxe: setPrintInfo(<jPrintInfo>) → nil

...

executeSmartView()

Executa o recurso escolhido.

Retorno: 

Nome

TipoDescrição
lSuccessLógico

Indica o erro na execução

Exemplo de uso:

Bloco de código
jPrintInfo := jsonObject():new()
jPrintInfo["extension"]lSuccess := "xlsx"
jPrintInfo["name"] := "product" + FWTimeStamp()
oSmartView:setPrintInfoexecuteSmartView(jPrintInfo)

Sintaxe: oSmartView:setPrintInfoexecuteSmartView(<jPrintInfo>) → nillSuccess

...

getError()

Retorna o erro na geração.

Retorno: 

Nome

TipoDescrição
cErrorCaractere

Indica o erro na execução

Exemplo de uso:

Bloco de código
cError := oSmartView:getError()

...

Bloco de código
titleGeração de recurso único com interface
collapsetrue
#include "protheus.ch"

user Function callSV()
	local lSuccess As logical
    local jParams as json
	local oSmartView as object

    jParams := JsonObject():new()
    jParams["parameters"] := Array(2)
    jParams["force"] := .T. //Indica se força o valor
    jParams["parameters"][1] := JsonObject():New()
    jParams["parameters"][1]["name"] := "MV_PAR01"
    jParams["parameters"][1]["value"] := ""
    jParams["parameters"][1]["visibility"] := "Disabled"
    
    jParams["parameters"][2] := JsonObject():New()
    jParams["parameters"][2]["name"] := "MV_PAR02"
    jParams["parameters"][2]["value"] := "ZZZZ"
    jParams["parameters"][2]["visibility"] := "Disabled"

    oSmartView := totvs.framework.smartview.callSmartView():new("framework.sv.framework.product.synt.rep.bra", "report")
    oSmartView:setParameters(jParams)
    lSuccess := oSmartView:executeSmartView(.T.)

	If !lSuccess
		Conout(oSmartView:getError())
	EndIf	

    oSmartView:destroy()
return .T.
Bloco de código
titleGeração de múltiplos recursos com interface
collapsetrue
#include "protheus.ch"

user Function callMultiSV()
	local lSuccess As logical
	local oSmartView as object

    oSmartView := totvs.framework.smartview.callSmartView():new("framework.sv.framework.product")
    oSmartView:setParam("MV_PAR01", "")
    oSmartView:setParam("MV_PAR02", "ZZZZZ")
	oSmartView:setParam("MV_PAR03", 2) 
	oSmartView:setParam("MV_PAR04", totvs.framework.treports.date.dateToTimeStamp(date()))
    
	lSuccess := oSmartView:executeSmartView(.T.)

	If !lSuccess
		Conout(oSmartView:getError())
	EndIf	

    oSmartView:destroy()
return .T.