いつもお世話になっております。
本年もどうぞよろしくお願いいたします。
表題の件についてです。
「年2桁+月2桁+連番4桁」の計8桁になるような自動採番を行いたいと考えています。
https://cybozudev.zendesk.com/hc/ja/articles/201235480-%E5%B9%B4%E6%AC%A1%E3%81%94%E3%81%A8%E3%81%AE%E8%87%AA%E5%8B%95%E6%8E%A1%E7%95%AA%E3%82%92%E8%A1%8C%E3%81%86%E3%83%AF%E3%82%B6
https://www.joyzo.co.jp/blog/259
上記を参考に、年+月でカウントをリセットできるよう試行錯誤してみましたが、うまくいきません。
var maxNum = 0;
var date = new Date();
var year = date.getYear().toString().substr(1,2);
var month = date.getMonth() + 1;
var sch = year + (‘0’ + month).slice(-2);
var tmpNo = 0;
var query_string = ‘no like "’ + sch + ‘" order by no desc limit 1&fields[0]=no’;
var apiUrl = kintone.api.url(‘/k/v1/records’) + ‘?app=’ + appId + ‘&query=’ + encodeURI(query_string);
var obj = JSON.parse(xmlHttp.responseText);
if (obj.records[0] != null){
tmpNo = obj.records[0][‘no’].value.slice(-4);
window.alert(tempNo);
maxNum = parseInt(tmpNo);
}else{
maxNum = 0;
}
月の桁数を2桁にしようとsliceの記述を追加すると、queryでレコードが取得できなくなってしまいました。
(年+月で1件目は「16010001」のように発番されるが、2件目の登録時にも抽出結果が0件となってしまい、同じ「16010001」を発番しようとしてエラー)
データ形式が問題あるのかと、文字列と数字の変換を行ってみたりしたもののうまくいかず…
もっと根本的な間違いかと思い、質問させていただきました。
お手数をおかけいたしますが、ご教示のほどお願いいたします。
hasei さん
クエリはkintoneの検索条件そのものなのですが、こちらにもあるように解釈としては数字8桁が一単語扱いになってるため、意図通りの動きになってないのだと思います。
記載されているサンプルではこれを回避するために、「-」を入れて部分一致を取れるようにしています。
今回のケースですと、カウントアップするところを切り出すことが必要ですので、「16010001」を「16-01-0001」や「1601-0001」のようなフォーマットする必要があります。
haseiさん
cstapの瀧ヶ平です。
実際の運用にもよりますが、番号での検索がうまくいかないのであれば、queryを"order by 作成日時 desc limit 1"のようにして作成日時最新のレコードを取得し、そのレコードのnoフィールドの最初4桁が一致するかどうかによって当月最大番号が存在するかを確認するなどの方法でも対応できるかと思います。
Ryu Yamashitaさま、瀧ヶ平さま
早速のご回答ありがとうございました。
大変勉強になりました。
実はこの後の処理として、「Excelとkintoneを連携させよう」を参考としたEXCELへの取り込みを行いたいと考えています。
(発番した見積番号をkeyとして)
当初サンプル通り「1601-0001」のような「-」付きで処理していたところ、「-」が入るとEXCELがエラーとなったため、数字8桁で処理しようとしておりました。
上記の現象は、Yamashitaさまに記載いただいたkintoneの検索条件で紹介されている、「検索キーワードに関する注意」の記号部分で引っかかっている、という認識であっていますでしょうか?
だとすれば、瀧ヶ平さまにご教示いただいたような別条件で判定を行ったほうが良いのでしょうか。
度々申し訳ありませんが、どうぞよろしくお願いいたします。
haseiさん
> kintoneの検索条件で紹介されている、「検索キーワードに関する注意」の記号部分で引っかかっている、という認識であっていますでしょうか?
ご認識の通りです。前述させていただいた
>数字8桁が一単語扱い
がこれに値します。
瀧ヶ平さんの方法も良いですよね。ただ、Excel連携のエラーについてはそれはそれで問題な感じがします。また、若干話の腰を折りますが、今週末のアップデートでJSON厳格化が適用されますので、その辺合わせて確認するのも良いかもしれませんね。
Ryu Yamashitaさま
再度のご回答ありがとうございます。
結局、発番は「-」ありで処理し、内部処理用として数字8桁の数字も持たせ、Excelとの連携部分は数字8桁で処理を行う…という対応にすることにしました。
邪道な気はしますが、初心者の私にはひとまずこれが一番早いかなと。。
大変参考になりました。
また色々勉強します。