如何使用suitescript在netsuite中设置日期/时间字段

时间:2015-07-20 14:13:37

标签: javascript netsuite

var curRate = nlapiCreateRecord("customrecord_currency_exchange_rates",{recordmode: 'dynamic'});
        serverDt = "09/25/2013 06:00:01 am"
        var timezone = compConf.getFieldText('timezone');
        curRate.setDateTimeValue('custrecord_effective_date' ,serverDt ,timezone);


        nlapiSubmitRecord(curRate);

您好我尝试设置custrecord_effective_date字段,这是一个日期/时间类型。但执行后它会给出一个错误。 如何设置此字段?

感谢您的帮助。

INVALID_FLD_VALUE您为以下字段输入了无效字段值09/25/2013 06:00:01:custrecord_effective_date

7 个答案:

答案 0 :(得分:4)

虽然这是一篇旧帖子,而原始问题是关于SuiteScript 1.0的,但是我遇到了这个页面,它在日期/时间字段中查找了相同的INVALID_FLD_VALUE错误,但在SuiteScript 2.0中,由于解决方案最终变得与众不同,我想要分享给未来的读者。

在SuiteScript 2.0中,设置日期/时间字段只需要一个JavaScript日期对象。以下是提交前用户事件上下文中的示例。

context.newRecord.setValue({
    fieldId : 'custrecord_myfield',
    value : new Date()
});

答案 1 :(得分:1)

您好,感谢您在发布问题后,我检查了记录类型的表格以及当我检查字段' custrecord_effective_date'我注意到日期格式必须是' DD / MM / YYYY HH:MM:SS'所以当我改变它的时候。

答案 2 :(得分:1)

如果查看NetSuite WSDL文件,您将找到dateTime声明:

<xs:simpleType name="dateTime" id="dateTime">
<xs:documentation
    source="http://www.w3.org/TR/xmlschema-2/#dateTime"/>

转到网址并查看来源:

3.2.7 dateTime

[定义:] dateTime值可以被视为具有整数值年,月,日,小时和分钟属性,十进制值第二属性和布尔时间索引属性的对象。每个这样的对象也有一个十进制值的方法或计算属性timeOnTimeline,其值始终是十进制数;值的大小以秒为单位,整数0为0001-01-01T00:00:00 ...

所以你要找的格式是:

2013-09-25T06:00:01

我只是将dateTime推送到NetSuite并且它有效。

答案 3 :(得分:1)

使用SuiteScript 2.O设置日期/时间字段值。

  1. 首次使用&N;格式&#39;模块和&#39; N /记录&#39;模块。

  2. 创建一个普通的Javascript日期对象。

  3. 将Date对象格式化为DateTime对象。

  4. 并使用Record.setValue()方法设置日期时间值。

  5. 示例:

         var d = new Date();
         var formattedDateString = format.format({
                            value: d,
                            type: format.Type.DATETIMETZ
                            });
    
       record.setValue('yourDateTimeFieldId',formattedDateString );
    

答案 4 :(得分:0)

代码看起来不错 日期字段是否有任何限制,以便您不能在过去设置日期? 您的serverDt也是与Netsuite帮助相同的值。它干净地复制了吗?如果您剪切该字符串并直接键入它会发生什么?

最后你确定你有一个日期时间字段而不是日期字段。如果我将您的代码应用于日期字段,我会得到相同的错误。

答案 5 :(得分:0)

现有的ans几乎没有。 错误类型 -

type: "error.SuiteScriptError",
name: "INVALID_FLD_VALUE",
message: "You have entered an Invalid Field Value 2017-07-13T08:21:12.411Z for the following field: custrecord_lastrundate",

需要将该值设置为java脚本date()对象。即使简单相同的js date字符串也会抛出错误。如果你正在使用时间,那么下面的代码将完美地工作。下个天添加的示例。

var now = moment();
now.add(1,'days')
fetchRecord.setValue({
   fieldId : 'custrecord_lastrundate' ,
    value : new Date(now),
    ignoreFieldChange : true
});

答案 6 :(得分:0)

将N / format导入到脚本中,并使用以下一种日期格式类型:

日期

DATETIME

DATETIMETZ

{{1}}