ブログ

SalesforceのレコードIDの15桁と18桁の違いと、数式のカスタム項目によるコンバート

#Salesforce #カスタム項目 #コンバート #レコードID

SalesforceのレコードIDの15桁と18桁の違いと、数式のカスタム項目によるコンバート

SalesforceのレコードIDには15桁と18桁が存在しています。
本記事では15桁IDと18桁IDの違いや、15桁IDと18桁IDのコンバート方法について解説します。

SalesforceのIDには15桁と18桁が存在する

SalesforceにはすべてのレコードにIDが付与されています。
実はこのレコードIDには15桁のものと18桁のものが存在します。

レコードIDの15桁と18桁の違い

レコードIDの15桁と18桁の違いは下記のとおりです。

■15桁ID:大文字・小文字の区別あり
(例:0017F00000okECd)
■18桁ID:大文字・小文字の区別なし
(例:0017F00000okECdQAM)

15桁と18桁どちらのIDも同一のレコードを指し示すものになります。

レコードは18桁IDで動作して15桁IDで動作しないケースもある

レコードには、15桁と18桁両方のIDが利用できる状態ならではの問題があります。Salesforceの機能によっては15桁IDではうまく動作せず、18桁IDでしか正常動作しないケースもありました。

たとえば、Lightningコンポーネントの「lightning:input」における場合です。

  1. 主従関係や参照関係のinputのvalueにIDをセット
  2. 自動的にルックアップが起動して値が反映
  3. 結果:15桁ID動作なし・18桁ID正常動作

「lightning:input」の場合はこのようにトリッキーな結果を出す可能性のある仕様になっています。Salesforceの仕様は変わるため修正される可能性もあります。現状の15桁IDと18桁IDのどちらも常に使える状態だと開発や検証に役立ちます。

カスタム項目による2パターンの表示

数式のカスタム項目では、15桁ID表示と18桁IDの2パターン表示を実現します。
カスタム項目による2パターンの表示は、ノンコーディングで簡単に実現可能です。利用するのは数式項目の関数のみとなります。

取引先でサンプルを作成

カスタム項目による2パターンの表示の例として、「取引先」でサンプルを作成していきます。

はじめに、15桁IDを表示するカスタム項目を作成します。「項目とリレーション」から「新規」で、新たな項目の作成です。

データ型にて「数式」を選択して「次へ」をクリックします。

「項目の表示ラベル」と「項目名」を入力します。(今回は『Id15』に設定)「データ型」の『テキスト』を選択して「次へ」をクリックします。

数式は単純に、[Id]となります。

取引先を手打ちで作成

カスタム項目による表示は、手打ちでも可能です。あえて「項目の挿入」を使う場合は、次の手順になります。

  1. 「取引先」画面の取引先 IDから「挿入」を選択
  2. 数式を入力
  3. 「次へ」を選択

項目レベルセキュリティを適切に設定して「次へ」を選択します。

ページレイアウトへの追加を適切に設定して「保存」で作成完了です。
※あえて表示しなくてもよいケースがほとんどだと思います。今回はテスト表示のためのページレイアウトとして追加しました。

次に18桁IDを表示するカスタム項目を作成します。数式までは15桁IDと同じなのです。数式には、[CASESAFEID(Id)]と入力します。関数の「CASESAFEID(id)」は、15IDを18IDに変換します。

その後も同じ手順で保存まで進みます。すると、15桁ID表示用のカスタム項目と18桁ID表示用のカスタム項目の完成です。

取引先のレコードでテスト

できあがったカスタム項目を取引先の適当なレコードで表示してみると、問題なく15桁IDと18桁IDが表示されています。

SalesforceのレコードIDの15桁と18桁の違い

SalesforceのレコードIDの15桁と18桁は、末尾3桁のみが違うだけです。15桁と18桁の違いを比較してみましょう。

15桁:大文字小文字で区別
18桁:大文字小文字で区別しない

上記の違いを利用して次のような変換が可能です。

18桁から15桁への変換:末尾3文字の削除のみで可能
15桁から18桁への変換:増えた3文字に関して桁内の大文字判定を表示

15桁のレコードIDから次のように算出されます。

  1. 5桁ごとのブロックが3つ作成される
  2. 1ブロックごとに何行目が大文字か、表示される1文字を算出
  3. 算出したブロックごとの1文字を16桁目、17桁目、18桁目に分配

上記の流れでSalesforceのレコードIDの15桁と18桁を相互に変換できます。

今回のまとめ

今回ご紹介した例は、SalesforceのレコードIDが15桁と18桁が混在する特殊な仕様ならではのTipsです。意外と利用するシーンは多いのではないでしょうか。
思ったように動作しないで困った場合は、ID関係を疑ってみるのも解決法のひとつとなるでしょう。

ApexやVisualforce、Lightningコンポーネントのコーディングの際は、必要に応じてID変換のコードを書いても問題ありません。
毎回書くのが面倒であれば、数式項目で用意することで使い回しも効いて利用も簡単です。

弊社ではSalesforceの支援も行っております。ご相談に対しても対応が可能ですので、是非お気軽にお問い合わせください。

CONTACT
お問い合わせ

ご相談やご依頼、病院マスタなどについてのお問い合わせはこちらのお問い合わせフォームから。

サービスなどについてのお問い合わせ 病院マスタについてのお問い合わせ

メールお問い合わせ