Mostrando postagens com marcador GUID. Mostrar todas as postagens
Mostrando postagens com marcador GUID. Mostrar todas as postagens

quarta-feira, 25 de janeiro de 2017

CSS: Quebra de página em PageBlockTable (renderAs="PDF")

É... o título não ficou muito legal! Tentei resumir em poucas palavras, para o título, o problema e a solução que encontrei e que compartilharei com vocês logo a seguir:

Bem, estava criando uma página Visualforce, renderizada em PDF que, entre outras coisas, possui uma tabela <apex:PageBlockTable />. O problema acontecia quando a tabela estava no final da página e o conteúdo dessa tabela não cabia na mesma página. A tabela era simplesmente cortada e mal dividida, deixando um aspecto, digamos, bem amador. Veja:




Porém dando uma pesquisa, achei uma solução interessante que, caso essa "quebra de página" aconteca, o cabeçalho é copiado para a página seguinte, deixando um aspecto melhor para a continuação da tabela. O CSS em questão é:


     table {  
       -fs-table-paginate: paginate;  
     }  

Observe que o cabeçalho é inserido automaticamente na segunda página, após inserir o CSS no cabeçalho da sua Visualforce:



Bom, por hoje é apenas isso! 




* Está precisando de um suporte ou uma consultoria na implantação do seu Salesforce? Entre em contato conosco - CbCloud: http://www.cbcloud.com.br/
Somos parceiros gerenciados pela Salesforce!





quarta-feira, 20 de abril de 2016

GUID no Salesforce

Hoje irei compartilhar uma pequena função Apex para gerar um código GUID no Salesforce. GUID significa Globally unique identifier. Em português Indentificador global único. Isto é, uma código único que é gerado para identificar alguma coisa. Normalmente é usado para identificar registros em sistemas diferentes, em processos de integração. Bem, o que vamos gerar a seguir ficará assim:


 4b033118-86a6-8941-c6e2-ad1015509c6c  

O SFDC, por padrão, diferente de outras plataformas de desenvolvimento, não possui uma classe padrão para gerar os GUID. Após algumas pesquisas encontrei em alguns fóruns um código simples e interessante, que compartilho a seguir:


 global class Guid{   
   global static String generate(){   
     Blob b = Crypto.GenerateAESKey(128);  
     String h = EncodingUtil.ConvertTohex(b);  
     String guid = h.SubString(0,8)+ '-' + h.SubString(8,12) + '-' + h.SubString(12,16) + '-' + h.SubString(16,20) + '-' + h.substring(20);  
     return guid;  
   }  
 }  


Li também que esse código não seria tão perfeito, pois poderia gerar GUID repetidos. Dessa forma, fiz a classe de teste a seguir e não constatei nenhum código repetido:


 @isTest  
 private class GuidTest{  
   static testMethod void test(){  
     boolean erro = false;  
     Set<String> lista = new Set<String>();  
     for (integer i = 0; i < 100000; i++){  
       String uid = Guid.generate();  
       if (lista.contains(uid)){  
         System.debug(i);  
         System.debug(lista.Size());  
         System.debug('GUID: ' + uid);  
         erro = true;  
         break;  
       }  
       else  
         lista.add(uid);  
     }  
     System.assert(!erro, 'A classe GUID gerou um valor duplicado!');  
   }    
 }  

Veja que gerei cem mil UIDs e nenhum duplicou. Me pareceu bem confiável! Porém, se alguém encontrar alguma falha, comente aqui no post. 

Por hoje é só!