3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Apexで個人取引先レコードの作成

Last updated at Posted at 2024-03-17

はじめに

個人取引先は取引先・取引先責任者の両方の役割を持つため、レコード操作時にどのオブジェクトに対する操作なのか、その指定方法を調査しました。

やりたかったこと

Visualforceページ上のinputフィールドで入力された情報から個人取引先レコードを作成する

やり方

以下で指定で個人取引先レコードの作成が可能でした。

  • オブジェクトは取引先
  • レコードタイプは個人取引先レコードタイプ
Apex
//変数を作成
Account newAccount = new Account();
//値を指定
newAccount.Name = '取引先名';
newAccount.RecordTypeId = 'ここに個人取引先レコードタイプID';

//取引先レコードを作成
insert newAccount;

レコードタイプIDは以下のように記述すると組織から自動的に取得可能

Apex
private Id getPersonAccountRecordType() {
    List<RecordType> recordTypes = [
        SELECT Id
        FROM RecordType
        WHERE SobjectType = 'Account'
        AND DeveloperName = 'PersonAccount'
        LIMIT 1
    ];
    if (!recordTypes.isEmpty()) {
        return recordTypes[0].Id;
    }
    return null; // 適切なレコードタイプが見つからない場合
}

以下は個人取引先レコードタイプIDの取得→個人取引先レコードの作成のコード例

Apex
// レコードタイプIDを取得するメソッド
private Id getPersonAccountRecordType() {
    List<RecordType> recordTypes = [
        SELECT Id
        FROM RecordType
        WHERE SobjectType = 'Account'
        AND DeveloperName = 'PersonAccount'
        LIMIT 1
    ];
    if (!recordTypes.isEmpty()) {
        return recordTypes[0].Id;
    }
    return null; // 適切なレコードタイプが見つからない場合
}

// 新しい取引先レコードを作成して挿入する
public void createPersonAccount() {
    Id recordTypeId = getPersonAccountRecordType(); // レコードタイプIDを取得
    if (recordTypeId != null) {
        Account newAccount = new Account();
        newAccount.Name = '新しい取引先';
        newAccount.RecordTypeId = recordTypeId; // レコードタイプIDを設定
        insert newAccount;
    } else {
        // レコードタイプIDが取得できなかった場合の処理
    }
}

取引先責任者の項目に対して値をセットしたい場合は、取引先オブジェクトでの項目名(取引先責任者の項目名__pc)を指定するとセットできます。

おわりに

公式のドキュメントなど読んでみたが、クエリの操作などに関する内容しか書いてなかったため、上記方法が参考になればと思います!

プログラミングコミュニティの紹介

Reactを1から実践レベルまで身につけることができるサービス「JISOU」では現在メンバーを募集中です。
気になる方は以下のHPのLINEからお問合せください。
https://projisou.jp

会社の紹介

この記事を最後まで読んでいただき、ありがとうございます!
私がエンジニアとして働いているViVO株式会社では、SalesforceやYextといったSaaSシステムに関わるエンジニアを募集しています。
経験者の方はもちろん、未経験者でもチャレンジしたいという熱意があれば大歓迎です。

技術的な経験がない方でも成長できるよう全面的にサポートする環境を提供しています。

もし少しでも興味を持っていただけたら、以下のURLまたは私にDMでご連絡ください。
https://vivojpn.com

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?