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

Newer Version Available

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

sObject 項目へのアクセス

Java の場合と同様、単純なドット表記を使用して sObject 項目にアクセスしたり、変更したりできます。次に例を示します。

1Account a = new Account();
2a.Name = 'Acme';    // Access the account name field and assign it 'Acme'

[作成者] または [最終更新日] など、システムによって生成された項目は変更できません。変更しようとすると、Apex ランタイムエンジンはエラーを生成します。また、数式項目値と、コンテキストユーザ参照専用の他の項目値も変更できません。

Account などの特定のオブジェクトではない汎用 sObject 種別の場合、ドット表記を使用して Id 項目のみを取得できます。Salesforce API バージョン 27.0 以降を使用して保存された Apex コードの Id 項目を設定できます。また、汎用の sObject put メソッドおよび get メソッドも使用できます。sObject クラスを参照してください。

この例では、Id 項目にアクセスする方法および汎用 sObject で許可されない操作を示します。

1Account a = new Account(Name = 'Acme', BillingCity = 'San Francisco');
2insert a;
3sObject s = [SELECT Id, Name FROM Account WHERE Name = 'Acme' LIMIT 1];
4// This is allowed
5ID id = s.Id;
6// The following line results in an error when you try to save
7String x = s.Name;
8// This line results in an error when you try to save using API version 26.0 or earlier
9s.Id = [SELECT Id FROM Account WHERE Name = 'Acme' LIMIT 1].Id;

組織で個人取引先が有効になっている場合は、法人取引先個人取引先の 2 種類の取引先を使用できます。コードが name を使用して新しい取引先を作成すると、法人取引先が作成されます。コードが LastName を使用する場合、個人取引先が作成されます。

メモ

sObject で処理を実行する場合、最初にその sObject を特定のオブジェクトに変換することをお勧めします。次に例を示します。
1Account a = new Account(Name = 'Acme', BillingCity = 'San Francisco');
2insert a;
3sObject s = [SELECT Id, Name FROM Account WHERE Name = 'Acme' LIMIT 1];
4ID id = s.ID;
5Account convertedAccount = (Account)s;
6convertedAccount.name = 'Acme2';
7update convertedAccount;
8Contact sal = new Contact(FirstName = 'Sal', Account = convertedAccount);
次の例は、SOSL で取得したしたレコードのセットのオブジェクト型をどのように判定するかについて示しています。汎用 sObject レコードを取引先責任者、リード、または取引先に変換すると、項目をそれぞれ次のように変更できます。
1swfobject.registerObject("clippy.codeblock-3", "9");
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17public class convertToCLA {
18    List<Contact> contacts;
19    List<Lead> leads;
20    List<Account> accounts;
21
22    public void convertType(Integer phoneNumber) {
23        List<List<sObject>> results = [FIND '4155557000' 
24                         IN Phone FIELDS 
25                         RETURNING Contact(Id, Phone, FirstName, LastName), 
26                         Lead(Id, Phone, FirstName, LastName), Account(Id, Phone, Name)];
27        sObject[] records = ((List<sObject>)results[0]);
28    
29        if (!records.isEmpty()) {
30            for (Integer i = 0; i < records.size(); i++) {
31              sObject record = records[i];
32              if (record.getSObjectType() == Contact.sObjectType) {
33                contacts.add((Contact) record);
34              } else if (record.getSObjectType() == Lead.sObjectType){
35                leads.add((Lead) record);
36              } else if (record.getSObjectType() == Account.sObjectType) {
37                accounts.add((Account) record);
38              }
39            }
40        }  
41    }
42}
43