输入日期并尝试保存记录时出现错误消息“找不到函数getFullYear...”

问题描述

我们正在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。