我在通过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
};
});发布于 2019-01-08 05:04:04
SS2.0中日期字段的setValue()需要一个JavaScript date对象作为值,而不是一个字符串。所以你可以这样做:
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]));
}发布于 2020-08-24 14:35:35
我在自定义记录的beforeSubmit事件中设置日期字段(使用Javascript date对象作为值),并且在CSV import Invalid date value (must be M/D/YYYY).中得到相同的错误
经过多次尝试和错误,我能够通过在setValue中添加ignoreFieldChange: true来设置Date值。
newRecord.setValue({ fieldId: key, value: new Date(), ignoreFieldChange: true });(请注意,当我使用CSV导入并在beforeSubmit UserEvent函数中设置日期字段导入自定义记录时,会收到此错误。)
https://stackoverflow.com/questions/54078588
复制相似问题