sexta-feira, 6 de maio de 2016

Apex: Acessando ID de um Tipo de Registro, pelo nome, sem query SOQL

É comum ao desenvolver uma classe ou trigger Apex, no Salesforce, precisarmos de pegar o ID de um Tipo de Registro, para inserirmos um novo registro daquele tipo ou mesmo para fazermos uma consulta de registros daquele tipo. 
Bem, há uma forma bem simples de buscar um determinado Tipo de Registro, pelo nome, sem a necessidade de uma consulta SOQL. Veja:


 Schema.Sobjecttype.Account.getRecordTypeInfosByName().get('Pessoa Física').getRecordTypeId();  



Observe que basta colocar o nome do Objeto (Account, nesse exemplo) e no get o nome do tipo de registro (Pessoa Física).


 Id idRtPF = Schema.Sobjecttype.Account.getRecordTypeInfosByName().get('Pessoa Física').getRecordTypeId();  
 Account conta = new Account(Name='Joao Silva', RecordTypeId = idRtPF);  
 insert conta;  


Ao usar essa instrução, ao invés de fazer uma consulta ao objeto RecordType, você se distanciará dos limites de governança (governor limits) e deixará seu código mais elegante.


ATUALIZAÇÃO IMPORTANTE:

Na release Summer ’18 a Salesforce adicionou o método Schema.DescribeSObjectResult.getRecordTypeInfosByDeveloperName(). Com esse, é possível pegar o id do Tipo de Registro pelo Developer Name. Isso é interessante para evitar problemas com Orgs multi idioma ou alterações do Label do tipo de registro. Veja o exemplo anterior com o novo método:


 Id idRtPF = Schema.SObjectType.Account.getRecordTypeInfosByDeveloperName().get('PessoaFisica').getRecordTypeId();
 Account conta = new Account(Name='Joao Silva', RecordTypeId = idRtPF);  
 insert conta;  



* Precisa de um suporte ou consultoria com a plataforma Salesforce? Entre em contato conosco - CbCloud: http://www.cbcloud.com.br/ - Somos parceiros Gold Salesforce.



Nenhum comentário: