ルックアップ の絞り込みしても、選択できてしまう

モヤモヤに直面したため、投稿させていただきました。

ヘルプ等は検索しましたが、既知の件でしたらすみません。

 

ルックアップ フィールドを「ステータス完了のみ」と絞り込みした状態で、あるアプリに設置しています。

しかし一位の文字列を入力し、取得ボタンを押すと未完了のものも選択できてしまいます。

取得を押した時の一覧では、ステータスは完了のみの一覧が取得されます。

 

ルックアップ フィールドのそもそもの仕様で、

絞り込み初期設定とは、一覧のみが絞り込まれるだけで、

上記のようにステータス完了にならないと選択できないようにするには、元アプリのレコード単位に制限をかけないといけないのでしょうか?

 

なんとなくずっと、絞り込み初期設定で制限がかかるのだと思っていたため、

ご存知の方がいらっしゃったらご教授いただけるとありがたいです。

kintoneヘルプでは当該記事を探せなかったため。。。

 

よろしくお願いします。

 

Yamamotoさん、こんにちは。プロジェクト・アスノートの松田です。

検証されたとおり、「絞り込みの初期設定」はあくまでも、ルックアップの取得ボタンを押したときの

初期の絞り込み設定です。

ルックアップの可否を決めるものではないので、ルックアップはできてしまいます。

 

対処法としては、

ご推察のとおり、元のアプリのレコードのアクセス権で参照できなくする。

こちらは現実的ではない場合も多いと思います

 

もしくは、ちょっと複雑になりますが、無理やり実現しようとしたら、

ルックアップ時に同時にコピーできるフィールドで区別して、取得後にエラー表示等してあげる(JavaScriptカスタマイズ)か、

といったところでしょうか。ステータスはルックアップ時の同時コピーの対象にはできないため、別途仕込んでおく必要があります。

 

あとは関連レコード一覧を併用して、ステータスを表示させ、自己チェックをかけてもらう運用にするか。

 

他に解決方法のアイデアをお持ちの方は、共有いただけるとありがたいです。

こんにちは。

> kintoneヘルプでは当該記事を探せなかったため。。。

https://jp.cybozu.help/k/ja/user/app_settings/form/form_parts/field_lookup.html

上記の記事が詳しいですが、ズバリの記事は見当たらないですね。。。

ルックアップの「絞り込みの初期設定」は Yamamotoさんと松田さんが言及している通りの動きですね。

※下記イメージ

レコード一覧の絞り込みと同じ感じです。一覧で表示される漏斗マークから条件を変更すると絞り込みした以外も表示されます。

松田さんと同じですが、
ステータス完了以外を取得できないようにするには、レコードのアクセス権の条件に
[ステータス]次のいずれも含まない[完了]
を設定して管理者以外のアクセス権を外すとかになるかと思います。

ルックアップする元アプリがマスタアプリなら、レコードのアクセス権を設定する運用でも良いかと思います。

kintone の既存レコードのルックアップに指定された値が、その後ルックアップ対象外になった場合をエラーとしてしまうと、既存レコードの他の値を変更してもルックアップのエラーになって変更できなくなります。

フォーム設定でドロップダウンの値を削除しても、既存レコードのドロップダウンの値はそのまま保持するのと同様に、このあたりは既存レコードに影響が出ないようなしくみにしているような気がします。

 

対応策ですが、ルックアップダイアログ上の絞り込みボタンを非表示にカスタマイズすると、絞り込みの解除は出来なくなります。

その代わり更に絞り込み条件を追加することもできなくなりますので、対象のデータ量によっては使えないかもしれません。

あとルックアップの入力テキストエリアに直接値を入れて取得ボタンをクリックすると、絞り込み条件の範囲外のデータが取得できてしまいます。

さらに JavaScript カスタマイズで、DOM操作で入力テキストエリアを入力不可にすると、ルックアップの対象データのみ選択可能になると思います。

いろいろ制約がありますので、運用は難しかもしれません。

 

他に、ルックアップ選択条件プラグインを使うと、下記のように絞り込みの解除は出来なくなります。

ただし、ルックアップの入力テキストエリアに直接値を入れて、取得ボタンをクリックすると、絞り込み条件の範囲外のレコードも指定できてしまいます。

やはりこちらも、JavaScript カスタマイズで、DOM操作で入力テキストエリアを入力不可にすることも必要ですね。

Matsuda様、Yoshida様、rex0220様

ご教授くださりありがとうございます!

アクセス権の制限しか解決方法を思いつかず、頭を抱えておりましたが

取得後にエラー表示や、ボタン非表示や入力不可など、解決方法のバリエーションがあるんですね。

勉強になります。

 

私が直面しているケースでは、Matsuda様にご提案頂いた

参照元アプリ:ステータス変更時にステータス(文字列)フィールドに転記

参照アプリ:ルックアップフィールドを設置し、ステータス(文字列)フィールドを取得し、

   ステータス(文字列)フィールドが「完了」でなければエラーとする。

が運用にのりそうです、実装してみます。

 

みなさま、丁寧な解説と解決策のご提案ありがとうございました。

Yamamoto様

私も同様のことをしたいと思っておりました!!

参照アプリ:ルックアップフィールドを設置し、ステータス(文字列)フィールドを取得し、

   ステータス(文字列)フィールドが「完了」でなければエラーとする。

↑ステータスが完了でなければ、エラーとする。という部分の実装をどのようにやったのか、

もしよろしければ教えていただけないでしょうか?

キントーンの開発が初心者で、どう実装したら良いかわからないため、教えていただけますと幸いです。

よろしくお願いします。

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。