2
0

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.

BizRobo!BasicでN営業日に実行させる処理

Posted at

BizRobo! Basicをお勉強中のものです。どうぞよろしくお願いいたします。

#はじめに
人事部や経理部などでは、業務上よくN営業日に処理を行うことが多々あると思います。以前投稿した「Bizrobo!Basicで祝日時は処理をしないようにする処理」から派生して、今回は「N営業日に処理を実行させる」ロボットを作成してみました。

#前提
前提として、「Bizrobo!Basicで祝日時は処理をしないようにする処理」のロボットをベースとしています。そのため、以下項目についても、今回も同様となりますので、ここでの記載は割愛いたします。
祝日または企業指定休日判定
使用したDesign Studioのバージョン
ロボット構成
#ロボットで使用するタイプ
ロボットで使用するタイプは以下になります。
HolidayInfo.type
スニペット「祝日判定」で使用します。
タイプ_祝日情報.PNG

WorkDateInfo.type
属性[ in_WorkRunDate ]は、N営業日のNの数字を入力しておきます。(例:12月の第14営業日)
type_営業日情報.PNG
#ロボット処理

  1. ロボット構成を元に、「N営業日判定」処理グループと、「実行判定」による処理有無を追加します。
    ロボット全体像.PNG

2.「N営業日判定」処理グループを展開します。
ロボット全体像_展開.PNG
 2-1. 無限ループであるRepeatを開始する
 2-2. N営業日判定ではタイプWorkDateInfoの属性[ in_WorkRunDate ]と[ DateCounter ]が同じ
  かどうか判定する
  同じ場合: Repeatを終了し、2-7.へ進む
  同じでない場合: 後続処理へ進む
 2-3. タイプWorkDateInfoの属性[ Counter ]にRepeatのiterationを格納する
 2-4. AssignM月1日設定ではタイプWorkDateInfoの属性[ out_WorkDate ]へシステム日時から
  「yyyy-MM-dd 00:00:00.000」形式で設定する。[dd]の部分は属性[ Counter ]を設定する。
  (例:属性[ Counter=1 ]の場合、属性[ out_WorkDate=2021-12-01 00:00:00.000 ]となる)
   ※詳細は、下記「Tips」をご覧ください。
 2-5. 属性[ out_Workdate ]が土日であるかどうか判定する
   土日である場合: Repeatへ戻り繰り返す
   土日ではない場合: 後続処理へ進む
 2-6. 属性[ out_Workdate ]が祝日であるか判定する
   祝日である場合: Repeatへ戻り繰り返す
   祝日でない場合: 後続処理で属性[ DateCounter ]を1インクリメントする
 2-7. 本日がN営業日であるかどうか判定する
   本日がN営業日である場合: 属性[ WorkDateFlg ]をONしN営業日をログ出力
   本日がN営業日でない場合: 対象外終了ログ出力

3.次のブランチの「実行判定」では、N営業日フラグがONまたはOFFであるか判定します。
 実行有無フラグがONの場合: 後続の処理を進める
 実行有無フラグがOFFの場合: 後続の処理はスキップする
ロボット全体像_判定.PNG

#ロボット実行結果

  1. 現在日時2021-12-20が第5営業日であるかテストします。
     ※タイプ[ WorkDateInfo ]の属性[ in_WorkRunDate ]を「5」としています。
    ロボット実行結果_第5営業日.PNG

  2. 現在日時2021-12-20が第14営業日であるかテストします。
     ※タイプ[ WorkDateInfo ]の属性[ in_WorkRunDate ]を「14」としています。
    ロボット実行結果_第14営業日.PNG

#Tips
###Repeat - Next
RepeatとNextの間は無限に繰り返されるため、その間である条件でRepeatを終了する値判定を組み込むことが必要です。(例:赤枠のRepeatとNextは無限ループとなり青枠の条件判定でRepeatを終了となります)
Repeat-Next.PNG
次のように青枠の条件判定をしています。
N営業日判定.png

###Assign M月1日設定
このステップでは、システム日時から「yyyy-MM-dd 00:00:00.000」形式でDate型の属性[ out_WorkDate ]に日付を作成します。次のように、変数の割当では、「コンバータ」で値に2つ設定を行っています。

  1. タイプ[ WorkDayInfo ]の属性[ Counter ]を取得する
    M月D日設定_1.PNG

  2. 属性[ Counter ]:INPUTの桁数による分岐
     桁数が2以下の場合: 前に0を追加し「2021-12-0d 00:00:00.000」とする
     桁数が2以下でない場合: [dd]に挿入して「2021-12-dd 00:00:00.000」とする
     構文: 条件式 ? 真の場合 : 偽の場合 
    M月D日設定_2.PNG

#補足

  1. 値の設定方法は、「値」、「変数」、「エクスプレッション」、「コンバータ」の4つがあります。
  2. 「コンバータ」で変数を取得すると、その後の「エクスプレッション」では「INPUT」と記述すると取得した値として扱うことができます。

#おわりに
ループのアクションには以下複数用意されていますが、使い方がよくわかっていなかったとき、ループの終わりがよく理解できず、ループを抜けた後の処理に四苦八苦しました。ループを抜けた後の処理は、ループの前でブランチを切っておけば良いことがわかってからは、ループの扱いが怖くなくなりました。一歩一歩前進ができていることに、自分に万歳です!!

つたない文章を最後まで読みいただきまして、ありがとうございました。
ループ種類.PNG

2
0
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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?