rex0220 計算式プラグインで、計算対象の項目を手入力できるようにする方法です。
通常は循環参照になってしまうため、少し工夫が必要です。
概要
計算式プラグインは、
- 編集画面表示時
- 項目の値変更時
- レコード保存時
などのタイミングで計算を実行します。
そのため、計算対象の項目を手入力する場合は、条件によって入力された値を維持するように計算式を組む必要があります。
今回は、以下の仕様を例に説明します。
- 「開催日」と「締切日」の2項目
- 締切日は開催日の2日前を自動セット
- ただし、自動セット後は手入力で変更可能
- 開催日をクリアしたら締切日もクリア
動作例
- 開催日を入力すると、締切日が自動で設定されます
- その後、締切日を手入力で変更可能
- 開催日を変更しても、手入力した締切日はそのまま維持
- 開催日を削除すると、締切日もクリア

計算式プラグイン設定
- [OPTION] 循環参照を許可 にチェック
- 締切日の計算式を以下のように設定
OPTION: 循環参照を許可
// 締切日 DATE (editable)
IFS(
// 締切日自動セット(開催日あり & 締切日なし)
AND(開催日, 締切日=""), DATE_ADD(開催日, -2, "day"),
// 締切日維持(手入力または自動セット済)
開催日, 締切日,
// 締切日クリア(開催日なし)
""
)
ポイント
- 循環参照を許可を有効化することで、計算式内で自分自身の値(締切日)を参照可能
- 「手入力値を維持」する条件を先に評価しないと、後から上書きされてしまう
- 「自動セット → その後編集OK」という動きができる
この書き方を応用すると、「初期値は自動計算だけど、その後は自由に編集できる項目」を簡単に作れます。

