アルアカ - Arcadia Academia

Arcadia Academiaは「エンジニアリングを楽しむ」を合言葉に日本のデジタル競争力を高めることをミッションとするテックコミュニティです。

kintoneのルックアップで取得した項目が保存すると元に戻る時の直し方

Featured image of the post

「仕入の商品名を手で直したのに、保存したらマスタの名前に戻っている」 「別のアプリから転記した商品名が、開き直すと消えている」 「テストは全部通っているのに、業務担当者の画面だけ値が違う」

kintone のルックアップは、参照先アプリの値をフィールドにコピーして持つ便利な機能です。ただし、コピーされた項目(取得項目)は、保存のたびにマスタの値へ戻る動きをします。人が編集した値を残したい場合は、設計から変える必要があります。

この記事では、ルックアップの取得項目が元に戻る時の考え方と、上書き用フィールドの作り方、画面間の転記で見落としやすい点、確認手順をまとめます。

💡
💡 30秒で要点
- ルックアップの取得項目は、保存のたびにマスタの値へ戻る前提で設計する
- 人が書き換えた値を残したいなら、取得項目とは別の「上書き用フィールド」に持つ
- 別画面へ値を運ぶ処理(モーダル選択・コピー)にも上書き用フィールドを含める
- テストは「値を直接投入して表示確認」ではなく、画面操作で経路を通して確認する

目次を開く

症状と原因

起きること

  • ルックアップで商品コードを選ぶと、商品名などの取得項目が自動で入る
  • 取得項目を書き換えて保存しても、再表示や再保存でマスタの値に戻る

取得項目は「参照先の値を写したもの」で、持ち主はあくまでマスタ側です。そのため、レコードを保存するたびに参照先の値で更新されます。

判断の目安

やりたいこと 向いている方法
マスタの最新値をそのまま表示したい ルックアップの取得項目をそのまま使う
取引ごとに名称や単価を変えたい 上書き用フィールドを別に持つ
発注時点の値を固定して残したい 上書き用フィールドか文字列フィールドにコピーして持つ

直し方:上書き用フィールドを別に持つ

手順

  1. フォーム設定で、取得項目と同じ種類の「上書き用」フィールドを追加する(例: 商品名 → 商品名(上書き))
  2. 一覧や帳票で表示する時は、上書き用フィールドが空でなければそれを、空なら取得項目を使う
  3. 人が編集するのは上書き用フィールドだけにする

表示の切り替えをカスタマイズで行う例です。フィールドコードは自分のアプリの値に置き換えてください。

kintone.events.on('app.record.detail.show', (event) => {
  const record = event.record;
  const name = record.product_name_override.value || record.product_name.value;
  console.log('表示に使う商品名:', name);
  return event;
});

見落としやすい点:画面間の転記

上書き用フィールドを作っても、別の画面へ値を運ぶ処理がそれを含んでいなければ、値は途中で消えます。たとえば次のような処理です。

  • 検索用のモーダルで選んだレコードから、別アプリのレコードへ値をコピーする処理
  • 「発注から仕入を作る」のような、別アプリへの転記処理

転記処理を作る時は、コピーするフィールドの一覧に上書き用フィールドを入れます。

const copyFields = [
  'product_code',
  'product_name',
  'product_name_override', // 上書き用フィールドも運ぶ
];

新しくフィールドを足したら、転記処理のコピー対象一覧を必ず見直す、と決めておくと漏れません。

確認方法:経路を通してテストする

ここが最大の落とし穴です。自動テストで上書き用フィールドの値を REST API で直接書き込み、表示だけ確認する作りだと、転記処理が値を運んでいるかは確認できません。テストがすべて成功しているのに、実際の画面では値が消えている状態になります。

合格条件は「色が付いた」ではなく「経路を通った」で決めます。

  1. 元の画面(例: 発注)で、上書き用フィールドの値を編集して保存する
  2. 画面操作で転記先(例: 仕入)のレコードを作る
  3. 転記先で、上書き用フィールドの値が入っていることを確認する
  4. 転記先を保存し直して、値が残っていることを確認する

この手順は、そのまま証跡(スクリーンショット)の撮影にも使えます。

まとめ

  • ルックアップの取得項目は、保存のたびにマスタの値へ戻る
  • 人が編集した値を残したい場合は、別の上書き用フィールドに持つ
  • 別画面への転記処理にも、上書き用フィールドを含める
  • テストは値の直接投入ではなく、画面操作で経路を通して確認する

よくある質問(FAQ)

取得項目を編集不可にせず、そのまま書き換えて運用できますか?

保存のたびにマスタの値へ戻るため、書き換えた値を残す用途には向きません。上書き用フィールドを別に持つ方法をおすすめします。

上書き用フィールドが空の時はどうなりますか?

表示側の処理で取得項目を使う形にすれば、マスタの値がそのまま表示されます。

転記処理を直したのに値が来ません。何を確認しますか?

転記先のフィールドコードが合っているか、コピー対象の一覧に上書き用フィールドが入っているかを確認します。あわせて、転記元のレコードが保存済みかも見てください。

自動テストが通っているのに不具合が出るのはなぜですか?

値を直接投入するテストは、画面間の転記を通らないためです。経路を通す確認を1本は用意してください。

業務効率化・DX推進でお悩みですか?

オンラインセッションで課題を可視化し、最適な解決策をご提案します。

  • DX推進を何から始めればいいかわからない
  • ツール導入を検討している
  • 社内でデジタル人材を育成したい
まずは無料で課題整理

相談は完全無料・オンラインで気軽に

あなたを爆速で成長させるメンタリングプログラムはこちら

メンタープログラムバナー

業務効率化・DX推進のご相談はこちら

伴走支援プログラムの詳細を見る

エンジニアの基礎学習ゲーム

プログラミング学習支援

無料相談はこちら