输入日期并尝试保存记录时出现错误消息 "cannot find function getFullYear(...)"

Error message "cannot find function getFullYear(...)" when entering date and trying to save the record

我们正尝试在 RESTLet 中从 NetSuite 项目需求计划访问子列表“demandplandetail”。一切顺利,直到某一点。我们能够加载它并处理 2020 年的需求计划。但是,这里令人沮丧。

我们知道(从 NetSuite 可以看到)也有 2021 年的数据。但是,从 SuiteScript 访问它似乎非常困难。

第一个解决方案)物料需求计划有字段“年”。好的,只需将其设置为 2021,保存并重新加载记录。结果:忽略保存,年份仍然是 2020。

第二个解决方案)使用 Date 对象设置年份,如:

var demandPlan = record.load(...)
var d = new Date();
    demandPlan.setValue({
    fieldId: 'year',
    value: d
});

给出以下内容: :"TypeError: Cannot find function getFullYear in object NaN. (NLRecordScripting.scriptInit$lib#59)","stack":["setDatesForMonthAndYear(NLRecordScripting.scriptInit:108)","anonymous(N/serverRecordService)"

关于保存记录。我也使用符合可接受日期格式的(各种)字符串(如“1/1/2021”)得到相同的结果。我还尝试了格式包给我一个日期字符串 -> 相同的结果。

另请阅读您可能需要在记录中设置开始日期(字段 'startdate')的地方。尝试了几种变体,但它顽固地拒绝了:(。

想知道是否有人见过类似的东西?

此致, 托尼

您好,请尝试下面的代码,同时检查您是否将日期对象传递给字段而不是日期字符串。

    function formatDate() {
        
        var dateROBD = format.parse({
            value: new Date(),
            type: format.Type.DATE
        });
        
        // this line optional if you want to try with or else ignore this
        dateROBD = convertUTCDateToLocalDate(new Date(dateROBD));

        return dateROBD;
    }

    function convertUTCDateToLocalDate(date) {
        var newDate = new Date(date.getTime() + date.getTimezoneOffset() * 60 * 1000);

        var offset = date.getTimezoneOffset() / 60;
        var hours = date.getHours();

        newDate.setHours(hours - offset);

        return newDate;
    }

好的,谜底解开了。事实证明,这在 SuiteScript 2.0 中不受支持,但您需要使用 1.0.