Páginas filhas
  • Dados Protegidos em relatórios TReport

Versões comparadas

Chave

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



01. OBJETIVO


Não permitir que um usuário sem acesso a um dado sensível ou pessoal faça a impressão do mesmo via tReport.


02. DADOS GERAIS


A utilização da ofuscação dos dados em relatórios TReport é baseada nos acessos de usuário logado que está amarrado aos valores cadastrados na tabela XAL/XAM. A partir dessas informações é definido se a célula será ofuscada ou não.

Essa informação é avaliada a partir do nome dado a célula construída, que se encontra no segundo parâmetro do método de construção,  desde que a seção seja inicializada para atualização de seus valores (método Init() de um objeto de seção) ou que o método print seja executado.

Exemplo :

TRCell():New(oProduto,"B1_COD" ,"SB1", "Produto",/Picture/,/nTamanho/,/lPixel/,

{|| cProduto } )

Caso a célula seja construída utilizando um nome que não possua relação com a tabela XAM (já mencionada) a ofuscação não será realizada automaticamente, pois não há informações que ligue essa operação a ser realizada.
Para isso, caso exista a necessidade de ofuscar a célula mesmo sem amarração com os dados da XAM pode ser utilizado dois tratamentos para essa situação:

01- Utilizar o método SetObfuscate diretamente na célula que deverá ser ofuscada.
Exemplo :

oCell := TRCell():New(oProduto,"CELL01","SB1","Produto",,,,{|| cProduto }

)
If lDeveOfuscar
oCell:SetObfuscate( .T. )
Else
oCell:SetObfuscate( .F. )
EndIf

Dessa maneira a ofuscação é feita de forma individual e independente de verificação de acessos e afins.

A partir do momento que o valor que a célula e ofuscados diretamente (seja ele para falso ou verdadeiro) seu valor não será modificado até o final de sua impressão, seja ele pelos valores automáticos gerados pela
pelo mecanismo de ofuscação da seção ou por algum outro SetObfuscate para a mesma célula que ocorra posteriormente.


02- Utilizar o método SetObfuscCells diretamente na seção informando as células que deverão ser ofuscadas.
Exemplo :

oSection := TRSection():New( oReport,"Produtos",

{"SB1"}

,

{"Produtos"}

,, )

oCell1 := TRCell():New( oSection,"CELL01","SB1", "Produto",,,,

{|| cProduto } )
oCell2 := TRCell():New( oSection,"CELL02","SB1", "Produto",,,,{|| cProduto }

)
oCell3 := TRCell():New( oSection,"CELL03","SB1", "Produto",,,,

{|| cProduto }

)

aAdd( aCells, "CELL01" )
aAdd( aCells, "CELL02" )
aAdd( aCells, "CELL03" )

oSection:SetObfuscCells( aCells )
oSection:Init()


Dessa maneira a ofuscação é feita de forma coletiva amarrando as células indicadas  por seção, é necessário inicializar a seção (método init) para que esses valores sejam
utilizados para atualizar os estados das células da seção.

As células enviadas serão somadas com as células avaliadas automaticamente pela seção.

Isso ocorre independente de verificação de acessos e afins.

Observações :
As maneiras citadas para utilização (SetObfuscate na célula e SetObfuscCells na seção) só serão necessárias caso as células criadas, e amarradas a uma seção, não sejam nomeadas com valores que se encontre na XAM.

Caso as células sejam nomeadas com valores que se encontre na XAM a verificação de acesso e ofuscação dos dados é realizado automaticamente.

A não ofuscação de uma célula é permitida somente de maneira individual ( oCell:SetObfuscate( .F. ) ).

Se uma célula que será ofuscada fizer parte de uma fórmula/acumulador seu conteúdo não será considerado na execução.
Exemplo:

CELL(A1) - Valor( 10 ) - Será ofuscada
CELL(A2) - Valor( 10 ) - Não será ofuscada

Se uma fórmula for criada somando os dois valores - CELL(A1) + CELL(A2) - o resultado será 10, já que o valor da célula ofuscada será desconsiderado.

Em uma situação sem a ofuscação de nenhuma das duas células o resultado será 20, já que os dois valores serão considerados.