業務の隙間を埋める技術メモ。

「それ、作れるか?」より 「それ、作って大丈夫か?」を考えたい。 業務で“ちゃんと使える”かどうかを、 実際に手を動かして確かめたログを残しています。

NetSuite保存検索がうるさすぎる問題をどうにかした話 〜「絶対にヒットしない条件」を安全に量産する方法〜

結論(先出し)

NetSuite保存検索の
「条件を1個入れるたびに検索が走る問題」は、

  • インラインのカスタムフィールドを1つ追加し

  • 「そのフィールドに値が設定されていること」を初期条件にする

ことで、
保存検索だけを使って、実質“検索実行ボタン付きフォーム”を再現できました。

しかもこれ、

という、なかなか優秀なやり方でした。


何がそんなに辛いのか(おさらい)

NetSuiteの保存検索、便利なんですが……

  • フィルターを1個入力

  • 即検索実行

  • まだ条件入れ終わってない

  • でも検索は止まらない

という、せっかちすぎる挙動があります。

「いや、今じゃない」

と何度思ったことか。


正攻法はある。でも重い

Suiteletで専用検索画面を作れば解決します。

ただし、

  • フィールド追加=コード修正

  • 条件変更=テスト&デプロイ

  • 現場の「ちょっと変えたい」に弱い

保存検索の“気軽さ”が消えるのがどうにも惜しい。


発想転換:検索させないのではなく、ヒットさせない

NetSuiteは

  • 「条件が未入力だから検索しない」
    → できない

  • 「条件はあるが、結果が0件」
    → できる

ならば、

最初は必ず0件になる条件を入れておけばいい

という方向に舵を切りました。


「絶対にヒットしない」を安全に作る方法

ダミー値方式の弱点

よくあるやり方は、

  • 内部ID = -1

  • 管理番号 = DUMMY

などですが、これ、

  • 将来その値が使われる可能性

  • 誰かがうっかり条件を消す事故

がゼロではありません。

そこで使ったのが👇


インライン・カスタムフィールド方式

やったことはこれだけ

  1. トランザクション共通のカスタムフィールドを1つ作成

  2. 表示はインライン(ユーザー入力不可)

  3. どのトランザクションでも
    通常運用では値がセットされない

このフィールドを、

「このフィールドに値が設定されていること」

という条件で保存検索に入れます。


なぜこれで「絶対にヒットしない」のか

  • フィールドは存在する

  • でも値はセットされない

  • ユーザーも触れない

つまり、

フィールドだけはあるが、条件は永遠に満たされない

という、
**壊れにくい“必ずスルーする条件”**が完成します。


ここがミソ①:全トランザクションで使い回せる

このカスタムフィールド、

  • 支払請求書

  • 発注書

  • 仕訳帳

  • 請求書

など、
トランザクション系すべてに同じ条件として適用できます。

  • 保存検索ごとにダミー条件を考えない

  • ルールが一貫する

  • 説明もしやすい

地味ですが、運用面ではかなり効きます。


実際の使い方フロー

  1. 保存検索に
    「インラインカスタムフィールドに値があること」
    を初期条件として設定

  2. ユーザーが検索条件を入力

  3. 入力が終わったら
    その条件を「必ずヒットする条件」に差し替える

  4. 初めて検索結果が表示される

👉 検索が暴走しない保存検索の完成


使ってみて良かった点

  • Suitelet不要

  • 条件追加・変更が超ラク

  • 「なぜヒットしないのか」が説明できる

  • 将来の事故耐性が高い

特に、

「これ、監査で聞かれたら説明できる?」

という観点で見ると、
ダミー値より圧倒的に安心でした。


注意点(正直なところ)

  • カスタムフィールドの存在意義は
    ドキュメントに残しておかないと忘れられる

  • 条件切り替え操作はUIで明示しないと混乱する

  • 「なんで最初0件なの?」と聞かれる前提で説明を用意する

魔法ではないですが、
保存検索で粘るならかなり現実解です。


まとめ

  • NetSuite保存検索は入力途中でも容赦なく走る

  • 「検索させない」は無理だが「ヒットさせない」はできる

  • インライン・カスタムフィールドを使うと

    • 安全

    • 通化できる

    • 壊れにくい

  • 保存検索の柔軟性を殺さずUXを改善できた

同じところで詰まってる人の
「あ、これでいいじゃん」
になれば幸いです。