この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

Newer Version Available

This content describes an older version of this product. View Latest

SObject クラス

sObject ��ータ型のメソッドが含まれます。

名前空間

System

使用方法

SObject メソッドはすべてインスタンスメソッドです。つまり、取引先または取引先責任者など、sObject インスタンスによってコールされ、sObject インスタンス上で動作します。次に、sObject のインスタンスメソッドを示します。

sObject についての詳細は、「sObjects の操作」を参照してください。

sObject のメソッド

sObject のメソッドは次のとおりです。すべてインスタンスメソッドです。

addError(errorMsg)

カスタムエラーメッセージでトリガレコードをマークし、DML 操作が行われないようにします。

署名

public Void addError(String errorMsg)

パラメータ

errorMsg
型: String

レコードにマークを付けるエラーメッセージです。

戻り値

型: Void

使用方法

before insert トリガおよび before update トリガの Trigger.new、および before delete トリガの Trigger.old で使用すると、アプリケーションインターフェースにエラーメッセージが表示されます。

「トリガ」および「トリガの例外」を参照してください。

このメソッドは、指定されたエラーメッセージ内のすべての HTML マークアップをエスケープします。エスケープ文字は、\n<>&"\\u2028\u2029\u00a9 です。この結果は HTML マークアップで表示されません。代わりに、Salesforce ユーザインターフェースにテキストとして表示されます。

メモ

Visualforce コントローラで使用すると、生成されたメッセージが、そのページのエラーコレクションに追加されます。詳細は、『Visualforce 開発者ガイド』の「入力規則と標準コントローラ」を参照してください。

1Trigger.new[0].addError('bad');

addError(errorMsg, escape)

カスタムエラーメッセージを使用してトリガレコードにマークを付け、エラーメッセージをエスケープする必要があるかどうかを指定して、DML 操作が行われないようにします。

署名

public Void addError(String errorMsg, Boolean escape)

パラメータ

errorMsg
型: String

レコードにマークを付けるエラーメッセージです。

escape
型: Boolean

カスタムエラーメッセージ内の HTML マークアップがエスケープされるか (true)、否か (false) を示します。このパラメータは Lightning Experience と Salesforce アプリケーションでは無視され、HTML は常にエスケープされます。escape パラメータは Salesforce Classic でのみ適用されます。

戻り値

型: Void

使用方法

エスケープ文字は、\n<>&"\\u2028\u2029\u00a9 です。この結果は HTML マークアップで表示されません。代わりに、Salesforce ユーザインターフェースにテキストとして表示されます。

escape 引数に false を指定するときは、慎重に行ってください。Salesforce ユーザインターフェースに表示されるエスケープ解除された文字列が、システムの脆弱性を示す場合があります。それらの文字列に有害なコードが含まれている可能性があるためです。エラーメッセージに HTML マークアップを含める場合は、falseescape 引数を使用してこのメソッドをコールし、入力項目値などのすべての動的コンテンツをエスケープします。それ以外の場合は、escape 引数に true を指定するか、addError(String errorMsg) をコールします。

警告

1Trigger.new[0].addError('Fix & resubmit', false);

addError(exceptionError)

カスタムエラーメッセージでトリガレコードをマークし、DML 操作が行われないようにします。

署名

public Void addError(Exception exceptionError)

パラメータ

exceptionError
型: System.Exception

レコードにマークを付けるエラーメッセージを含む例外オブジェクトまたはカスタム例外オブジェクトです。

戻り値

型: Void

使用方法

before insert トリガおよび before update トリガの Trigger.new、および before delete トリガの Trigger.old で使用すると、アプリケーションインターフェースにエラーメッセージが表示されます。

「トリガ」および「トリガの例外」を参照してください。

このメソッドは、指定されたエラーメッセージ内のすべての HTML マークアップをエスケープします。エスケープ文字は、\n<>&"\\u2028\u2029\u00a9 です。この結果は HTML マークアップで表示されません。代わりに、Salesforce ユーザインターフェースにテキストとして表示されます。

メモ

Visualforce コントローラで使用すると、生成されたメッセージが、そのページのエラーコレクションに追加されます。詳細は、『Visualforce 開発者ガイド』の「入力規則と標準コントローラ」を参照してください。

1public class MyException extends Exception {}
2Trigger.new[0].addError(new myException('Invalid Id'));

addError(exceptionError, escape)

カスタム例外エラーメッセージを使用してトリガレコードにマークを付け、例外エラーメッセージをエスケープするかどうかを指定し、DML 操作が行われないようにします。

署名

public Void addError(Exception exceptionError, Boolean escape)

パラメータ

exceptionError
型: System.Exception

レコードにマークを付けるエラーメッセージを含む例外オブジェクトまたはカスタム例外オブジェクトです。

escape
型: Boolean

カスタムエラーメッセージ内の HTML マークアップがエスケープされるか (true)、否か (false) を示します。このパラメータは Lightning Experience と Salesforce アプリケーションでは無視され、HTML は常にエスケープされます。escape パラメータは Salesforce Classic でのみ適用されます。

戻り値

型: Void

使用方法

エスケープ文字は、\n<>&"\\u2028\u2029\u00a9 です。この結果は HTML マークアップで表示されません。代わりに、Salesforce ユーザインターフェースにテキストとして表示されます。

escape 引数に false を指定するときは、慎重に行ってください。Salesforce ユーザインターフェースに表示されるエスケープ解除された文字列が、システムの脆弱性を示す場合があります。それらの文字列に有害なコードが含まれている可能性があるためです。エラーメッセージに HTML マークアップを含める場合は、falseescape 引数を使用してこのメソッドをコールし、入力項目値などのすべての動的コンテンツをエスケープします。それ以外の場合は、escape 引数に true を指定するか、addError(Exception e) をコールします。

警告

1public class MyException extends Exception {}
2Trigger.new[0].addError(new myException('Invalid Id & other issues', false));

addError(errorMsg)

Salesforce ユーザインターフェースの項目に、指定したエラーメッセージを設定し、DML 操作が行われないようにします。

署名

public Void addError(String errorMsg)

パラメータ

errorMsg
型: String

戻り値

型: Void

使用方法

注意:
  • before insert トリガおよび before update トリガの Trigger.new、および before delete トリガの Trigger.old で使用すると、アプリケーションインターフェースにエラーが表示されます。
  • Visualforce コントローラで使用すると、inputField コンポーネントが項目に結合されている場合、コンポーネントにメッセージが添付されます。詳細は、『Visualforce 開発者ガイド』の「入力規則と標準コントローラ」を参照してください。
  • 項目識別子は実際には呼び出しオブジェクトではなく、sObject が呼び出し元であるため、このメソッドは専門分野に特化されます。項目を使用して、エラーの表示に使用する必要がある項目を識別します。

「トリガ」および「トリガの例外」を参照してください。

このメソッドは、指定されたエラーメッセージ内のすべての HTML マークアップをエスケープします。エスケープ文字は、\n<>&"\\u2028\u2029\u00a9 です。この結果は HTML マークアップで表示されません。代わりに、Salesforce ユーザインターフェースにテキストとして表示されます。

メモ

1Trigger.new[0].myField__c.addError('bad');

addError(errorMsg, escape)

Salesforce ユーザインターフェースのトリガレコード項目に、エスケープまたはエスケープ解除できる、指定されたエラーメッセージを設定し、DML 操作が行われないようにします。

署名

public Void addError(String errorMsg, Boolean escape)

パラメータ

errorMsg
型: String

レコードにマークを付けるエラーメッセージです。

escape
型: Boolean

カスタムエラーメッセージ内の HTML マークアップがエスケープされるか (true)、否か (false) を示します。このパラメータは Lightning Experience と Salesforce アプリケーションでは無視され、HTML は常にエスケープされます。escape パラメータは Salesforce Classic でのみ適用されます。

戻り値

型:

使用方法

エスケープ文字は、\n<>&"\\u2028\u2029\u00a9 です。この結果は HTML マークアップで表示されません。代わりに、Salesforce ユーザインターフェースにテキストとして表示されます。

escape 引数に false を指定するときは、慎重に行ってください。Salesforce ユーザインターフェースに表示されるエスケープ解除された文字列が、システムの脆弱性を示す場合があります。それらの文字列に有害なコードが含まれている可能性があるためです。エラーメッセージに HTML マークアップを含める場合は、falseescape 引数を使用してこのメソッドをコールし、入力項目値などのすべての動的コンテンツをエスケープします。それ以外の場合は、escape 引数に true を指定するか、field.addError(String errorMsg) をコールします。

警告

1Trigger.new[0].myField__c.addError('Fix & resubmit', false);

clear()

すべての項目値をクリアします。

署名

public Void clear()

戻り値

型: Void

1Account acc = new account(Name = 'Acme');
2acc.clear();
3Account expected = new Account();
4system.assertEquals(expected, acc);

clone(preserveId, isDeepClone, preserveReadonlyTimestamps, preserveAutonumber)

SObject レコードのコピーを作成します。

署名

public SObject clone(Boolean preserveId, Boolean isDeepClone, Boolean preserveReadonlyTimestamps, Boolean preserveAutonumber)

パラメータ

preserveId
型: Boolean
(省略可能) 元のオブジェクトの ID を重複で保持するか削除するかを指定します。true に設定すると、ID は重複する ID にコピーされます。デフォルトは false であるため、ID はクリアされます。
isDeepClone
型: Boolean
(省略可能) メソッドで SObject 項目の完全コピーを作成するか参照のみを作成するかを決定します。
  • true に設定すると、メソッドは SObject の完全コピーを作成します。リレーション項目など、SObject のすべての項目はメモリ内に複製されます。その結果、コピーした SObject の項目に変更を行っても、元の SObject は影響されません。
  • false に設定すると、メソッドは SObject 項目の浅いコピーを作成します。コピーされたすべてのリレーション項目は元の SObject を使用します。その結果、コピーされた SObject でリレーション項目を変更すると、元の SObject の対応する項目も変更され、元の SObject で変更するとコピーされた SObject も変更されます。デフォルトは、false です。
preserveReadonlyTimestamps
型: Boolean
(省略可能) 参照のみのタイムスタンプ項目を重複で保持するか削除するかを指定します。true に設定すると、参照のみの項目 CreatedByIdCreatedDateLastModifiedById、および LastModifiedDate は重複項目にコピーされます。デフォルトは false であるため、値はクリアされます。
preserveAutonumber
型: Boolean
(省略可能) 元のオブジェクトの自動採番項目を複製で保持するか削除するかを指定します。true に設定すると、自動採番項目はコピーされたオブジェクトにコピーされます。デフォルトは false であるため、自動採番項目はクリアされます。

戻り値

型: SObject (同じデータ型)

使用方法

Salesforce API バージョン 22.0 以前を使用して保存された Apex の場合、preserveId 引数のデフォルト値は true のため、ID は保持されます。

メモ

1Account acc = new account(Name = 'Acme', Description = 'Acme Account');
2Account clonedAcc = acc.clone(false, false, false, false);
3System.assertEquals(acc, clonedAcc);

get(fieldName)

AccountNumber など、fieldName で指定された項目の値を返します。

署名

public Object get(String fieldName)

パラメータ

fieldName
型: String

戻り値

型: Object

使用方法

詳細は、「動的 SOQL」を参照してください。

1Account acc = new account(Name = 'Acme', Description = 'Acme Account');
2String description = (String)acc.get('Description');
3System.assertEquals('Acme Account', description);

get(field)

項目トークン Schema.sObjectField (Schema.Account.AccountNumber など) で指定された項目の値を返します。

署名

public Object get(Schema.sObjectField field)

パラメータ

field
型: Schema.SObjectField

戻り値

型: Object

使用方法

詳細は、「動的 SOQL」を参照してください。

項目トークンは、個人取引先では使用できません。Schema.Account.fieldname にアクセスすると、例外エラーが発生します。代わりに、項目名を文字列として指定します。

メモ

1Account acc = new account(Name = 'Acme', Description = 'Acme Account');
2String description = (String)acc.get(Schema.Account.Description);
3System.assertEquals('Acme Account', description);

getCloneSourceId()

オブジェクトのコピー元であるエンティティの ID を返します。このメソッドは、Salesforce ユーザインターフェースを使用してコピーされたオブジェクトに使用できます。preserveId パラメータを使用しない場合、または preserveId 値に false を使用する場合は、System.SObject.clone(preserveId, isDeepClone, preserveReadonlyTimestamps, preserveAutonumber) メソッドを使用して作成されたオブジェクトにも使用できます。

署名

public Id getCloneSourceId()

戻り値

型: Id

使用方法

A を B にコピーし、B を C にコピーし、C を D にコピーすると、B と C と D のすべてがコピー元である A を参照します。

1Account acc0 = new Account(Name = 'Acme');
2insert acc0;
3Account acc1 = acc0.clone();
4Account acc2 = acc1.clone();
5Account acc3 = acc2.clone();
6Account acc4 = acc3.clone();
7System.assert(acc0.Id != null);
8System.assertEquals(acc0.Id, acc1.getCloneSourceId());
9System.assertEquals(acc0.Id, acc2.getCloneSourceId());
10System.assertEquals(acc0.Id, acc3.getCloneSourceId());
11System.assertEquals(acc0.Id, acc4.getCloneSourceId());
12System.assertEquals(null, acc0.getCloneSourceId());

getOptions()

SObject の database.DMLOptions オブジェクトを返します。

署名

public Database.DMLOptions getOptions()

戻り値

型: Database.DMLOptions

1Database.DMLOptions dmo = new Database.dmlOptions();
2dmo.assignmentRuleHeader.useDefaultRule = true;
3
4Account acc = new Account(Name = 'Acme');
5acc.setOptions(dmo);
6Database.DMLOptions accDmo = acc.getOptions();

getPopulatedFieldsAsMap()

入力された項目名とそれに対応する値の対応付けを返します。対応付けには、SObject インスタンスについてメモリ内で入力された項目のみが含まれます。

署名

public Map<String,Object> getPopulatedFieldsAsMap()

戻り値

型: Map<String,Object>

項目名とそれに対応する値の対応付け。

使用方法

返される対応付けには、SObject インスタンスについてメモリ内に入力された項目のみが含まれるため、それらの項目の反復処理が容易になります。項目は、次の場合にメモリ内に入力されます。
  • 項目が SOQL ステートメントで照会された。
  • getPopulatedFieldsAsMap() メソッドへのコールの前に項目が明示的に設定された。
クエリまたは設定された関連オブジェクトの項目も返される対応付けに含まれます。

次の例では、SOQL クエリの後に getPopulatedFieldsAsMap() メソッドで返された対応付けを反復処理します。

1Account a = new Account();
2a.name = 'TestMapAccount1';
3insert a;
4a = [select Id,Name from Account where id=:a.Id];
5Map<String, Object> fieldsToValue = a.getPopulatedFieldsAsMap();
6
7for (String fieldName : fieldsToValue.keySet()){
8    System.debug('field name is ' + fieldName + ', value is ' + 
9        fieldsToValue.get(fieldName));
10}
11
12// Example debug statement output:
13// DEBUG|field name is Id, value is 001R0000003EPPkIAO
14// DEBUG|field name is Name, value is TestMapAccount1

次の例では、SObject の項目が明示的に設定された後に getPopulatedFieldsAsMap() メソッドで返された対応付けを反復処理します。

1Account a = new Account();
2a.name = 'TestMapAccount2';
3a.phone = '123-4567';
4insert a;
5Map<String, Object> fieldsToValue = a.getPopulatedFieldsAsMap();
6
7for (String fieldName : fieldsToValue.keySet()) {
8    System.debug('field name is ' + fieldName + ', value is ' + 
9        fieldsToValue.get(fieldName));
10}
11
12// Example debug statement output:
13// DEBUG|field name is Name, value is TestMapAccount2
14// DEBUG|field name is Phone, value is 123-4567
15// DEBUG|field name is Id, value is 001R0000003EPPpIAO

次の例は、関連オブジェクトに getPopulatedFieldsAsMap() メソッドを使用する方法を示します。

1Account a = new Account();
2a.name='TestMapAccount3';
3insert a;
4Contact c = new Contact();
5c.firstname='TestContactFirstName';
6c.lastName ='TestContactLastName';
7c.accountid = a.id;
8insert c;
9
10c = [SELECT id, Contact.Firstname, Contact.Account.Name FROM Contact 
11        where id=:c.id limit 1];
12Map<String, Object> fieldsToValue = c.getPopulatedFieldsAsMap();
13
14// To get the fields on Account, get the Account object 
15// and call getMapPopulatedFieldsAsMap() on that object.
16
17a = (Account)fieldsToValue.get('Account');
18fieldsToValue = a.getPopulatedFieldsAsMap();
19
20for (String fieldName : fieldsToValue.keySet()) {
21    System.debug('field name is ' + fieldName + ', value is ' + 
22        fieldsToValue.get(fieldName));
23}
24
25// Example debug statement output:
26// DEBUG|field name is Id, value is 001R0000003EPPuIAO
27// DEBUG|field name is Name, value is TestMapAccount3

getSObject(fieldName)

指定された項目の値を返します。このメソッドは主に、外部 ID の値にアクセスするために動的 DML と共に使用します。

署名

public SObject getSObject(String fieldName)

パラメータ

fieldName
型: String

戻り値

型: SObject

1Account acc = new account(Name = 'Acme', Description = 'Acme Account');
2insert acc;
3Contact con = new Contact(Lastname = 'AcmeCon', AccountId = acc.id);
4insert con;
5
6SObject contactDB = 
7    [SELECT Id, AccountId, Account.Name FROM Contact WHERE id = :con.id LIMIT 1];
8Account a = (Account)contactDB.getSObject('Account');
9System.assertEquals('Acme', a.name);

getSObject(fieldName)

項目トークン Schema.fieldName (Schema.MyObj.MyExternalId など) で指定された項目の値を返します。このメソッドは主に、外部 ID の値にアクセスするために動的 DML と共に使用します。

署名

public SObject getSObject(Schema.SObjectField fieldName)

パラメータ

fieldName
型: Schema.SObjectField

戻り値

型: SObject

1Account acc = new account(name = 'Acme', description = 'Acme Account');
2insert acc;
3Contact con = new contact(lastname = 'AcmeCon', accountid = acc.id);
4insert con;
5
6Schema.DescribeFieldResult fieldResult = Contact.AccountId.getDescribe();
7Schema.SObjectField field = fieldResult.getSObjectField();
8
9SObject contactDB = 
10    [SELECT Id, AccountId, Account.Name FROM Contact WHERE id = :con.id LIMIT 1];
11Account a = (Account)contactDB.getSObject(field);
12System.assertEquals('Acme', a.name);

getSObjects(fieldName)

指定された項目の値を返します。このメソッドは主に、子リレーションなど、関連オブジェクトの値にアクセスするために動的 DML と共に使用します。

署名

public SObject[] getSObjects(String fieldName)

パラメータ

fieldName
型: String

戻り値

型: SObject[]

使用方法

詳細は、「動的 DML」を参照してください。

1Account acc = new account(name = 'Acme', description = 'Acme Account');
2insert acc;
3Contact con = new contact(lastname = 'AcmeCon', accountid = acc.id);
4insert con;
5
6SObject[] a = [SELECT id, (SELECT Name FROM Contacts LIMIT 1) FROM Account WHERE id = :acc.id];
7SObject[] contactsDB = a.get(0).getSObjects('Contacts');
8String fieldValue = (String)contactsDB.get(0).get('Name');
9System.assertEquals('AcmeCon', fieldValue);

getSObjects(fieldName)

項目トークン Schema.fieldName (Schema.Account.Contact など) で指定された項目の値を返します。このメソッドは主に、子リレーションなど、関連オブジェクトの値にアクセスするために動的 DML と共に使用します。

署名

public SObject[] getSObjects(Schema.SObjectType fieldName)

パラメータ

fieldName
型: Schema.SObjectType

戻り値

型: SObject[]

getSObjectType()

この SObject のトークンを返します。このメソッドは Describe Information で使用されます。

署名

public Schema.SObjectType getSObjectType()

戻り値

型: Schema.SObjectType

使用方法

詳細は、「Apex Describe Information について」を参照してください。

1Account acc = new Account(name = 'Acme', description = 'Acme Account');
2Schema.SObjectType expected = Schema.Account.getSObjectType();
3System.assertEquals(expected, acc.getSObjectType());

getQuickActionName()

この SObject に関連付けられたクイックアクションの名前を取得します。多くの場合、トリガで使用されます。

署名

public String getQuickActionName()

戻り値

型: String

1trigger accTrig2 on Contact (before insert) {
2    for (Contact c : Trigger.new) {
3        if (c.getQuickActionName() == QuickAction.CreateContact) {
4            c.WhereFrom__c = 'GlobaActionl';
5        } else if (c.getQuickActionName() == Schema.Account.QuickAction.CreateContact) {
6            c.WhereFrom__c = 'AccountAction';
7        } else if (c.getQuickActionName() == null) {
8            c.WhereFrom__c = 'NoAction';
9        } else {
10            System.assert(false);
11        }
12    }
13}

isClone()

エンティティが何かからコピーされた場合に、そのエンティティが保存されていなくても、true を返します。

署名

public Boolean isClone()

戻り値

型: Boolean

1Account acc = new Account(Name = 'Acme');
2insert acc;
3Account acc2 = acc.clone();
4// Test before saving
5System.assertEquals(true, acc2.isClone());
6insert acc2;
7// Test after saving
8System.assertEquals(true, acc2.isClone());

isSet(fieldName)

クエリ対象の sObject 項目に関する情報を返します。sObject 項目が直接割り当てか SOQL クエリへの追加によって入力される場合、true を返します。sObject 項目が設定されていない場合、false を返します。無効な項目が指定されている場合、SObjectException が発生します。

署名

public Void isSet(String fieldName)

パラメータ

fieldName
型: String

戻り値

型: Boolean

使用方法

isSet メソッドは、項目に特定のユーザが組織権限またはその他の特殊なアクセス権によってアクセス可能であるかどうかを確認しません。

1Contact  c = new Contact(LastName = 'Joyce');
2System.assertEquals(true, c.isSet('LastName'));
3System.assertEquals(false, c.isSet('FirstName')); // FirstName field is not written to
4c.firstName = null;
5System.assertEquals(true, c.isSet('FirstName')); //FirstName field is written to

isSet(field)

クエリ対象の sObject 項目に関する情報を返します。sObject 項目が直接割り当てか SOQL クエリへの追加によって入力される場合、true を返します。sObject 項目が設定されていない場合、false を返します。無効な項目が指定されている場合、SObjectException が発生します。

署名

public Void isSet(Schema.SObjectField field)

パラメータ

field
型:SObjectField クラス

戻り値

型: Boolean

使用方法

isSet メソッドは、項目に特定のユーザが組織権限またはその他の特殊なアクセス権によってアクセス可能であるかどうかを確認しません。

1Contact  newContact = new Contact(LastName = 'Joyce');
2insert(newContact); //Insert a new contact with last name Joyce
3Contact c = [SELECT FirstName FROM Contact WHERE Id = :newContact.Id];
4System.assertEquals(true, c.isSet(Contact.FirstName)); //FirstName field in query
5System.assertEquals(false, c.isSet(Contact.LastName)); //LastName field not in query

put(fieldName, value)

指定された項目の値を設定し、項目の以前の値を返します。

署名

public Object put(String fieldName, Object value)

パラメータ

fieldName
型: String
value
型: Object

戻り値

型: Object

1Account acc = new Account(name = 'test', description = 'old desc');
2String oldDesc = (String)acc.put('description', 'new desc');
3System.assertEquals('old desc', oldDesc);
4System.assertEquals('new desc', acc.description);

put(fieldName, value)

項目トークン Schema.sObjectField (Schema.Account.AccountNumber など) で指定された項目の値を設定し、項目の以前の値を返します。

署名

public Object put(Schema.SObjectField fieldName, Object value)

パラメータ

fieldName
型: Schema.SObjectField
value
型: Object

戻り値

型: Object

1Account acc = new Account(name = 'test', description = 'old desc');
2String oldDesc = (String)acc.put(Schema.Account.Description, 'new desc');
3System.assertEquals('old desc', oldDesc);
4System.assertEquals('new desc', acc.description);

項目トークンは、個人取引先では使用できません。Schema.Account.fieldname にアクセスすると、例外エラーが発生します。代わりに、項目名を文字列として指定します。

メモ

putSObject(fieldName, value)

指定された項目の値を設定します。このメソッドは主に、外部 ID の値に設定するために動的 DML で使用します。メソッドは項目の以前の値を返します。

署名

public SObject putSObject(String fieldName, SObject value)

パラメータ

fieldName
型: String
value
型: SObject

戻り値

型: SObject

1Account acc = new Account(name = 'Acme', description = 'Acme Account');
2insert acc;
3Contact con = new contact(lastname = 'AcmeCon', accountid = acc.id);
4insert con;
5Account acc2 = new account(name = 'Not Acme');
6
7Contact contactDB = 
8    (Contact)[SELECT Id, AccountId, Account.Name FROM Contact WHERE id = :con.id LIMIT 1];
9Account a = (Account)contactDB.putSObject('Account', acc2);
10System.assertEquals('Acme', a.name);
11System.assertEquals('Not Acme', contactDB.Account.name);

putSObject(fieldName, value)

トークン Schema.SObjectType で指定される項目の値を設定します。このメソッドは主に、外部 ID の値に設定するために動的 DML で使用します。メソッドは項目の以前の値を返します。

署名

public SObject putSObject(Schema.SObjectType fieldName, SObject value)

パラメータ

fieldName
型: Schema.SObjectType
value
型: SObject

戻り値

型: SObject

recalculateFormulas()

SObject のすべての数式項目を再計算し、更新された項目値を設定します。数式ロジックに対する変更をテストするたびにオブジェクトを挿入または更新する代わりに、このメソッドをコールして新しい項目値を確認します。必要に応じてロジックにさらなる変更を行います。

署名

public Void recalculateFormulas()

戻り値

型: Void

使用方法

このメソッドは、クロスオブジェクト数式を再計算しません。クロスオブジェクト数式項目と非クロスオブジェクト数式項目の両方があるオブジェクトでこのメソッドをコールすると、非クロスオブジェクト数式項目のみが再計算されます。

recalculateFormulas コールは、SOQL クエリの制限にカウントされます。「実行ガバナと制限」を参照してください。

setOptions(DMLOptions)

SObject の DMLOptions オブジェクトを設定します。

署名

public Void setOptions(database.DMLOptions DMLOptions)

パラメータ

DMLOptions
型: Database.DMLOptions

戻り値

型: Void

1Database.DMLOptions dmo = new Database.dmlOptions();
2dmo.assignmentRuleHeader.useDefaultRule = true;
3
4Account acc = new Account(Name = 'Acme');
5acc.setOptions(dmo);