Salesforce:コピーボタンをカスタマイズしたい
某案件でめっちゃハマったやつ。
残存課題については別途対応する。
要件と制約
- レコードページ外の項目も選択してコピーしたい
- ClassicUIなのでLightningレコードページ、コンポーネントは使えない
結論
ボタンクリック→VisualForce呼び出し→フロー呼び出しでレコードコピーすることにした
課題
- ClassicUIからボタンをクリックさせてレコードコピーするには対象のレコードIDをURLで渡す必要がある
→変数をフローのものと揃える必要がある
→Visualforceページを開く際の記載ではだめ。
☓:?id={!CustomObject41__c.Id}
○:?recordId={!CustomObject41__c.Id}
- ボタンクリック→フロー呼び出し とすることでレコードをコピーさせることはできたが、画面遷移しないのでユーザーからは何も起きてないように見える。
→これではボタン連打されるし、コピーボタン押下→コピー後のページに遷移するように変更したい。
🤔
ボタン押下→Visualforceを表示→フロー実行→ページ遷移
って感じにする?
Visualforce ページへのフローの埋め込み | Visualforce 開発者ガイド | Salesforce Developers
やってみた
-
フローを作成
※フロー名:QuoteCopy -
フローを呼び出すVisualforcePageを作成
※フローを呼ぶためだけのVFページ<apex:page showHeader="false" applyBodyTag="false" docType="html-5.0" standardController="CustomObjectXX__c" > <flow:interview name="QuoteCopy"/> </apex:page>
-
VisualForceページを開くボタンを作成
-
ボタンのURLを以下に変更
/apex/Sales_Input_Invoice?id={!CustomObject41__c.Id}?recordId={!CustomObject41__c.Id} // これだと怒られたので以下に変更 /apex/Sales_Input_Invoice?id={!CustomObject41__c.Id}&recordId={!CustomObject41__c.Id} // 変数値をURLで渡す際は&でつなぐ必要がある。
できた!
コピーボタンクリック → ポップアップ表示された画面
...が、完了ボタンをクリックするとウィンドウが閉じない。
(memo)残った問題と調査したこと
ポップアップ表示された画面の[完了]ボタンをクリックした際の挙動を変更したい
finishLocation="{!URLFOR('/home/home.jsp')}"を追加することで解決できる模様。
→できなかった。
フローで作成されるレコードのIDとURLヘッダを組み合わせれば、作成後の新レコードページに遷移させることができる
Apexクラスでフローの変数が使えるらしい
フロー変数の取得 | Apex 開発者ガイド | Salesforce Developers
Visualforce ページへのフロー変数値の取得 | Visualforce 開発者ガイド | Salesforce Developers
試してみたが、VFにてスタンダードコントローラーとコントローラーの両立は出来ないと怒られた。
まぁ一旦はこれで良いか...
参考にしたリンク集
Salesforce画面のカスタマイズ (Lightning版) – ブログ
レコードを作成およびコピーするための UI の作成 単元 | Salesforce Trailhead
フローでレコードの作成または更新を行うときにアクセスできない項目
DML を使用したレコードの操作 単元 | Salesforce Trailhead
フォーム登録でレコードタイプを切り替えるには?|Synergy!LEAD | シナジーマーケティング株式会社 SynergyMarketing
セールスフォースの基本機能レコードタイプ・ビジネスプロセス – ブログ
プロセスビルダーと Flow Builder の機能を組み合わせる 単元 | Salesforce Trailhead
カスタムボタンでのフローの配布 単元 | Salesforce Trailhead
2020/01/17
プロセスビルダーと Flow Builder の機能を組み合わせる 単元 | Salesforce Trailhead
レコードを作成およびコピーするための UI の作成 単元 | Salesforce Trailhead
カスタムボタンでのフローの配布 単元 | Salesforce Trailhead
レコードをコピー時のコピー元レコード情報の対応付けについて - Salesforce Developer Community
フローでレコードの作成または更新を行うときにアクセスできない項目
salesforce フロー recordid - Google 検索
SalesforceアプリでVisualWorkFlow - 待ってましたよ。Lightning:flowタグ - - TerraSkyBase
Salesforce女子部 #20 〜ハンズオンで学ぶLightningフロー〜 - connpass
Salesforce World Tour Tokyo 2017 ミニハック解答速報
Salesforceで数式で持ってこられない参照関係のオブジェクトのロングテキスト項目を画面フローを使って表示する方法 | フロッグウェル株式会社
フローでSalesforceのレコード情報をSlackに投稿する - Qiita
レコードをコピー時のコピー元レコード情報の対応付けについて - Salesforce Developer Community
[Salesforce]見積(Quote)をコピーする方法 - dackdive's blog
Salesforceのカスタムリードフォームの作成| Brightcove 学習
「docforce2」salesforceオブジェクト設計書作成ツール - Qiita
Salesforce レコードへのアクセス制御方法(共有設定・共有ルール等)まとめ - Qiita
2020/01/23
フローをレコードのアクションとして追加 単元 | Salesforce Trailhead
カスタムボタンでのフローの配布 単元 | Salesforce Trailhead
salesforceで、定期的に処理を実行するには? - セールスフォースお助け隊ブログ | Salesforce
[salesforce]バッチスケジュールの一通りの書き方 - KayaMemo
[Salesforce]契約終了の20日前にメールアラートを自動で送信したい – ウフルカスタマーサポート
Lightning フローランタイムと Classic フローランタイムの比較
Visualforce でのフローの表示 | Visualforce 開発者ガイド | Salesforce Developers
Visualforce ページへのフローの埋め込み | Visualforce 開発者ガイド | Salesforce Developers
flow:interview を使用した高度な例 | Visualforce 開発者ガイド | Salesforce Developers
Visualforce ページへのフローの埋め込み | Visualforce 開発者ガイド | Salesforce Developers
Salesforce サイトの URL の書き換え | Apex 開発者ガイド | Salesforce Developers
SFDC:Visualforceページの画面遷移とURLFOR関数 - tyoshikawa1106のブログ
フローの完了動作を制御するように Visualforce コンポーネントをカスタマイズ
フローの finishLocation 属性の設定 | Visualforce 開発者ガイド | Salesforce Developers
フローの finishLocation 属性の設定 | Visualforce 開発者ガイド | Salesforce Developers
Visualforce ページからのフロー変数値の設定 | Visualforce 開発者ガイド | Salesforce Developers
Visualforce ページへのフロー変数値の取得 | Visualforce 開発者ガイド | Salesforce Developers
フロー変数の取得 | Apex 開発者ガイド | Salesforce Developers
2020/01/24
Salesforce - $リソース | salesforce Tutorial
Visualforce ページへのフロー変数値の取得 | Visualforce 開発者ガイド | Salesforce Developers
フロー変数の取得 | Apex 開発者ガイド | Salesforce Developers
flow:interview を使用した高度な例 | Visualforce 開発者ガイド | Salesforce Developers
salesforce フロー 画面遷移 レコードページ - Google 検索
LightningComponentの歩き方と、画面遷移にまつわるTips - Qiita
フローの finishLocation 属性の設定 | Visualforce 開発者ガイド | Salesforce Developers
フローの完了動作を制御するように Visualforce コンポーネントをカスタマイズ
フローへの画面の追加 単元 | Salesforce Trailhead
【salesforce】Classic基本知識ーVisualforceページ作成 - Qiita
【Salesforce】標準コントローラを使用したページを作成する – 下っ端の落書き帳
【Apex+Visualforce】標準コントローラの拡張をやってみた。アクションの追加と上書き。 | ガワタリ.com
標準コントローラアクションの使用 | Visualforce 開発者ガイド | Salesforce Developers
getParameters() | Apex 開発者ガイド | Salesforce Developers
関数 | Visualforce 開発者ガイド | Salesforce Developers
SFDC:Visualforceページの画面遷移とURLFOR関数 - tyoshikawa1106のブログ
Salesforce VisualforceでURLパラメータをコントローラのメンバ変数として受け取る方法 | akatukisiden's blog
Visualforceが静的リソースURLをApexに渡します - VoidCC
Discussion