通过RESTlet创建电话通话活动时出现错误,即使我发送正确的格式也是如此。
Invalid date value (must be M/D/YYYY)
它在Suitescript 1.0中正常工作。电话具有许多标准日期字段,也可以具有自定义日期字段。
如果需要在Restlet中将这些日期字段转换为可接受的格式,则需要标识所有日期和时间类型字段。
还有其他方法可以进行吗?
JSON格式
{
    "title":"test",
    "startdate":"01/08/2019",
    "resourceType":"phonecall"
}
在suitescript 1.0中工作正常
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中不起作用
/**
 *@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
        };
    });
setValue()SS2.0中的日期字段需要一个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,因此也许要检查一下字段名称是否包含日期,然后进行转换。
if (fldName.indexOf('date') >= 0) {
  objectRecord.setValue(fldname, new Date(context[fldName]));
}
编辑:您可以在设置值之前进行一些字段类型检测:
var field = objectRecord.getField{ fieldId: fldName });
if (field.type === 'date') {
  objectRecord.setValue(fldName, new Date(context[fldName]));
}
| 归档时间: | 
 | 
| 查看次数: | 872 次 | 
| 最近记录: |