カスタムエラーで主従関係の子レコードがあるときは親レコードを削除させない
削除という操作で入力規則的なことができるってすばらしい。
Admin
2024/09/03 11:29:22
先週公開しました「Winter'24 フローのカスタムエラーでは、複雑な入力規則や重複管理のようなことができるよ!」で、時間があったら先週のうちに記事を書くと言っていた件です。約束を破ってすみませんでした。
Winter’24でリリースされるカスタムエラー、入力規則や重複管理のような、条件に応じてレコード作成/更新を許可するような設定ができるということがわかりました。ですが、なかなか素敵な例が思う浮かばず、いたずらにカスタムエラーを作っていたのですが、こちらのサイトさんでユースケースとして紹介されているのを拝見しまして、「そうか!そういうのをカバーできるんだ!」と気づかせていただき、プレリリース組織で試してみました。
asagarwal.com >Step by Step Guide to “Custom Error” in Record-Triggered Flow
※すべてカスタムオブジェクト。
生徒(主・親)ー 受講記録 (従・子)
紐づく受講記録のレコードが作成されている場合、生徒のレコードを削除しようとすると、エラーになるようにする。
設定内容は要件に応じて変わってきますが、今回はもっともシンプルな方法で設定します。
Let’s try✊
※説明欄の入力には触れていませんが、設定の意図などを書いておくと後からみても理解しやすいので、入力されることをおすすめします。
先に、今回のフローの完成図です。

1.[設定>プロセスの自動化>フロー]の画面で、①【新規フロー】をクリックし、②「レコードトリガーフロー」を選択して③【作成】をクリックします。
※カスタムエラーは現在のところレコードトリガーフローでしか使用できません。

2.開始の設定をおこないます。
④「オブジェクト」では親(主)オブジェクトを選択します。
⑤「トリガーを設定」ではフローをトリガーする条件に「レコードが削除された」を選択します。
⑥「エントリ条件を設定」では、今回は「なし」を選択します。

3.「レコードを取得」要素を追加します。
⑦開始の下の〇をクリックして、「レコードを取得」要素を選択します。

4.レコードを取得要素の内容を設定します。
ここでは、削除しようとしている生徒のレコード(親レコード)に紐づく子レコードを取得します。
⑨「表示ラベル」と「API参照名」は、組織の命名ルールに則って入力してください。
⑩「このオブジェクトのレコードを取得」では従オブジェクト「受講記録」を選択します。
⑪「(受講記録)レコードを絞り込み」では、次のよう設定します。
条件の要件|すべての条件に一致(AND)
項目:生徒のID|演算子:次の文字列と一致する|値:$Record>カスタムオブジェクトID
ここで、削除しようとしている親レコードのIDを参照項目に持っている=親レコードに紐づく子レコード、という条件を設定します。
⑫「受講記録レコードを並び替え」
「並び替え順」は今回影響しないため、「並び替えなし」を選択します。
「保存するレコード数」は「すべてのレコード」、
「レコードデータの保存方法」は、「すべての項目を自動的に保存」を選択します。

5.3のときと同じように、今度は
⑬「レコードを取得」要素の下の〇をクリックして、
⑭「決定」要素を追加します。

6.「決定」要素の内容を設定します。
⑮「表示ラベル」と「API参照名」は、組織の命名ルールに従って入力してください。
⑯結果の1つ目の「表示ラベル」と「API参照名」も、組織の命名ルールに従って入力してください。
⑰「結果を実行する条件の要件」は「すべての条件に一致(AND)」を選択し、
次のように設定します。
リソース:4で取得したレコードコレクション変数|演算子:null|値:False
ここで、条件にあう子レコードが存在していたときという条件を設定しています。

7.⑱デフォルトの結果の表示ラベルをわかりやすいものに変更し、
⑲【完了】をクリックします。

8.5と同じように、
⑳決定要素の「ある」(子レコードが存在すると定義)の結果の下の〇をクリックして、
㉑「カスタムエラー」要素を追加します。

9.「カスタムエラー」要素の内容を設定します。
㉒「表示ラベル」と「API参照名」は、組織の命名ルールに従って入力してください。
㉓「エラーメッセージを表示する場所」は「レコードページのウィンドウで」を選択します。
㉔「エラーメッセージ」には表示したいエラーメッセージを入力します。
今回は「関連する受講記録のレコードが存在しているため、削除できません。」と入力しています。

10.フローを保存します。
㉕画面右上の【保存】をクリックして、
㉖「フローの表示ラベル」と「フローのAPI参照名」を入力して、
㉗【保存】をクリックします。


ちなみに、エラーメッセージの表示場所を項目にすると、指定した項目名がエラーメッセージの頭に表示されます。

良い子の皆さんはおわかりだと思いますが、実際はデバッグなどでテストをちゃんとしてくださいね!
個人的にカスタムフローの設定はとても楽しいので、乱用しないように気をつけながら活用したいと思います。
Winter'24 リリースノート(英語版)が公開されました!
Winter'24のプレリリース組織が取得できますよ!
Winter'24 日本語(カタカナ)の表示ラベル変更について
Winter'24 またまたUIのお色味が変わるようです。
Winter'24 ファイルの公開リンク 有効期限のデフォルト値が90日から30日に変更
Winter'24 画面フローでの値保持が強化されます
Winter'24 ダッシュボードの所有者を変更できるかも(未確認です)
Winter'24 メールログのリクエスト設定にオプションが増えます
Winter'24 権限セットと権限セットグループの内容を一目で把握する【概要を表示】
Winter'24 リリースノートの日本語版が公開されました!
Winter'24 取引先責任者のホーム画面が……青に変わるッ!
Winter'24 フローで要素の作成途中なのに保存できるようになるよ!
Winter'24 Chatter メールの差出人名とメールアドレスの設定必須化
拡張ドメイン強制適用のロードマップ&設定方法まとめ
Winter'24 フローのカスタムエラーでは、複雑な入力規則や重複管理のようなことができるよ!
公開:2023年10月3日
更新①:2024年9月3日
Winter’24でリリースされるカスタムエラー、入力規則や重複管理のような、条件に応じてレコード作成/更新を許可するような設定ができるということがわかりました。ですが、なかなか素敵な例が思う浮かばず、いたずらにカスタムエラーを作っていたのですが、こちらのサイトさんでユースケースとして紹介されているのを拝見しまして、「そうか!そういうのをカバーできるんだ!」と気づかせていただき、プレリリース組織で試してみました。
asagarwal.com >Step by Step Guide to “Custom Error” in Record-Triggered Flow
やりたいこと
主従関係において、親(主)レコードを削除すると子レコードも一緒に削除されるが、子レコードが作成されているときは親レコードが削除されないようにしたい。対処法
カスタムエラーを作成し、子レコードが存在する親レコードを削除しようとしたとき、エラーとなって削除の操作が完了しないようにする。設定例
次のようなリレーションを設定。※すべてカスタムオブジェクト。
生徒(主・親)ー 受講記録 (従・子)
紐づく受講記録のレコードが作成されている場合、生徒のレコードを削除しようとすると、エラーになるようにする。
プレリリース組織で実践!
それでは、フローを作成します。設定内容は要件に応じて変わってきますが、今回はもっともシンプルな方法で設定します。
Let’s try✊
※説明欄の入力には触れていませんが、設定の意図などを書いておくと後からみても理解しやすいので、入力されることをおすすめします。
先に、今回のフローの完成図です。
1.[設定>プロセスの自動化>フロー]の画面で、①【新規フロー】をクリックし、②「レコードトリガーフロー」を選択して③【作成】をクリックします。
※カスタムエラーは現在のところレコードトリガーフローでしか使用できません。
2.開始の設定をおこないます。
④「オブジェクト」では親(主)オブジェクトを選択します。
⑤「トリガーを設定」ではフローをトリガーする条件に「レコードが削除された」を選択します。
⑥「エントリ条件を設定」では、今回は「なし」を選択します。
3.「レコードを取得」要素を追加します。
⑦開始の下の〇をクリックして、「レコードを取得」要素を選択します。
4.レコードを取得要素の内容を設定します。
ここでは、削除しようとしている生徒のレコード(親レコード)に紐づく子レコードを取得します。
⑨「表示ラベル」と「API参照名」は、組織の命名ルールに則って入力してください。
⑩「このオブジェクトのレコードを取得」では従オブジェクト「受講記録」を選択します。
⑪「(受講記録)レコードを絞り込み」では、次のよう設定します。
条件の要件|すべての条件に一致(AND)
項目:生徒のID|演算子:次の文字列と一致する|値:$Record>カスタムオブジェクトID
ここで、削除しようとしている親レコードのIDを参照項目に持っている=親レコードに紐づく子レコード、という条件を設定します。
⑫「受講記録レコードを並び替え」
「並び替え順」は今回影響しないため、「並び替えなし」を選択します。
「保存するレコード数」は「すべてのレコード」、
「レコードデータの保存方法」は、「すべての項目を自動的に保存」を選択します。
5.3のときと同じように、今度は
⑬「レコードを取得」要素の下の〇をクリックして、
⑭「決定」要素を追加します。
6.「決定」要素の内容を設定します。
⑮「表示ラベル」と「API参照名」は、組織の命名ルールに従って入力してください。
⑯結果の1つ目の「表示ラベル」と「API参照名」も、組織の命名ルールに従って入力してください。
⑰「結果を実行する条件の要件」は「すべての条件に一致(AND)」を選択し、
次のように設定します。
リソース:4で取得したレコードコレクション変数|演算子:null|値:False
ここで、条件にあう子レコードが存在していたときという条件を設定しています。
7.⑱デフォルトの結果の表示ラベルをわかりやすいものに変更し、
⑲【完了】をクリックします。
8.5と同じように、
⑳決定要素の「ある」(子レコードが存在すると定義)の結果の下の〇をクリックして、
㉑「カスタムエラー」要素を追加します。
9.「カスタムエラー」要素の内容を設定します。
㉒「表示ラベル」と「API参照名」は、組織の命名ルールに従って入力してください。
㉓「エラーメッセージを表示する場所」は「レコードページのウィンドウで」を選択します。
㉔「エラーメッセージ」には表示したいエラーメッセージを入力します。
今回は「関連する受講記録のレコードが存在しているため、削除できません。」と入力しています。
10.フローを保存します。
㉕画面右上の【保存】をクリックして、
㉖「フローの表示ラベル」と「フローのAPI参照名」を入力して、
㉗【保存】をクリックします。
テストします
関連する受講記録レコード(子レコード)がある生徒レコード(親レコード)を削除しようとすると、エラーメッセージが表示され、削除できませんでした。成功です!ちなみに、エラーメッセージの表示場所を項目にすると、指定した項目名がエラーメッセージの頭に表示されます。
良い子の皆さんはおわかりだと思いますが、実際はデバッグなどでテストをちゃんとしてくださいね!
ひとこと
前回の記事の公開時、Xでも感想をいただいていましたが、この勢いだとカスタムの入力規則や重複管理もいずれフローに吸収されてしまうのでしょうか。確かに便利ですが、なんでもかんでもフローというのは、ノーコード・ローコードの世界で生きてきた人間だと管理が大変そうな気がします。個人的にカスタムフローの設定はとても楽しいので、乱用しないように気をつけながら活用したいと思います。
Winter'24関連の記事
Winter'24のスケジュールが出ましたねWinter'24 リリースノート(英語版)が公開されました!
Winter'24のプレリリース組織が取得できますよ!
Winter'24 日本語(カタカナ)の表示ラベル変更について
Winter'24 またまたUIのお色味が変わるようです。
Winter'24 ファイルの公開リンク 有効期限のデフォルト値が90日から30日に変更
Winter'24 画面フローでの値保持が強化されます
Winter'24 ダッシュボードの所有者を変更できるかも(未確認です)
Winter'24 メールログのリクエスト設定にオプションが増えます
Winter'24 権限セットと権限セットグループの内容を一目で把握する【概要を表示】
Winter'24 リリースノートの日本語版が公開されました!
Winter'24 取引先責任者のホーム画面が……青に変わるッ!
Winter'24 フローで要素の作成途中なのに保存できるようになるよ!
Winter'24 Chatter メールの差出人名とメールアドレスの設定必須化
拡張ドメイン強制適用のロードマップ&設定方法まとめ
Winter'24 フローのカスタムエラーでは、複雑な入力規則や重複管理のようなことができるよ!
公開:2023年10月3日
更新①:2024年9月3日
コメント