背景・実現したいこと
テーブル内に配置した日付選択について、新規作成時やレコード再利用時に、初期設定として申請日の翌月日付を表示させたいのですが、どこかが間違っているようでコード全体が動きません。(それぞれのフィールドコードが正しいことは確認できています。)お手数ですが、ご教授頂けますでしょうか。プログラミングド素人のため、説明が分かりにくい場合はご連絡頂ければと思います。
利用したソースコード
(function() {
“use strict”;
//PC版
//レコードの追加で適用する
var events = [‘app.record.create.show’];
kintone.events.on(events, function(event) {
var record = event.record;
// データ追加時時に申請日と支払期日に当日日付を入れる。
// レコードが再利用された時を考慮し、初期設定では無く本プログラムで
// 日付をセットする
//申請日には、フォームを追加もしくは再利用した当日日付を入れる
var dt = new Date();
dt = moment(dt).format(‘YYYY-MM-DD’);
record[‘SHINSEIBI’].value = dt;
//支払期日には月末日を入れる
//var dt = new Date();
//dt = moment(dt).endOf(‘month’).format(‘YYYY-MM-DD’);
//2020.7.27 支払期日のデフォルトを当月末日とする
dt = moment(dt).add(‘months’,0).endOf(‘month’).format(‘YYYY-MM-DD’);
record[‘KIJITSU’].value = dt;
//恐らく以下の2行が正しくないと思われます。
dt = moment(dt).add(‘months’,1).firstOf(‘month’).format(‘YYYY-MM-DD’);
tableRecords[‘SHUTOKU’].value = dt;
//2020.7.27 レコード追加(再利用時)に経理財務使用欄を初期化する
record[‘KEIRITANTO’].value = [];
record[‘KEIRISTATSU’].value = “”;
record[‘KEIRISHIHARAISTATUS’].value = “”;
record[‘KEIRIPAYDAY’].value = “”;
record[‘KEIRICOMMENT’].value = “”;
record[‘KEIRISHIHARAISAKIMEI’].value = “”;
record[‘KEIRI_SHIHARAI_CHECK’].value = “”;
return event;
});
})();
Hiroki Hosotani さん
こんにちは。mofuku です。
ソースコードを拝読したのですが、コメントアウトされている内容を読んでいると、
「支払期日」フィールドにレコードを追加した日またはレコードを再利用した日の日付を入れるのか、
もしくは当月末の日付を入れるのか、どちらかわからないなと思いました。
カスタマイズが初めてなのはわかりますが、アプリのフォームに設定したフィールドのうち、
今回質問したいする内容で使用するフィールドをわかりやすく書くと回答する人も理解しやすいと思います。
例えば、今回だと
やりたいこと・実現したいこと
- レコード追加画面、レコード再利用画面で「申請日」フィールド(フィールドタイプ: 日付)に入力されている値を利用して、
「支払期日」フィールド(フィールドタイプ: 日付)に翌月の日付をセットしたい
- 「支払期日」フィールドはテーブルの中に入っているフィールドです。テーブルのフィールドコードは「〇〇」です
のようなかたちで書くとわかりやすいのではないでしょうか(上記のやりたいことの認識が間違っていたらすみません)。
レコードの再利用については、レコード追加画面の表示後イベント の event オブジェクトのプロパティに
「reuse」という真偽値でレコードが再利用されているかどうかを判断できます。
そのため、reuse が true になる際の条件分岐を追加してみるといいのではないでしょうか。
また、コード全体が動かないということですが、
Google Chrome の開発者ツールなどを使ってコンソールにエラーメッセージなどは表示されていますか?
上記の記事にデバッグを行う際の流れなどが説明されているので参考にされるといいかと思います。
moment.js も利用しているかと思いますので、moment.js の URL がきちんと設定されているか、
moment.js の記述方法が合っているのか確認するのも一つの手だと思います。
kintone の日時フィールドを Moment.js でカスタマイズする
900241622243 さま
ご回答ならびにアドバイスいただきまして誠にありがとうございます。
色々トライしてみましたが、私が入力方法を間違っているからか動かないこともあり、再度説明も含めて質問させていただきます。m(__)m
【やりたいこと】
- レコード追加画面、レコード再利用画面で「申請日」フィールド(フィールドタイプ: 日付)に入力されている値を利用して、
「取得日」フィールド(フィールドタイプ: 日付)に翌月の月初の日付をセットしたい。例えば、申請日が2020/12/1だった場合、取得日は2021/1/1がデフォルトで表示されるようにしたいです。
- 「取得日」フィールドはテーブルの中に入っているフィールドです。テーブルのフィールドコードは「SHUTOKU」です。
- (テーブルのフィールドコードは「TABLE」となっております。)
その上で、上記に記載していますコードで、以下の部分が無い場合は、エラー無く動いているため、こちらに間違いがあることは間違いないと思っています。
dt = moment(dt).add(‘months’,1).firstOf(‘month’).format(‘YYYY-MM-DD’);
tableRecords[‘SHUTOKU’].value = dt;
お手数をおかけしますが、どうぞよろしくお願いいたします。