自動採番が反映されない

初めまして。

初心者なのでこちらをよく参考にさせていたいております。

以下のソースコードで自動採番をしました。(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.apiasync/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番から採番されました。

現アプリはまだ始動していませんが、試しでレコードを何行か作っていたのが問題なのかもしれません。

色々とご指導をいただきまして、ありがとうございました。

ご確認ありがとうございます。

解決に繋がり何よりです。