tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:Visualforceページにアクセスするときのカスタムボタンとアクションの違い

レコードの詳細ページからVisualforceページにアクセスするにはカスタムボタンの方法とアクションによる方法があります。

f:id:tyoshikawa1106:20190608110025p:plain

はじめに

・カスタムボタン => ClassicでもLightning Experienceでも両方OK.
・アクション => Lightning Excperienceのみ(Salesforceモバイルでも利用可能)

Visualforceアクセス権限での挙動の違い

ユーザがVisualforceページにアクセスするにはプロファイル等で権限を付与する必要があります。
f:id:tyoshikawa1106:20190608110458p:plain


Visualforceページのアクセス権限がない場合、カスタムボタンの場合はボタンが表示された状態となりますが、アクションの場合はボタン自体が非表示になる制御が用意されています。※「商談商品登録⚡」がアクションです。

VFページのアクセス権限あり

f:id:tyoshikawa1106:20190608113007p:plain:w300

VFページのアクセス権限なし

f:id:tyoshikawa1106:20190608110658p:plain:w300


カスタムボタンの場合、ボタンは表示されたままになりますがクリックするとアクセスエラーとなります。
f:id:tyoshikawa1106:20190608110812p:plain


アクションはClassicでは利用できないという仕様がありますが、Lightning Experienceへの移行が完了している組織の場合は権限判定が強化されているアクション経由での利用の検討も良いかもしれません。

カスタムボタンとアクションの表示形式の違い

カスタムボタンでVisualforceページにアクセスするとページ全体が切り替わります。
f:id:tyoshikawa1106:20190608111251p:plain


アクションの場合はポップアップ形式で表示されます。
f:id:tyoshikawa1106:20190608111642p:plain


ポップアップの高さはアクションの設定の際に指定できます。
f:id:tyoshikawa1106:20190608111714p:plain


ポップアップにタイトルやキャンセルボタンなどが付いてきますがこちらはapex:pageタグのshowQuickActionVfHeader属性で解決すると思います。
f:id:tyoshikawa1106:20190608112110p:plain

f:id:tyoshikawa1106:20190608111853p:plain

https://developer.salesforce.com/docs/atlas.ja-jp.pages.meta/pages/pages_compref_page.htm


変更後はこちら。不要なタイトルやボタンが非表示となりスッキリしました。
f:id:tyoshikawa1106:20190608112207p:plain


アクションの場合、詳細ページからは移動していないため「sforce.one.back(true);」処理による前ページに戻る処理を実行すると詳細ページの前のページのビューページまで戻る挙動となります。
f:id:tyoshikawa1106:20190608112533p:plain

f:id:tyoshikawa1106:20190608112547p:plain


カスタムボタンでの実装時にレコード詳細ページ→ボタンクリック→Visuafoorceページ→前ページへ戻る→レコード詳細ページという流れを想定してつくっている場合はアクションにすると挙動が変わってしまうのでアクションへの切り替え前に処理を見直す必要があります。


Visualforceページにアクセスするカスタムボタンとアクションの違いはこんな感じでした。