0
0

rex0220 計算式プラグイン 組織選択項目の組織メンバー

Last updated at Posted at 2024-02-03

計算式プラグインで組織選択項目の組織メンバーをテーブルにセットします。

概要

組織選択項目の組織名、組織コード、組織メンバーを取得します。
組織メンバーを文字列項目にセットすることで、計算処理のパフォーマンス改善を図ることができます。

2024-02-03_17h05_18.png

計算式プラグイン設定(パフォーマンス改善前)

OINFO, UINFO 関数を使用するため、「ユーザー情報」をチェックします。

  • テーブル
    • 組織メンバーの数をセット。0 の場合は 1 をセット
  • ユーザー選択
    • テーブル行位置に対応する組織メンバーをセット
  • 社員番号
    • ユーザー選択の値から社員番号をセット

2024-02-03_17h05_54.png

.js
// 組織名 SINGLE_LINE_TEXT
SEL_NAME(組織選択,"text")

// 組織コード SINGLE_LINE_TEXT
SEL_CODE(組織選択,"text")

// テーブル SUBTABLE
LET(a,SEL_CODE(組織選択,"array"),
  b,OINFO(a,"users"),
  c,UINFO(b,"code"),
  MAX(ARRAY_COUNT(c),1)
)

// テーブル.ユーザー選択 USER_SELECT
LET(a,SEL_CODE(組織選択,"array"),
  b,OINFO(a,"users"),
  c,UINFO(b,"code"),
  d,ARRAY_GET(c,ROWNO(テーブル)),
  SET_CODE(d)
)

// テーブル.社員番号 SINGLE_LINE_TEXT
LET(a,SEL_CODE(ユーザー選択,"array"),
  UINFO(a,"employeeNumber")
)

計算処理改善版

前記の計算式をみると、組織メンバーを取得する計算が多くあります。
組織メンバー数が多い場合に、計算処理が遅くなるため、組織メンバーを文字列にセットして、それを参照するように改善します。

2024-02-03_17h33_11.png

計算処理改善版プラグイン設定

組織メンバー項目を最終行に配置しましたが、組織メンバーの計算を先に行うため、ランク 1 を指定します。

2024-02-03_17h37_12.png

.js
// 組織名 SINGLE_LINE_TEXT
SEL_NAME(組織選択,"text")

// 組織コード SINGLE_LINE_TEXT
SEL_CODE(組織選択,"text")

// テーブル SUBTABLE
LET(a,SPLIT(組織メンバー,","),
  MAX(ARRAY_COUNT(a),1)
)

// テーブル.ユーザー選択 USER_SELECT
LET(a,SPLIT(組織メンバー,","),
  b,ARRAY_GET(a,ROWNO(テーブル)),
  SET_CODE(b)
)

// テーブル.社員番号 SINGLE_LINE_TEXT
LET(a,SEL_CODE(ユーザー選択,"array"),
  UINFO(a,"employeeNumber")
)

// 組織メンバー SINGLE_LINE_TEXT (rank:1)
LET(a,SEL_CODE(組織選択,"array"),
  b,OINFO(a,"users"),
  c,UINFO(b,"code"),
  c
)
0
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
0
0