結論(先出し)
NetSuite保存検索の
「条件を1個入れるたびに検索が走る問題」は、
-
インラインのカスタムフィールドを1つ追加し
-
「そのフィールドに値が設定されていること」を初期条件にする
ことで、
保存検索だけを使って、実質“検索実行ボタン付きフォーム”を再現できました。
しかもこれ、
-
将来壊れにくい
-
ダミー値を考えなくていい
-
全トランザクションで使い回せる
という、なかなか優秀なやり方でした。
何がそんなに辛いのか(おさらい)
NetSuiteの保存検索、便利なんですが……
-
フィルターを1個入力
-
即検索実行
-
まだ条件入れ終わってない
-
でも検索は止まらない
という、せっかちすぎる挙動があります。
「いや、今じゃない」
と何度思ったことか。
正攻法はある。でも重い
Suiteletで専用検索画面を作れば解決します。
ただし、
-
フィールド追加=コード修正
-
条件変更=テスト&デプロイ
-
現場の「ちょっと変えたい」に弱い
保存検索の“気軽さ”が消えるのがどうにも惜しい。
発想転換:検索させないのではなく、ヒットさせない
NetSuiteは
-
「条件が未入力だから検索しない」
→ できない -
「条件はあるが、結果が0件」
→ できる
ならば、
最初は必ず0件になる条件を入れておけばいい
という方向に舵を切りました。
「絶対にヒットしない」を安全に作る方法
ダミー値方式の弱点
よくあるやり方は、
-
内部ID = -1
-
管理番号 =
DUMMY
などですが、これ、
-
将来その値が使われる可能性
-
誰かがうっかり条件を消す事故
がゼロではありません。
そこで使ったのが👇
インライン・カスタムフィールド方式
やったことはこれだけ
このフィールドを、
「このフィールドに値が設定されていること」
という条件で保存検索に入れます。
なぜこれで「絶対にヒットしない」のか
-
フィールドは存在する
-
でも値はセットされない
-
ユーザーも触れない
つまり、
フィールドだけはあるが、条件は永遠に満たされない
という、
**壊れにくい“必ずスルーする条件”**が完成します。
ここがミソ①:全トランザクションで使い回せる
このカスタムフィールド、
-
支払請求書
-
発注書
-
仕訳帳
-
請求書
など、
トランザクション系すべてに同じ条件として適用できます。
-
保存検索ごとにダミー条件を考えない
-
ルールが一貫する
-
説明もしやすい
地味ですが、運用面ではかなり効きます。
実際の使い方フロー
-
保存検索に
「インラインカスタムフィールドに値があること」
を初期条件として設定 -
ユーザーが検索条件を入力
-
入力が終わったら
その条件を「必ずヒットする条件」に差し替える -
初めて検索結果が表示される
👉 検索が暴走しない保存検索の完成
使ってみて良かった点
-
Suitelet不要
-
条件追加・変更が超ラク
-
「なぜヒットしないのか」が説明できる
-
将来の事故耐性が高い
特に、
「これ、監査で聞かれたら説明できる?」
という観点で見ると、
ダミー値より圧倒的に安心でした。
注意点(正直なところ)
-
カスタムフィールドの存在意義は
ドキュメントに残しておかないと忘れられる -
条件切り替え操作はUIで明示しないと混乱する
-
「なんで最初0件なの?」と聞かれる前提で説明を用意する
魔法ではないですが、
保存検索で粘るならかなり現実解です。
まとめ
-
NetSuite保存検索は入力途中でも容赦なく走る
-
「検索させない」は無理だが「ヒットさせない」はできる
-
インライン・カスタムフィールドを使うと
-
安全
-
共通化できる
-
壊れにくい
-
-
保存検索の柔軟性を殺さずUXを改善できた
同じところで詰まってる人の
「あ、これでいいじゃん」
になれば幸いです。