If Person Account is enabled then there must be a field on Account object called: isPersonAccount
. We simply need to check if exists as below.
Method 1
- Takes a bit more time and consumes heap size relatively.
- Clean and authentic method.
public class CheckPersonAccount { public boolean getIsPerson(){ return Schema.sObjectType.Account.fields.getMap().containsKey( 'isPersonAccount' ); }
METHOD 2
- Reletively faster
- But just a workaround, not sure about exception how much it will grow
public Boolean personAccountsEnabled(){ try { // Try to use the isPersonAccount field. sObject acc = new Account(); acc.get( 'isPersonAccount' ); // If we got here without an exception, return true. return true; } catch( Exception ex ) { // An exception was generated trying to access the isPersonAccount field // so person accounts aren't enabled; return false. return false; } }