※この記事は古くなっています。最新の顧客ごとの自動採番はこちら。
顧客ごとの自動採番については、[旧]顧客ごとの自動採番 でもご紹介しましたが、今回は別のアプローチで同じ機能を作成してみました。前回の記事よりも便利でかつ、アプリ自体の変更が少なくなっています!
Customineの基本的な事柄は、こちらの「はじめてのカスタマイズ」をご参照ください。
以前の記事からの改善点
アプリの変更が案件管理アプリにフィールドを3つ追加するだけでよく、ルックアップの設定変更も必要ありません。また、顧客管理アプリには手を加える必要はありません。
以前のTipsでは案件管理アプリで別のレコードを再利用してレコードを作成した場合、ルックアップを取得しなおして、最新の連番を取得する必要がありましたが、本記事では自動で最新の連番を取得するので、ルックアップの取得のし直しが必要なくなりました。
カスタマイズを行うアプリの準備
アプリはkintone アプリストア の「営業支援パック」の「顧客管理」と「案件管理」のアプリを使います。
また、案件管理アプリにフィールドを3つ追加します。
案件管理
加えるフィールドは次の通り。
※フィールド名とフィールドコードは同じものを指定します
やりたいこと
案件管理アプリでのレコード作成時に、顧客ごとの連番を作成し、「案件名」に「顧客名-連番(0埋めありの5桁)-案件種類」の形式で入力する。
実現方法
案件管理アプリで新規レコード保存時に、顧客が同じ全案件レコードを全て取得し、それらの中の「案件連番」の最大値に1加えた値を最新の連番として、新しいレコードの「案件連番」に入力します。
その後、入力された「案件連番」に「顧客名」と「案件種類」を結合して「顧客名-連番-案件種類」の形で「案件名」に入力します。
カスタマイズ
新規レコード保存時に同じ顧客のレコードを全件取得する
まずは、その顧客の今までの案件の中で一番新しい連番を取得するために、その顧客の今までの案件レコードを全て取得します。
やること「キーを指定してレコードを取得する」、条件「レコードを保存する直前(削除時は除く)」「フィールド値が空ならば」を使います。
「やること」では、今回は同じ顧客レコードをルックアップしているレコードを取得したいので、顧客レコードのレコード番号をキーとします。
なお案件管理アプリは、顧客管理アプリからルックアップを取得する際に顧客レコードのレコード番号を「顧客管理レコード番号(関連レコード紐付け用)」というフィールドにコピーするように設定されており、これを利用します。
取得先アプリ:= 案件管理(営業支援パック)
キーとなるフィールド:顧客管理レコード番号(関連レコード紐付け用)
キーの値:=顧客管理レコード番号_関連レコード紐付け用
また、「条件」はレコードが作成されるときに実行したいので、「レコードを保存する直前(削除時は除く)」とし、更にレコードを作成するときの一度しか実行されないよう、条件「フィールド値が空ならば」を追加して、「案件名」が空白の時のみ実行されるようにしています。
案件連番の設定(取得レコード件数が0件の場合)
アクション1番で取得したレコードが0件ならば、今作成しようとしているレコードはこの顧客の最初の案件レコードである ということがわかります。ですのでこの時は「案件連番」に「1」をセットします。
やること「フィールドに値をセットする」、条件「他のアクションの実行が完了した時」「レコード件数が0件ならば」を使います。
案件連番の設定(取得レコード件数が1件以上の場合)
アクション1番で取得したレコードが1件以上の場合、取得したレコードの中の「案件連番」の最大値に1を加えた値が新しいレコードの「案件連番」となるので、まずはその最大値を得ます。
やること「レコード中のフィールド最大値を計算する」、条件「他のアクションの実行が完了した時」「レコード件数が1件以上ならば」を使います。
「やること」のパラメータ設定は次の通りです。
レコード選択アクション:対象となるレコードを取得したアクション(今回の場合は1番アクションなので1)を選択します。
計算するフィールド:案件連番
結果をセットするフィールド(省略可):連番に1を足してからセットしたいので、空欄としておきます。
続けて、得た最大値に1を足して「案件連番」にセットします。
やること「フィールドに値をセットする」、条件「他のアクションの実行が完了した時」を使います。
「やること」のパラメータ設定は次の通りです。
フィールド:案件連番
値:$3+1(3番のアクションの計算結果に1を足すことを意味しています)
案件名の作成
連番が作成できたので、これを使って案件名を作成します。
数値をゼロ埋め有りの5桁にフォーマット→「顧客名」と「案件種類」を結合して「案件名」にセット、という流れは 前回(以前の記事) と同じですが、今回は取得したレコードが0件の時と1件以上の時の2つに場合分けしているので、条件「いずれかのアクションの実行が完了した時」を使って、上の場合分けした処理をまとめる形でアクションを実現します。
アクション5では、やること「数値をフォーマットする」、条件「いずれかのアクションの実行が完了した時」を使います。
この時、「条件」のアクションの設定を「2,4」と設定する必要があるので気を付けてください。
※これは案件連番の設定でレコード0件だった時、1件以上だった時のそれぞれの最後のアクションを指定しています。
また、アクション6では、やること「フィールドに値をセットする」、条件「他のアクションの実行が完了した時」を使います。
フィールドに値をセットする の「値」パラメータは
= 顧客名 & "-" & $5 & "-" & 案件種類
を設定してください。
最終的なカスタマイズ
最終的なカスタマイズは次のようになります。
また、アクショングラフは次のようになります。
動作を試してみて、思った動きとならなかった場合はカスタマイズの設定があっているかどうか、確認してみましょう。
カスタマイズが終わったら試そう
設定が完了したら、「kintoneアプリへ登録」し、動作チェックしてみましょう。
※動作チェックをする前に、案件管理アプリ内のサンプルレコード(アプリストアからアプリパックを追加する際に元から入っているレコード)をすべて削除してください。
サンプルレコードには「案件連番」が入力されていないので、アクション3で求める最大値も空、つまり数値でないため、アクション4の「$3+1」が計算できず、エラーになってしまいます。
案件名が自動で入力されましたね!何件か同じ顧客の案件レコードを作成して、連番が進んでいくことを確認しましょう!
案件名の編集不可設定について
今回も、自動で入力される「案件名」は編集不可にしておきましょう。もしどうしても「案件名」を編集できるようにしたいなら、条件を「追加画面を表示した時」に変えて、レコード新規作成の時だけ編集不可とする形でもいいですよ。
まとめ
kintoneの標準機能とCustomineをうまく組み合わせれば問題を解決する方法は何通りも見えてきます。色々試してみて、最適なカスタマイズを探し出してください!
また、ご不明点等ございましたら、チャットにてご質問ください!
Customineドキュメントやサポートページも、ぜひご活用ください。