レコードの詳細ページからVisualforceページにアクセスするにはカスタムボタンの方法とアクションによる方法があります。
はじめに
・カスタムボタン => ClassicでもLightning Experienceでも両方OK.
・アクション => Lightning Excperienceのみ(Salesforceモバイルでも利用可能)
Visualforceアクセス権限での挙動の違い
ユーザがVisualforceページにアクセスするにはプロファイル等で権限を付与する必要があります。
Visualforceページのアクセス権限がない場合、カスタムボタンの場合はボタンが表示された状態となりますが、アクションの場合はボタン自体が非表示になる制御が用意されています。※「商談商品登録⚡」がアクションです。
VFページのアクセス権限あり
VFページのアクセス権限なし
カスタムボタンの場合、ボタンは表示されたままになりますがクリックするとアクセスエラーとなります。
アクションはClassicでは利用できないという仕様がありますが、Lightning Experienceへの移行が完了している組織の場合は権限判定が強化されているアクション経由での利用の検討も良いかもしれません。
カスタムボタンとアクションの表示形式の違い
カスタムボタンでVisualforceページにアクセスするとページ全体が切り替わります。
アクションの場合はポップアップ形式で表示されます。
ポップアップの高さはアクションの設定の際に指定できます。
ポップアップにタイトルやキャンセルボタンなどが付いてきますがこちらはapex:pageタグのshowQuickActionVfHeader属性で解決すると思います。
https://developer.salesforce.com/docs/atlas.ja-jp.pages.meta/pages/pages_compref_page.htm
変更後はこちら。不要なタイトルやボタンが非表示となりスッキリしました。
アクションの場合、詳細ページからは移動していないため「sforce.one.back(true);」処理による前ページに戻る処理を実行すると詳細ページの前のページのビューページまで戻る挙動となります。
カスタムボタンでの実装時にレコード詳細ページ→ボタンクリック→Visuafoorceページ→前ページへ戻る→レコード詳細ページという流れを想定してつくっている場合はアクションにすると挙動が変わってしまうのでアクションへの切り替え前に処理を見直す必要があります。
Visualforceページにアクセスするカスタムボタンとアクションの違いはこんな感じでした。