事象
Apexでテストクラスを作っていて、個人取引先オブジェクトにデータをinsertしようとしたら実行時エラーが発生。
1 2 3 4 |
// 個人取引先登録 Account acc = new Account(); acc.RecordTypeId = [SELECT Id FROM RecordType WHERE SobjectType='Account' AND DeveloperName='PersonAccount']; acc.Name = 'テスト 太郎'; |
FATAL_ERROR System.DmlException: Insert failed. First exception on row 0; first error: INVALID_FIELD_FOR_INSERT_UPDATE, Unable to create/update fields: Name. Please check the security settings of this field and verify that it is read/write for your profile or permission set.: [Name] |
原因と対策
Name項目のデータ型がテキストではなく「名前」なので、姓と名を分けて設定しろということらしいです。
こうすればOK。
1 2 3 4 5 |
// 個人取引先登録 Account acc = new Account(); acc.RecordTypeId = [SELECT Id FROM RecordType WHERE SobjectType='Account' AND DeveloperName='PersonAccount']; acc.LastName = 'テスト'; acc.FirstName = '太郎'; |
複合型のワナですね。以前も住所型で同じようなことがありました。
【Visualforce】住所型の項目を表示しようとするとコンパイルエラーになる
ちなみにこの「名前」型。取引先責任者(Contact)で同じことをやろうとすると、コンパイル時にエラーになります。
Field is not writeable: Contact.Name |
個人取引先の場合はコンパイルをすり抜けてしまうので、ちょっと注意が必要です。
コメント