I am trying to create a person account using the following code. Its throwing the following error:
"Invalid constructor syntax, name=value pairs can only be used for SObjects".
How to fix this.Account Acc = new Account(FirstName='test1',LastName='test2',Email='abc@xyz.com'); insert acc;
Answer
Id personAccountRecordTypeId = Schema.SObjectType.Account.getRecordTypeInfosByDeveloperName().get('PersonAccount').getRecordTypeId();
Account newPersonAccount = new Account();
// for person accounts we can not update the Name field instead we have to update the FirstName and LastName individually
newPersonAccount.FirstName = 'Fred';
newPersonAccount.LastName = 'Smith';
newPersonAccount.RecordTypeId = personAccountRecordTypeId;
insert newPersonAccount;
You will need to insert Account of RecordType of Person Account .Use developer name of record type as best practice.
If your code is in a Managed Package then you will get errors when you try to create a managed package because you cannot reference PersonAccount fields in a managed package. You will need to reference the fields dynamically to solve this.
The fields can be set like this:
newPersonAccount.put('FirstName', 'Fred');
Attribution
Source : Link , Question Author : sunny , Answer Author : Mohith Shrivastava