アプリの「レコードのアクセス権」機能を使うと、レコードの状態によって、特定の人以外にはレコードを閲覧出来ないようにする、というような設定を実現する事ができます。
例えば、
「削除済み」というチェックボックスを設け、チェックが入ったものは閲覧できないようにすることで、レコード削除の代わりとする(論理削除)
プロセス管理で申請・承認フローを設定していて、未申請のものはレコード作成者以外閲覧できない
というような設定です。
●「削除済み」というチェックボックスを設け、閲覧できなくなる設定の例
●プロレス管理で未申請のものはレコード作成者以外閲覧できなくなる設定の例
ですが、前者のパターンでは申請後に不備が見つかって承認者が申請者に差し戻した際、
後者のパターンでは「削除済み」にチェックを入れてレコードを保存した際に、レコード閲覧権限がなくなり、このようなエラーが画面上部に表示されてしまいます。
ステータス変更後や保存後に自動的にそのレコードの詳細画面に戻ろうとしてこのようなエラーが表示されてしまうのですが、間違った操作をしているわけでもないのにこんなエラーが出たらユーザーが不安になってしまいますよね?
そこで、エラーが表示される前にレコード一覧画面に素早く移動することでエラー表示を防ぐ方法をご紹介します!
今回の例で使うアプリの設定
アプリの設定は次の通り。(フィールド名とフィールドコードは同一としています)
①ステータス変更によって閲覧権限がなくなる場合
やることは「レコード一覧画面に遷移する」で、条件は「プロセス管理のアクションを実行した時」を使います。この1行だけで大丈夫です!
②フィールドの値変更によって閲覧権限がなくなる場合
①を応用すれば、フィールドの値によって閲覧権限が代わる場合は、①のカスタマイズの1つ目の条件を「レコードを保存した直後(削除時は除く)」に変えればいいだけ!
と、思いがちですが、実は落とし穴があります。
それは、レコード保存直後のタイミングではすでに閲覧権限がなくなっており、「フィールド値が特定の値ならば」でフィールドの値が参照できなくてこのようなエラーが一瞬表示されてしまいます。
そして次の様なエラーが出ます。
そこで、遷移自体は保存直後に行いますが、遷移するかどうかの判定は保存直前のタイミングで行う、という仕組みにする必要があります。
保存直前のタイミングで、「削除フラグ」にチェックが入っていたら何かアクションを実行し、そのアクションが実行済みなら保存直後に一覧画面に遷移したいのですが、「指定のアクションが実行済みなら」といった条件は今のところ存在しません。
そこで、代わりの方法として、保存直前に「ログインユーザーを取得する」を実行し、保存直後に「ログインユーザーが指定のユーザーならば」で、保存直前のアクションの結果とログインユーザーを比較して、同じであれば一覧画面に遷移する、という仕組みであれば、この様な処理を実現することができます!
もし、「削除フラグ」が空の場合は保存直前に「ログインユーザーを取得する」が実行されず、「ログインユーザーが指定のユーザーならば」の条件を満たさず、一覧画面への遷移が実行されません。
これでレコード一覧画面に素早く移動してエラー表示を回避することができます!
今回は「ログインユーザーを取得する」と「ログインユーザーが指定のユーザーならば」を使いましたが、他にも方法はあると思いますので、探してみてください!
ご不明点等ございましたら、チャットでご質問ください!
Customineドキュメントやサポートページもぜひご活用ください。