Open8

Salesforce 関連メモ

ura148ura148

開発者コンソールのdebug logが溜まった場合

SELECT Id, StartTime, LogUserId, LogLength, Location FROM ApexLog
ura148ura148

[未検証]Salesforce 関連リストでインライン編集したい場合

動的関連リストを設定すればできる?

ura148ura148

「このスケジュール可能なクラスに待機中または処理中のジョブがあります」「このエラーをスキップするには、[設定] ページの [リリース設定] ページで Apex ジョブによるリリースを許可します。」と表示されて資源がdeployできない場合

設定 > リリース > リリース設定 画面の "リリースオプション" セクションにて下記のチェックをつける

対応する Apex ジョブが待機中か処理中の場合、コンポーネントのリリースを許可します。
注意: このオプションを有効化すると Apex ジョブがエラーになる場合があります。

※参考
https://help.salesforce.com/s/articleView?id=000387304&type=1

ura148ura148

without sharing と WITH SYSTEM_MODE の違い

without sharing

SOQLでChild-to-parentで親レコードを取得しようとした場合、親レコードの参照権限がなくても取得可能
※オブジェクトそのものの参照権限は必要

WITH SYSTEM_MODE

SOQLでChild-to-parentで親レコードを取得しようとした場合、親レコードの参照権限がない場合は表示されない

ura148ura148

addErrorのAssertチェック

// Add an error to an SObject field using the addError() method.
Account acct = new Account(name = 'TestAccount');
acct.addError('name', 'error in name field');
// Use the hasErrors() method to verify that the error is added, and then the getErrors() method to validate the error.
System.Assert(acct.hasErrors());
List<Database.Error> errors = acct.getErrors();
System.AssertEquals(1, errors.size());

https://developer.salesforce.com/docs/atlas.ja-jp.252.0.apexcode.meta/apexcode/apex_methods_system_sobject.htm#unique_1178261070

ura148ura148

ApexにてSystemRun user 自身が所有していないレコードを削除したい

共有ルールで参照/更新可能としていても、Apexで削除することはできない(自分が所有者ではないため)
その場合にはApexにてwithout sharing とした上で削除を実行することができる (共有ルールを適応しない。システム権限)
参考:https://help.salesforce.com/s/articleView?id=000385525&type=1