いろいろ調べて、以下のコーディングを行ったのですが、最後のif文の判断によるevent.errorとtableCreateが実行されません。
申し訳ございません、どなたか解決方法を教えていただけないでしょうか。よろしくお願いします。
/**
* 対象年月が変更された場合に日付テーブルを再作成
*
*/
(function(){
"use strict";
kintone.events.on(['app.record.create.change.年','app.record.create.change.月'],(event) => {
new kintone.Promise(function (resolve) {
resolve(doubleRecCheck(event));
});
return event;
});
})();
/**
* 年月レコードの存在チェック
*
*/
function doubleRecCheck(event) {
'use strict';
let rec = event.record;
if (rec) {
if (rec.技術者CD.value && rec.年.value && rec.月.value) {
let dobleCheck = rec.技術者CD.value + "_" + rec.年.value + "_" + rec.月.value;
let changeYear = rec.年.value;
let changeMonth = rec.月.value;
rec.基準日.value = changeYear + "-" + changeMonth + "-" + "1";
let appID = kintone.app.getId();
let setQuery = "重複チェック = \"" + dobleCheck + "\"";
let body = {
'app': appID,
'query': setQuery,
'fields': ['技術者', '年', '月', '重複チェック']
};
kintone.api(kintone.api.url('/k/v1/records', true), 'GET', body).then(function (resp) {
window.alert("レコード件数:" + resp.records.length);
if (resp.records.length > 0) {
window.alert(rec.技術者.value + "の" + rec.年.value + "年"
+ rec.月.value + "月の勤務実績は既に登録されています。");
event.error = rec.技術者.value + "の" + rec.年.value + "年"
+ rec.月.value + "月の勤務実績は既に登録されています。";
} else {
window.alert("技術者:" + rec.技術者.value + " 年:" + changeYear + " 月:" + changeMonth);
window.alert(rec.勤務実績.value.length);
tableCreate(rec,changeYear,changeMonth);
}
});
}
}
}
自己解決しました。以下の通り、kintone.app.record.get();やreturn eventの場所を変更すると動くようになりました。
/**
* 対象年月が変更された場合に日付テーブルを再作成
*
*/
(function(){
"use strict";
kintone.events.on(['app.record.create.change.技術者',
'app.record.create.change.年','app.record.create.change.月'],(event) => {
let rec = event.record;
if (rec.技術者CD.value && rec.年.value && rec.月.value) {
rec.重複チェック.value = rec.技術者CD.value + "_" + rec.年.value + "_" + rec.月.value;
let basicDate = new Date(rec.基準日.value);
let valueYear = basicDate.getFullYear();
let valueMonth = basicDate.getMonth() + 1;
// window.alert("valueYear:" + valueYear + " valueMonth:" + valueMonth);
new kintone.Promise(function (resolve) {
resolve(doubleRecCheck(rec,valueYear,valueMonth));
});
}
return event;
});
})();
/**
* 年月レコードの存在チェック
*
*/
function doubleRecCheck(rec,valueYear,valueMonth) {
'use strict';
if (rec) {
if (rec.技術者CD.value && rec.年.value && rec.月.value) {
let dobleCheck = rec.技術者CD.value + "_" + rec.年.value + "_" + rec.月.value;
let changeYear = rec.年.value;
let changeMonth = rec.月.value;
rec.基準日.value = changeYear + "-" + changeMonth + "-" + "1";
let appID = kintone.app.getId();
let setQuery = "重複チェック = \"" + dobleCheck + "\"";
let body = {
'app': appID,
'query': setQuery,
'fields': ['技術者', '年', '月', '重複チェック']
};
kintone.api(kintone.api.url('/k/v1/records', true), 'GET', body).then(function (resp) {
let rec1 = resp.records;
let event = kintone.app.record.get();
let rec2 = event.record;
if (rec1.length > 0) {
rec2.技術者.error = rec2.年.value + "年" + rec2.月.value + "月の勤務実績は既に登録されています。";
} else {
window.alert("技術者:" + rec.技術者.value + " 年:" + changeYear + " 月:" + changeMonth);
new kintone.Promise(function (resolve) {
resolve(tableRecreate(rec2,changeYear,changeMonth));
});
}
kintone.app.record.set(event);
return event;
});
}
// return event;
}
}