首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在netsuite中用Suitescript2.0设置RESTlet的日期

如何在netsuite中用Suitescript2.0设置RESTlet的日期
EN

Stack Overflow用户
提问于 2019-01-08 00:55:01
回答 2查看 4K关注 0票数 4

我在通过RESTlet创建电话呼叫活动时遇到错误,即使我发送了正确的格式。

代码语言:javascript
复制
Invalid date value (must be M/D/YYYY)

它在Suitescript 1.0中运行良好。电话呼叫有许多标准的日期字段,也可以有自定义的日期字段。

如果需要在Restlet中将这些日期字段转换为可接受的格式,则需要标识所有日期和时间类型字段。

有没有其他方法可以继续下去呢?

JSON

代码语言:javascript
复制
{
    "title":"test",
    "startdate":"01/08/2019",
    "resourceType":"phonecall"
}

它在suitescript 1.0中运行良好

代码语言:javascript
复制
function post(datain) {
          var record = nlapiCreateRecord(datain.resourceType);
          for (var fieldname in datain) {
              if (datain.hasOwnProperty(fieldname)) {
                  if (fieldname != 'resourceType' && fieldname != 'id') {
                      var value = datain[fieldname];
                      record.setFieldValue(fieldname, value);
                  }
              }
          }
          var recordId = nlapiSubmitRecord(record);
          nlapiLogExecution('DEBUG', 'id=' + recordId);
          var nlobj = nlapiLoadRecord(datain.resourceType, recordId);
          return nlobj;
}

不能在Suitescript 2.0中工作

代码语言:javascript
复制
/**
 *@NApiVersion 2.x
 *@NScriptType Restlet
 */

define(['N/record'],function(record) {
        function post(context) {
            var resourceType = context.resourceType
            delete context.resourceType
            var objectRecord = record.create({
                type: resourceType
            });

            for (var fldName in context) {
                if (context.hasOwnProperty(fldName)) {
                    objectRecord.setValue(fldName, context[fldName]);
                }
            }
            var createdId = objectRecord.save({});
            return getById(resourceType, createdId);
        }

        function getById(resourceType, recordId) {
            if (recordId != undefined) {
                var response = record.load({
                    type: resourceType,
                    id: recordId
                });

                return response;
            }
        }
        return {
          post: post
        };
    });
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-08 05:04:04

SS2.0中日期字段的setValue()需要一个JavaScript date对象作为值,而不是一个字符串。所以你可以这样做:

代码语言:javascript
复制
for (var fldName in context) {
  if (context.hasOwnProperty(fldName)) {
    if (fldName === 'startdate') {
      objectRecord.setValue(fldname, new Date(context[fldName]));
    }
    objectRecord.setValue(fldName, context[fldName]);
  }
}

看起来您正在尝试创建一个通用的记录更新API,因此可以检查字段名称是否“包含”日期,然后转换它。

代码语言:javascript
复制
if (fldName.indexOf('date') >= 0) {
  objectRecord.setValue(fldname, new Date(context[fldName]));
}

编辑:您可以在设置值之前执行一些字段类型检测:

代码语言:javascript
复制
var field = objectRecord.getField{ fieldId: fldName });
if (field.type === 'date') {
  objectRecord.setValue(fldName, new Date(context[fldName]));
}
票数 10
EN

Stack Overflow用户

发布于 2020-08-24 14:35:35

我在自定义记录的beforeSubmit事件中设置日期字段(使用Javascript date对象作为值),并且在CSV import Invalid date value (must be M/D/YYYY).中得到相同的错误

经过多次尝试和错误,我能够通过在setValue中添加ignoreFieldChange: true来设置Date值。

代码语言:javascript
复制
newRecord.setValue({ fieldId: key, value: new Date(), ignoreFieldChange: true });

(请注意,当我使用CSV导入并在beforeSubmit UserEvent函数中设置日期字段导入自定义记录时,会收到此错误。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54078588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档