kintone のルックアップフィールドでは、テーブル内のフィールドを「ほかのフィールドのコピー」に指定できません。


この記事では、カスタマインを使用して、ルックアップでレコードを取得した時に、ルックアップでは取得できないテーブルの行も一緒にコピーする方法を紹介します。



カスタマインの基本的な使い方については、次の記事をご覧ください。



実現すること

この記事で紹介するカスタマイズでは、次の動作を実現します。

  • ルックアップの取得が成功した時に、取得したレコードのテーブルの行も現在のレコードへコピーする

  • ルックアップをクリアした時に、現在のレコードのテーブルをクリアする



動作例

「部品材料発注」アプリのルックアップフィールド「部品コード」に、値を入力し【取得】をクリックすると、ルックアップのコピー対象である「部品名」とあわせて、制作に必要な材料のテーブル行もコピーされます。

また、ルックアップを【クリア】すると、テーブルもクリアされます。




ルックアップ(部品コード)の参照先である「部品マスタ」アプリには、下記のようなレコードが登録されています。




アプリの設定

「部品マスタ」アプリと「部品材料発注」アプリを用意し、以下の通りフォームを設定します。

部品マスタアプリ

部品の情報を登録するマスタ用アプリを作成しました。

テーブルには、部品の制作に必要な材料を登録します。


フィールド名

フィールドコード

フィールドタイプ

備考

部品コード

部品コード

文字列(1行)


部品名

部品名

文字列(1行)


制作に必要な材料

制作に必要な材料

テーブル


材料コード

材料コード

文字列(1行)

テーブル(制作に必要な材料)内フィールド

材料名

材料名

文字列(1行)

テーブル(制作に必要な材料)内フィールド

材料単価

材料単価

数値

テーブル(制作に必要な材料)内フィールド

数量

数量

数値

テーブル(制作に必要な材料)内フィールド

小計

小計

計算

テーブル(制作に必要な材料)内フィールド




部品材料発注アプリ

部品の材料を発注する際に使用するアプリです。

「部品コード」でルックアップを取得すると、「部品名」も取得されます。


フィールド名

フィールドコード

フィールドタイプ

備考

発注コード

発注コード

文字列(1行)


発注先

発注先

文字列(1行)


部品コード

部品コード

ルックアップ


部品名

部品名

文字列(1行)

ルックアップ(部品コード)のコピー

制作に必要な材料

制作に必要な材料

テーブル


材料コード

材料コード

文字列(1行)

テーブル(制作に必要な材料)内フィールド

材料名

材料名

文字列(1行)

テーブル(制作に必要な材料)内フィールド

材料単価

材料単価

数値

テーブル(制作に必要な材料)内フィールド

数量

数量

数値

テーブル(制作に必要な材料)内フィールド

小計

小計

計算

テーブル(制作に必要な材料)内フィールド




ルックアップフィールド「部品コード」は、下記のように設定します。




カスタマインの設定

カスタマインに「部品材料発注」アプリのカスタマイズを追加します。

全体の設定例を下記に示します。




ルックアップの取得時にテーブルの行を書き出す

テーブル行を取得するには、まずテーブルが含まれるレコードを取得する必要があります。

アクション1 では、「部品コード」のルックアップ取得が成功したタイミングで、ルックアップしたレコードと同じレコードを「部品マスタ」アプリから取得します。


 やること「キーを指定してレコードを取得する

【取得先アプリ】

部品マスタ

【キーとなるフィールド】

部品コード

【キーの値】

= 部品コード

【最大取得件数】


 条件「ルックアップで取得が成功した時

【ルックアップフィールド】

部品コード




アクション2 では、アクション1 で取得したレコードから「制作に必要な材料」テーブルをレコードとして取得します。


 やること「他のレコード内のテーブルをレコードとして取得する

【テーブルを含むレコード】

1

【テーブル】

制作に必要な材料

【空の行を取得するかどうか】

*空の行は取得しない

【複数レコードがある場合】

*最初の1行分だけ取得


※この例ではテーブルの空の行は取得していませんが、必要であれば、【空の行を取得するかどうか】で「空の行も取得する」を選択してください

※ルックアップで取得するレコードは1件のため、【複数レコードがある場合】はいずれを指定しても結果は同じです


 条件「他のアクションの実行が完了した時

【アクション】

1




アクション3 では、アクション2 で取得したテーブルデータを、「制作に必要な材料」テーブルに書き出します。


 やること「レコードをテーブルに書き出す

【書き出し先テーブル】

制作に必要な材料

【レコード】

2

【マッピング】

材料コード = 材料コード

材料名 = 材料名

材料単価 = 材料単価

数量 = 数量

【既存の行】

*既存のテーブル行はクリアする


※この例ではテーブルを上書きしますが、既存の行に追加されたい場合は【既存の行】で「既存のテーブル行を残して追記する」を選択ください


 条件「他のアクションの実行が完了した時

【アクション】

2



フィールドマッピングは、下記のように指定します。

今回は取得元と書き出し先のテーブルの項目が同じため、すべての項目をマッピングしていますが、書き出し不要な項目は指定を省いてもかまいません。


※書き出し先テーブルの必須フィールドには、値を指定する必要があります。値がない場合は、実行時にエラーになります。




ルックアップフィールドがクリアされた時はテーブルもクリアする

kintone の動作で、「部品コード」のルックアップが【クリア】されると、ルックアップでコピーされる「部品名」もクリアされ、空になります。

これを利用し、アクション4 では、「部品名」の値が変わって空になったタイミングで、「制作に必要な材料」テーブルをクリアします。


 やること「フィールド値をクリアする

【フィールド】

制作に必要な材料


 条件「フィールドの値を編集して値が変わった時

【フィールド】

部品名

【一覧画面の鉛筆を押した時】

一覧画面の鉛筆を押した時は含めない


 追加条件「フィールド値が空ならば

【フィールド】

部品名




以上で設定はすべて完了です。

「kintoneアプリへ登録」し、ルックアップを取得した時にテーブルの行もコピーされ、ルックアップをクリアした時にテーブルもクリアされることを確認してください。



まとめ

以上が、ルックアップでレコードを取得した時に、ルックアップでは取得できないテーブルの行も一緒にコピーする方法でした。


ご不明な点がございましたら、チャットでお問い合わせください。

ドキュメント や サポートページ も、ぜひご活用ください。