こんにちは。本橋です。
この記事はSalesforce 開発者向けブログ投稿キャンペーンへのエントリー記事です。
Salesforceは標準機能で様々な開発が行えます。
今回はその中でも「コピー機能」について説明し、つまづくところをご紹介しようと思います。
##そもそもレコードコピー機能ってなんだ?
レコードコピー機能についてヘルプはこちら
・レコードのコピー
https://help.salesforce.com/articleView?id=basics_clone_records.htm&type=5
ページレイアウト上に「コピー」ボタンを表示させることによりレコードコピーができます。
。
###コピー機能 つまづきポイント1
####ページレイアウト上に表示されない項目はコピーされない
コピー機能であまり知られていない(?)事実ではないでしょうか?(少なくとも私はここにつまづきました)
ページレイアウト上に表示されない項目はコピーされない動作となります。
参考のヘルプはこちら
・コピー機能の制限について
https://help.salesforce.com/articleView?id=000321711&type=1&mode=1
###レコードコピー機能 つまづきポイント2
####取引先オブジェクトにはコピーボタンがデフォルトでない
なんと!取引先オブジェクトにはデフォルトでコピーボタンがありません。
解決策としてカスタムボタンを作成になると思いますが、意外な盲点ですね。
###レコードコピー機能 つまづきポイント3
####Lightning環境とClassic環境でコピーする項目の値が異なる場合がある。
今回伝えたいのはこのポイント3です。
このポイントを説明するのはややこしいので、以下順序だてて説明します。
#####前提1
コピー対象のオブジェクト権限において「すべて変更」権限がないユーザの場合
今回のユーザは「すべて変更」権限がないユーザがレコードのコピーをする場合です。
#####前提2
ページレイアウトの項目設定で「参照のみ」の設定がされている場合
#####前提3
項目のレベルセキュリティで「参照のみ」にチェックが入っていない場合
項目レベルセキュリティ設定で一番右に「参照のみ」チェックボックスがありますが、こちらにチェックがない状態です。
ちょっと分かりにくいのでプロファイル側のスクショも貼ります。
なお、参考までに
「参照のみ チェックあり」パターンと
「参照のみ チェックなし」パターンの項目を今回準備しました。
上記の条件の場合、Lightning環境とClassic環境でコピーする項目の値が異なります。
#####検証1 Lightning環境でコピーを行う
まずはLightning環境でコピーします。
(コピー後の状態が分かりやすいように項目に値が入っています。今回はテキスト項目と選択リスト項目で試します)
結果として「参照のみ チェックなし」項目の値のみがコピーされました。
#####検証2 Classic環境でコピーを行う
次に、Classic環境で先ほどと同じレコードをコピーします。
↑の状態的には、Lightningの時と同じに見えますが。
結果は、、
御覧のように。項目レベルセキュリティ設定に関わらず、すべての項目の値のコピーができない結果となりました。
####対策
今回のように、Classic環境とLightning環境ではコピーされる項目に違いがあることが分かりました。
これはClassic環境とLightning環境を併用している企業は混乱を招く要因になるかと思います。
対策としては
・項目レベルセキュリティ設定の見直し
・自動化を使用し(Classic環境やLightning環境に関わらず)同じ結果にする
という対策になりますね
自動化ではコピーしたことが条件となるISCLONE()関数が使用できますね。
####まとめ
今回、Lightning環境とClassic環境のコピー機能の違いがあることが分かりましたが、Lightning環境とClassic環境で違いがあることに私は驚きました。
今後Salesforceの構築を行う際はLightning環境でもClassic環境の想定の動きになるか、しっかりと確認していきたいと思いました。