Help us understand the problem. What is going on with this article?

Salesforce エンジニア初心者がハマった事・注意すべき事

仕事でSalesforce上に外部向けサイトをつくる必要がありました。
(Java経験はありましたが)Salesforceに関してはまったくの初めてだったので、ハマった事や注意すべき事をまとめていきます。

レコードタイプIDを取得する際はスキーマを使う

Apexからオブジェクトに対してDMLを発行する際や、ヒープやCPUサイズ等に ガバナ制限 というものが関わってくる。
これはトランザクション単位でカウントされ、これらの制限を超えるとアプリケーションエラーとなる。

(基本的にアプリケーション実行中は開発者コンソールのログから、ガバナ制限を確認しながら開発を進めた方がよい)

特に気をつける点としては、繰り返し処理内のDMLで、動的にレコードタイプを検索した上でオブジェクト参照するパターンが起こり得ると思います。
そのため、レコードタイプを検索する場合は、次のように スキーマ を使うことでガバナ制限を増やさずにレコードタイプIDを取得することができました。

public ID getRecordTypeId(String objName, String recordTypeName) {
    return Schema.getGlobalDescribe().get(objName).getDescribe().getRecordTypeInfosByDeveloperName().get(recordTypeName).getRecordTypeId();
}

オブジェクト削除する際の権限について

オブジェクトを作成・編集・削除する際は実行ユーザの権限によって大きく影響されます。

権限によっては参照権限もつかないため、アプリケーション上で次のエラーが発生します。

first error: INSUFFICIENT_ACCESS_OR_READONLY, ...

この問題を解決する簡単な方法ですが、システム権限を付与してしまうことです。(ただし外部向けアプリケーションの場合は、逆に意図せずデータを書き換えてしまう可能性があるため、そのへんは留意)

WithoutSharing ws = new WithoutSharing();
ws.insertNewCase(newCase, dmo);

private without sharing class WithoutSharing {
    public void insertNewCase(Case newCase, Database.DMLOptions dmo) {
        database.insert(newCase, dmo);
    }
}

WithoutSharingクラスを継承する。


これからも追記予定

Sam
すまほあぷりえんじにーあ
http://d.hatena.ne.jp/samril/
lifull
日本最大級の不動産・住宅情報サイト「LIFULL HOME'S」を始め、人々の生活に寄り添う様々な情報サービス事業を展開しています。
https://lifull.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした