[Salesforce]子オブジェクトから親オブジェクトへのリレーションの辿り方法

子オブジェクトから親オブジェクトへのリレーションの辿り方法について共有します。

例として、取引先責任者から取引先を辿る例です。

for(Contact obj : [
                    Select 
                      Name, 
                      Account.Name,
                        Account.CreatedBy.Name
                    From 
                      Contact
                    ]
   					){
   system.debug('obj.Name:'+obj.Name);
   system.debug('obj.Account.Name:'+obj.Account.Name);
   system.debug('obj.Account.CreatedBy.Name:'+obj.Account.CreatedBy.Name);
}

[Salesforce]api is not enabled for this organization or partner

データローダでExportしようとして、アカウント情報を入力してログインボタン押下すると、「api is not enabled for this organization or partner」エラーがでた。

理由として、Salesforceライセンスによるものでした。

以下の参考だと、今現在APIが有効であるのは、「Enterprise, Unlimited and Developer editions」のことです。

https://help.salesforce.com/articleView?id=000327326&language=en_US&type=1&mode=1

対応案として、SFの「データインポートウィザード」を使うことで解決できます。

[Salesforce]Sandboxと本番環境の判定

Sandboxと本番環境の判定について共有します。

Organization org = [select Id, IsSandbox from Organization limit 1];
System.debug(‘—– org.IsSandbox : ‘+org.IsSandbox);

実行結果

Sandbox環境の場合
—– org.IsSandbox : true

本番環境の場合
—– org.IsSandbox : false

Visualforceページタグ表示切替


確認方法

VFページを表示し、短縮キーCtrl-u押下して、Sandbox環境には表示されないが、本番環境では表示されることを確認する。

[Salesforce]Apexトリガーエラーメッセージ

Apexトリガーエラーメッセージについて共有します。

test__c newObj = Trigger.new[i];

if (Trigger.isInsert) {
// commnet1
newObj.test__c = ‘comment1’;
} else {
test oldObj = Trigger.old[i];
if (newObj.test__c != oldObj.test__c &&
newObj.test__c == ‘test’) {
if(newObj.test2__c != newObj.test2__c) {
newObj.addError(‘エラーメッセージ’);
} else {
//xxx
}
}
}

[Salesforce]開発者コンソール画面でDebug

Salesforce開発者コンソール画面でDebugする手順について共有します。

1.開発者コンソールを表示する。

2.テスト用Apexクラス作成する。

public with sharing class ApexDebugController {

    public ApexDebugController(){
        String msg = 'ApexDebugControllermsg';
        User loginUser = new User();
    }
}

3.テスト用クラス2.の「User loginUser = new User();」行の左サイドにブレイクポイント設定する。

4.Debugタブの「Open Execute anonymous Window」に以下のクラス実行インライン文作成し、実行する。

ApexDebugController cls = new ApexDebugController();

5.「Checkpoins」タブ開いて、ブラ幾ポイント時点での変数値確認する。

[Salesforce]UserのName,FirstName,LastNameのAPI参照項目

UserのName,FirstName,LastNameなどAPI参照項目ですが、それはユーザの詳細画面には表示されませんが、API参照名として存在してます。

それは開発コンソル画面で以下のように確認しましたので、共有します。

User usr = [SELECT Id, Name, LastName, FirstName FROM User limit 1];
system.debug('usr:'+usr);

結果

usr:User:{Id=0050I000009tZe8QAE, Name=システム, LastName=システム}

[Salesforce]VisualStudioCode Pakage.xml

VisualStudioCode Pakage.xmlで、標準Object、カスタムObject取得方法を共有します。

例えば、標準の取引先、すべてのカスタムオブジェクト取得の場合は以下です。

    <types>
        <members>User</members>
        <members>Lead</members>
        <members>Account</members>
        <members>Contact</members>
        <members>Opportunity</members>
        <members>*</members>
        <name>CustomObject</name>
    </types>

他の例です。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
    <types>
        <members>*</members>
        <name>ApexClass</name>
    </types>
    <types>
        <members>*</members>
        <name>ApexPage</name>
    </types>
    <types>
        <members>*</members>
        <name>ApexTrigger</name>
    </types>
    <types>
        <members>*</members>
        <name>ApprovalProcess</name>
    </types>
    <types>
        <members>User</members>
        <members>Lead</members>
        <members>Account</members>
        <members>Contact</members>
        <members>Opportunity</members>
        <members>*</members>
        <name>CustomObject</name>
    </types>
    <types>
        <members>*</members>
        <name>Workflow</name>
    </types>
    <types>
        <members>*</members>
        <name>Layout</name>
    </types>
    <types>
        <members>*</members>
        <name>Flow</name>
    </types>
    <types>
        <members>*</members>
        <name>FlowDefinition</name>
    </types>
    <version>47.0</version>
</Package>