0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Salesforce フローの選択オプションの改善(動的に選択肢をつくる)2

Last updated at Posted at 2023-02-26

実装したいこと

スクリーンフローの選択肢を動的に作成したい。
会計年度が2022年度 2022/04~2023/03の時は

2022/03
2022/04
2022/05
2022/06
2022/07
2022/08
2022/09
2022/10
2022/11
2022/12
2023/01
2023/02
2023/03

を表示します。

また2023年度 2023/04~2024/03の時は

2023/03
2023/04
2023/05
2023/06
2023/07
2023/08
2023/09
2023/10
2023/11
2023/12
2024/01
2024/02
2024/03

を表示します。

解決策 

独自の選択肢リストをつくるには コレクション選択肢セットとレコードコレクション変数を使います。
ここが分かりませんでした、ずっとApexで定義されたコレクション変数を使おうとしていましたが、全くうまくいきません。

ここではレコードコレクション変数を使います。実際にはオブジェクトにレコードは保存しないので、使うオブジェクトはダミー扱いなので何を利用しても問題はないと思います。

まずは、04から03までの12個のレコードを作りたいと思います。これはテキスト型のコレクション変数を利用します。

このように追加していきます
image.png

また、この04なら今日の日付を確認して2023/01~2023/03の間であれば2022/04をセットする変数を作ります。
テキスト型のコレクションでループを回すのでこの数式ではこのループの変数を使います。

image.png

年度を求める数式

IF(AND( TODAY() >= DATE(YEAR(TODAY()),1,1) ,TODAY() <= DATE(YEAR(TODAY()),3,20) ),
IF({!textCollectionLoop} >= "04",TEXT(YEAR(TODAY())-1) + "/" + {!textCollectionLoop} ,TEXT(YEAR(TODAY())) + "/" + {!textCollectionLoop} ),
IF({!textCollectionLoop} >= "04",TEXT(YEAR(TODAY())) + "/" + {!textCollectionLoop} ,TEXT(YEAR(TODAY())+1) + "/" + {!textCollectionLoop} )
)

確実に並び順を保証するためにコレクション変数を並び替えます。そのための順番を計算する変数も作ります。
今回はこれらの月以外に2つほど文字の選択肢も追加したいので04月を03番目として計算します。
ここではオブジェクトのテキスト型のフィールドを使います。数値型では並び替えたときにエラーになります。

CASE({!textCollectionLoop},
"04","03",
"05","04",
"06","05",
"07","06",
"08","07",
"09","08",
"10","09",
"11","10",
"12","11",
"01","12",
"02","13",
"14")

レコードコレクション変数に追加する前にはオブジェクトの変数に値をセットします。
今回はループの中で使うので追加でなく次の文字と一致するを使います。

image.png

参考資料

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?