キンコミ kintone user community

みんなの投稿

初めて投稿させていただきます。
同一レコード内に複数存在するユーザー選択フィールド間での重複をチェックする方法はないでしょうか。
「登録者」が「同行者」(複数選択の場合もあり)を登録して「承認者」へ申請する2段階のシンプルなフローで、承認者は登録者、同行者とは重複してはいけないというルールです。ところが、ルールを知らずに同行者と承認者が重複したまま申請するケースが多発しています。「承認者」が「登録者」もしくは「同行者」と重複しているとき、なんらかのエラー表示などをできないかと考えております。
対策できそうに思えるのですが、私はKintone初心者で、なかなか情報を見つけることができません。皆様のお知恵を拝借したく、よろしくお願いいたします。

4件のコメント (新着順)
ふゆき
製造業
2024/12/13 09:47

TISさんの「条件分岐処理プラグイン」
 https://www.tis2010.jp/branchprocess/
 https://kintone.tis2010.jp/docs/plugins/branchprocess/ja/

だけで、動作確認しました。
(文字結合プラグインは不要になりました)

他の方も別手段で解決されているようですが
一応、設定情報の画像添付します。

※自動入力の計算式【画像の赤文字部はフィールドコードです】
① TO_STRING("登録者")+TO_STRING("同行者")
② IF(LIKE("結合",TO_STRING("承認者")),"重複してます→","")

追記
デフォルトの「プロセス管理」を利用すれば
出来る様な気もするのですが???
使用したことがないので今度確認してみます。

追記2
「プロセス管理」だけでは無理そう
結局、TISさんの
「ステータス連動必須フィールド設定プラグイン」
が必要みたいです。


ふゆきさま
アイディアのご提案ありがとうございます。私が初心者ということもあって、先にいただいたアイディアの検証に時間がかかりましたが、動作確認ができました。ふゆきさまにいただいたアイディアもシンプルで良さそうですのでテストさせていただきます。だいぶ慣れてきたものの、テストに少し時間がかかるかもしれません。
詳細な手順をご教示いただきましてありがとうございました。またの機会がありましたら、よろしくお願いいたします。

藤田 隆
2024/12/12 22:05

有料プラグインの利用でも構いませんので、何かアイディアがありましたらコメントいただけますと幸いです。

有償プラグインになりますが、項目検証プラグインで複数のユーザー選択間の重複チェックを行うことが出来ます。

ご参考になれば
rex0220 項目検証プラグイン ユーザー選択間の重複チェック2
https://qiita.com/rex0220/items/a1bca640083e103f3091


藤田さま

 ご丁寧に解説をいただきましてありがとうございました。私のイメージ通りの動作で、プラグインを導入すれば対応可能であることが分かりまして安心しました。
 あいにく教えていただきましたプラグインは弊社では導入していませんので、他の方に教えていただいた方法も試した後にプラグインの導入も検討したいと思います。

fuku_inu バッジ画像
製造業
2024/12/12 17:01

登録者、同行者、承認者 がすべてユーザー選択フィールドだったとして
TISさんの 条件分岐処理プラグイン を使ってやってみます



▼フォーム

ユーザー選択フィールドを3つ

 登録者、同行者、承認者

文字列1行フィールドを3つ

 ユーザー選択フィールドで選択した内容の転記先

数値フィールドを2つ

 重複しているかどうかを入れる

数値フィールド

 承認者数を入れる

文字列1行フィールド

 自動計算でエラー内容を表示する

IF(承認者数<>1,"承認者は1人です",
IF(登録者と承認者=1,"登録者と承認者が重複しています",
IF(同行者と承認者=1,"同行者と承認者が重複しています",
"")))

数値フィールド

 プラグインの動作条件(初期値を1にしておき、このフィールドが1だったら動作させる)



▼プラグイン設定

動作条件

 数値 等しい 1

自動入力

 登録者    :"登録者選択"
 同行者    :"同行者選択"
 承認者    :"承認者選択"
 承認者数   :IF("承認者"="",0,IF(LIKE("承認者",","),2,1))
 登録者と承認者:IF(AND(LIKE("登録者","承認者"),"承認者数"=1),1,0)
 同行者と承認者:IF(AND(LIKE("同行者","承認者"),"承認者数"=1),1,0)
 「レコード保存時にも実行する」をオン



動作条件で、いつも動作するようにするのがよく分かんなくて
上記のようにしましたが、いい方法があるでしょうかね。。。



また、
プロセス管理で、アクションが実行できる条件を
 エラー =等しい (空欄)
にしておくと、エラー表示があるレコードでは処理開始ボタンが現れないようになります


ふゆき
製造業
2024/12/13 11:34

>動作条件で、いつも動作するようにするのがよく分かんなくて
上記のようにしましたが、いい方法があるでしょうかね。。。

自動入力など (他のもありそうです。)
は、1度入力されると書き換わらないみたいですね

今回、LIKE関数を利用して、2つのフィールドが空値とすると
(初期値は共に空値) 重複と入力されてしまい
「動作条件」の設定をどの様にするかで、自分も試行錯誤しました。
動いててしまえば、なぁ~んだ ってことなんですが。。。

無条件で動作させてもよいなら
動作条件=設定なし、でいいのですが
何かしらの条件があるのであれば
動作条件の付け方は重要ですね

例えば、編集制限の場合、TABを2つ作り
1つには、動作条件=なし/編集制限=無効
2つには、動作条件=設定/編集制限=有効

と、2つのTABに変動設定が必要になります。

ん~
「条件分岐処理プラグイン」は便利だけど、奥が深いです

fukuさま
詳細に手順をお示しいただきましてありがとうございました。不慣れなせいで再現に時間がかかりましたが、なんとか目的通りの動作をすることが確認できました。現行アプリの改良に取り入れられそうですのでこちらの手順を実装させていただきたいと思います。
大変助かりました。またの機会がありましたら、よろしくお願いいたします。

自習・リマインドかねて試してみました。

同行者がテーブルになっている前提です。

●メッセージをテーブル内/同一行に表示させたい場合
(1)氏名の横にメッセージ用として文字列(1行)フィールド追加
(2)追加したフィールドの設定で、[自動計算する]にチェックマーク
(3)[計算式]に以下記入
 IF(氏名=登録者,"登録者と重複しています。重複しない方に変更するか、この行を削除してください。","")
(4)[計算式を表示しない]はお好みでチェックマーク
(5)アプリに適用

●メッセージがテーブル外表示でよい場合
(1)メッセージ用としてテーブル外に文字列(1行)フィールド配置
(2)追加したフィールドの設定で、[自動計算する]にチェックマーク
(3)[計算式]に以下記入
 IF(CONTAINS(氏名, 登録者),"登録者が重複登録されています。当該氏名を重複しない方に変更するか、行を削除してください。","")
(4)[計算式を表示しない]はお好みでチェックマーク
(5)アプリに適用

※例のため、氏名欄は文字列(1行)フィールドを使用しています。
※便宜上、フィールド名=フィールドコードとしています。
※表示メッセージはお好みで

こんなのはいかがでしょうか。
ご参考になれば幸いです。


かな
建設業
2024/12/12 09:25

ユーザー選択フィールドだと自動計算でフィールドを取得できないので、
⇩コレ使ってみてください。
「ユーザー/組織/グループ属性取得プラグイン」(無料)
https://www.tis2010.jp/userproperies/

経緯元記事
https://kincom.cybozu.co.jp/chats/jtxosarw3riloggb

Seal777さま、かなさま
早速のコメントありがとうございました。お二人にいただいた情報を組み合わせて目標達成の手前まできております。あと一歩と思うのですが、以下の進捗状況です。

1.Seal777さまに教えていただいた方法ですが、人名フィールドは選択できず、困っていました。

2.かなさまに教えていただいたプラグインを使いまして、文字列のフィールドに従業員番号としてコピーし、Seal777さまの数式をあてこむことで無事に表示することができました。

3.問題が残っているのは人名フィールドに2名以上記載されているケースで、この場合、従業員番号が0000,1111のように並んでコピーされてしまい、うまく判定できませんでした。

4.なんとか部分一致で判定できないものかとCONTANIS関数というのも試みましたがうまくいきませんでした。

もう一息と思うのですが、Kintoneの関数はかなり限定的ですね。有料プラグインの利用でも構いませんので、何かアイディアがありましたらコメントいただけますと幸いです。

かな
建設業
2024/12/12 15:12

2(ユーザー/組織/グループ属性取得プラグイン)フィールドと判定フィールドをテーブルの中に入れると良いと思います。

同行者 転記フィールド 判定フィールド

この3つでテーブルを作って、都度判定させるのが良いと思います。

人名フィールドは選択できず、困っていました。

確かにユーザー選択フィールドは自動計算で扱えない旨、ドキュメントにありましたね…
変な事を言って申し訳ありませんでした。

つかぬことをお伺いしますが、従業員リストがアプリ化されているなんてことはありますか?
あるならば、ルックアップフィールドでそのアプリを参照して人名等を引っ張って来ることで基本機能のみで実現可能かと思いましたので。
確かにユーザー選択フィールドの検索機能は強力なので使い勝手がよく、ルックアップフィールドは静的絞り込みと静的並べ替えくらいしかできないので、人数が多いと膨大なリストから選ばなくてはなならなくなり、効率は激落ちですが…

以上、基本機能のみに拘った視点での話なので、スルーいただいて結構です。

ちなみに、弊社ではアールスリーのgusuku Customineという有料プラグインが同時導入されているので、今回のようなケースでは迷わずそれを使っちゃいます(^ ^;)>
({ユーザー選択フィールドのフィールドコード}.nameなどと書くと表示名が持って来れちゃいます)

Seal777さま、かなさま

ご丁寧にコメントをいただきましてありがとうございます。私は初心者ですので、大変参考になります。気のせいかもしれませんが、この2日間でレベルアップしたと感じます。

かなさま
アイディアご提案ありがとうございます。テーブルの作成はこのあとチャレンジしてみます。
Seal777さま
私の方こそユーザー選択フィールドのことを人名フィールドと間違って記載してすみません。従業員リストのアプリは見当たりませんでした(もしかしたら公開されていないだけかもしれません)。ルックアップの機能は理解できておらず、これから勉強したいと思います。
gusukuCustomineの機能紹介を見ましたが良さそうですね。残念ながら弊社では導入していないようでした。

レス見ていてふと思いついた感想です。

0000,1111のように並んでコピーされてしまい

「当該ユーザー選択フィールドでは複数登録NG」が前提ですが、複数登録されたとき”だけ”「,」が付くのであれば、それを逆手にとって「","が含まれたとき、複数登録禁止旨のエラーメッセージ表示する」というのを判定式に入れればいいのでは?と思います。

自己レスです。

ルックアップフィールドは…人数が多いと膨大なリストから選ばなくてはなならなくなり、効率は激落ちですが…

ブラウザの検索機能併用なら、ある程度までは手数を減らせそうです。
(1)ルックアップの[取得]ボタンを押してリスト表示
(2)Ctrl+F押下でブラウザの検索ウインドウ表示
(3)(2)のウインドウにキーとなる文字列記入
(4)[ENTER]やΛ・Vで所望の行にジャンプ
(5)リストの[選択]をクリック
こんな感じです。

ユーザー選択フィールドの使い勝手には及びませんが、ご参考になれば幸いです。

Seal777さま
コメントありがとうございました。複数入力時にエラーとするアイディアを検討させていただきましたが、以前より使用しているアプリの改良ということで、入力方法の変更は好ましくないということで却下されてしまいました。今後、新しいアプリを作成する際には心にとめておきたいと思います。
色々とアドバイスをいただきましてありがとうございました。

「入力方法の変更は好ましくない」ですか…弊社にも変化を嫌う方は一定数いるので、ご苦労お察しします。
ただ、こういったところをブレークスルーしていくのもIT化の醍醐味だと思うので、苦しいとは思いますが、メゲずに取り組んでいただくよう陰ながら応援しています。