初めまして。
初心者なのでこちらをよく参考にさせていたいております。
以下のソースコードで自動採番をしました。(300001~始まる6桁)
採番はできますが、見積番号(文字列(1行))に反映されません。
とても困っていますのでご教授いただければと思います。
(function() {
‘use strict’;
// レコード追加、編集画面の表示前処理
var eventsShow = [‘app.record.create.show’, ‘app.record.edit.show’, ‘app.record.index.edit.show’];
kintone.events.on(eventsShow, function(event) {
var record = event.record;
if ((‘app.record.create.show’).indexOf(event.type) >= 0) {
record.見積番号.value = ‘’;
}
record.見積番号.disabled = true;
return event;
});
// レコード追加画面の保存前処理
kintone.events.on(‘app.record.create.submit’, function(event) {
var recNo = 1;
var record = event.record;
// URLを設定する
var appUrl = kintone.api.url(‘/k/v1/records’, true) +
‘?app=’ + kintone.app.getId() + ‘&query=’ + encodeURI(‘limit 1&fields[0]=$id’);
var xmlHttp = new XMLHttpRequest();
// 同期リクエストを行う
xmlHttp.open(‘GET’, appUrl, false);
xmlHttp.setRequestHeader(‘X-Requested-With’, ‘XMLHttpRequest’);
xmlHttp.send(null);
if (xmlHttp.status === 200) {
if (window.JSON) {
var obj = JSON.parse(xmlHttp.responseText);
if (obj.records.length > 0) {
try {
recNo = parseInt(obj.records[0].$id.value, 10) + 1;
} catch (e) {
event.error = ‘番号が取得できません。’;
}
}
// 自動採番を番号に設定する
var autoEstNo = ‘3’ + (‘000000’ + recNo).slice(-5);
alert(‘見積番号 ’ + autoEstNo + ’ を登録します’);
record.見積番号.value = autoEstNo;
} else {
event.error = xmlHttp.statusText;
}
} else {
record.見積番号.error = ‘番号が取得できません。’;
}
return event;
});
})();
矢野 理子さん
こんにちは。
$id(レコード番号)で採番しているからだと思います。
以下のように見積番号に変えてみてください。
'?app=' + kintone.app.getId() + '&query=' + encodeURI('limit 1&fields[0]=見積番号');
recNo = parseInt(obj.records[0].見積番号.value, 10) + 1;
補足になりますが、JavaScriptに慣れてきましたら
XMLHttpRequestよりもkintone.apiとasync/awaitの組合せで記述することをおすすめします。
いずれも当サイトにサンプルコードがありますので、ご参照ください。
koichi 様
ご連絡いただきまして、ありがとうございます。
上記のコードに変更したところ、以下の表記になってしまいました。
原因がわからず、困っております。
ご教授いただければ幸いです。
コードの全体をもう一度見せていただけますか?
または、以下部分だけでも問題ございません。
var appUrl = kintone.api.url('/k/v1/records', true) + '?app=' + kintone.app.getId() + '&query=' + encodeURI('limit 1&fields[0]=見積番号');
if (obj.records.length > 0) {
try {
recNo = parseInt(obj.records[0].見積番号.value, 10) + 1;
} catch (e) {
event.error = '番号が取得できません。';
}
}
koichi 様
ご連絡ありがとうございます。
コードは以下の通りになります。
ご確認の程よろしくお願いいたします。
(function() {
'use strict';
// レコード追加、編集画面の表示前処理
var eventsShow = ['app.record.create.show', 'app.record.edit.show', 'app.record.index.edit.show'];
kintone.events.on(eventsShow, function(event) {
var record = event.record;
if (('app.record.create.show').indexOf(event.type) >= 0) {
record.見積番号.value = '';
}
record.見積番号.disabled = true;
return event;
});
// レコード追加画面の保存前処理
kintone.events.on('app.record.create.submit', function(event) {
var recNo = 1;
var record = event.record;
// URLを設定する
var appUrl = kintone.api.url('/k/v1/records', true) +
'?app=' + kintone.app.getId() + '&query=' + encodeURI('limit 1&fields[0]=見積番号');
var xmlHttp = new XMLHttpRequest();
// 同期リクエストを行う
xmlHttp.open('GET', appUrl, false);
xmlHttp.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
xmlHttp.send(null);
if (xmlHttp.status === 200) {
if (window.JSON) {
var obj = JSON.parse(xmlHttp.responseText);
if (obj.records.length > 0) {
try {
recNo = parseInt(obj.records[0].見積番号.value, 10) + 1;
} catch (e) {
event.error = '番号が取得できません。';
}
}
// 自動採番を番号に設定する
var autoEstNo = '3' + ('000000' + recNo).slice(-5);
alert('見積番号 ' + autoEstNo + ' を登録します');
record.見積番号.value = autoEstNo;
} else {
event.error = xmlHttp.statusText;
}
} else {
record.見積番号.error = '番号が取得できません。';
}
return event;
});
})();
ありがとうございます。
私の環境では問題なく300001から採番されるのですが
アプリ内のレコードが0件の状態から行って、そちらの症状が出ますか?
また、ソースコードの文字コードが「UTF-8」になっていることも合わせてご確認ください。
koichi 様
ご連絡ありがとうございます。
新しくアプリをつくるから他のアプリを再利用し、試してみたところ300001番から採番されました。
現アプリはまだ始動していませんが、試しでレコードを何行か作っていたのが問題なのかもしれません。
色々とご指導をいただきまして、ありがとうございました。