レコード再利用時にフィールドの初期値セットができなくなった

いつもお世話になっております。

フィールドの再利用時に、特定フィールドの値を書き換え&クリアするjavascriptを作成して使用しています。
先日までは問題なく動作していたのですが、最近動作しなくなっていることに気が付きました。
Kintoneのアップデート等で仕様が変わったりしたのでしょうか?

使用しているコードは以下のとおりです。
もし記述におかしいところがありましたらご指摘いただけないでしょうか。

(function () {

"use strict";
kintone.events.on('app.record.create.show', function(event){


//再利用時に空白にするフィールドを指定
if (event.reuse) {

var record = event.record;

record['年']['value'] = [];
record['契約番号']['value'] = [];
record['担当者名']['value'] = [];

//テーブルはテーブル自体のフィールドコードを指定する
record['予実差異理由']['value'] = [];
record['見実差違理由']['value'] = [];

//予算
record['予算1月']['value'] = 0;
record['予算2月']['value'] = 0;
record['予算3月']['value'] = 0;
record['予算4月']['value'] = 0;
record['予算5月']['value'] = 0;
record['予算6月']['value'] = 0;
record['予算7月']['value'] = 0;
record['予算8月']['value'] = 0;
record['予算9月']['value'] = 0;
record['予算10月']['value'] = 0;
record['予算11月']['value'] = 0;
record['予算12月']['value'] = 0;

}

return event;
});


})();

よろしくお願いいたします。

kirimin さん

こんにちは!

 

ご提示いただいたコードで私の環境では問題なく動作したので、

要因は不明なのですが、全てのフィールドが初期化されないのでしょうか?

それとも一部のフィールドなのでしょうか。

 

実際にレコードを再利用した直後の画面や、

コンソール上でエラーが出ていないかなどを教えていただければ、

何か分かるかもしれないのですが。。。

文系男さま

先日はお世話になりありがとうございました。
文系男さまの環境では動作したんですね、コード自体の間違いではない様で少し安心しました。

コード内で指定したすべてのフィールドが初期化されず、再利用もとのレコード内容がそのまま残っている状態です。
試しに別のアプリに同じコードを入れてみましたが、やはり動作しませんでした。

Chromeのデベロッパーツールで見たところ、以下のようなエラーが出ていました。
これで何かわかりますでしょうか?

Uncaught TypeError: Cannot read property 'value' of undefined
    at download.do?app=95&contentId=24269&jsType=DESKTOP&hash=97836835de3610e53a6a17f11812b7fe7da1d561:19
    at edit.js:235
    at Array.forEach (<anonymous>)
    at v (edit.js:892)
    at ov (edit.js:235)
    at pv (edit.js:235)
    at IH (edit.js:407)
    at Z4.<anonymous> (edit.js:790)
    at Hj (edit.js:122)
    at Ij (edit.js:121)
(anonymous) @ download.do?app=95&contentId=24269&jsType=DESKTOP&hash=97836835de3610e53a6a17f11812b7fe7da1d561:19
(anonymous) @ edit.js:235
v @ edit.js:892
ov @ edit.js:235
pv @ edit.js:235
IH @ edit.js:407
(anonymous) @ edit.js:790
Hj @ edit.js:122
Ij @ edit.js:121
e.cK @ edit.js:947
Hj @ edit.js:122
Ij @ edit.js:121
e.Tb @ edit.js:947
so @ edit.js:178
(anonymous) @ edit.js:26
Ed @ edit.js:53
e.dispatchEvent @ edit.js:900
ko @ edit.js:175
e.S_ @ edit.js:1035
e.tO @ edit.js:1035
setTimeout (async)
Oj @ edit.js:123
Hj @ edit.js:122
Ij @ edit.js:121
e.cK @ edit.js:947
Hj @ edit.js:122
Ij @ edit.js:121
e.Tb @ edit.js:947
so @ edit.js:178
(anonymous) @ edit.js:26
Ed @ edit.js:53
e.dispatchEvent @ edit.js:900
ko @ edit.js:175
e.S_ @ edit.js:1035
e.tO @ edit.js:1035
XMLHttpRequest.send (async)
e.send @ edit.js:1034
wo @ edit.js:178
nz @ edit.js:293
e.evaluate @ edit.js:1756
(anonymous) @ edit.js:790
Hj @ edit.js:122
Ij @ edit.js:121
e.cK @ edit.js:947
Hj @ edit.js:122
e.ei @ edit.js:948
Hj @ edit.js:122
Ij @ edit.js:121
e.cK @ edit.js:947
Hj @ edit.js:122
Ij @ edit.js:121
e.cK @ edit.js:947
Hj @ edit.js:122
Ij @ edit.js:121
e.Tb @ edit.js:947
so @ edit.js:178
(anonymous) @ edit.js:26
Ed @ edit.js:53
e.dispatchEvent @ edit.js:900
ko @ edit.js:175
e.S_ @ edit.js:1035
e.tO @ edit.js:1035
XMLHttpRequest.send (async)
e.send @ edit.js:1034
wo @ edit.js:178
$ba @ edit.js:792
Wba @ edit.js:792
(anonymous) @ edit.js:791
Hj @ edit.js:122
Ij @ edit.js:121
e.Tb @ edit.js:947
Sba @ edit.js:790
(anonymous) @ edit.js:1874
Ed @ edit.js:53
e.dispatchEvent @ edit.js:900
(anonymous) @ edit?record=103:253

kirimin さん

 

恐らく、いずれかのフィールドの value が見つかりません。というエラーかと思われます。

 

コード内で指定しているフィールドのフィールドコードが

誤っているといったことが考えられます。

 

全てのフィールドコードが誤りなく指定されているか、

確認してみてはいかがでしょうか。

 

しらみつぶしの作業ですが、各フィールドの初期化を行っている行を

コメントアウトし、1行ずつ適用させていくと処理がとおっていない部分を

あぶりだせると思います。

 

例えば、まずは以下の行以以外の初期化処理はコメントアウトして、動作させてみます。

record['年']['value'] = [];

 

問題なく動作するのであれば、次の行の初期化処理以外をコメントアウトし、動作させてみます。

record['契約番号']['value'] = [];

 

明確な対応方法をお伝えできず、申し訳ないのですが、

よかったらお試しいただけますと幸いです。

文系男さま

確認したところ、新しく追加した別のコードと競合していたせいでエラーになっていました。
別のコードが原因で動作しなくなることもあるのですね…勉強になりました。

確認方法のご教示ありがとうございました!

kirimin さん

なるほど、別の処理との競合は盲点でした。。。

私も勉強になりました。ご連絡ありがとうございます!