我看了一遍,但似乎无法找到如何使用Suitescript修改现有记录。基本上我希望能够在启动脚本的记录上设置一个字段。例如,当我查看自定义记录,潜在资源并保存它时,它会启动脚本(确实会发生);但是如何从启动脚本的记录中获取信息?
或者我是以错误的方式解决这个问题?
- 这就是我在.js中所拥有的
function getMaxEmployeeNumber(){
var record = nlapiLoadRecord(nlapiGetRecordType()), nlapiGetRecordId());
record.setFieldValue('Last Name', 'Set from script');
}
我不知道这是否有帮助,但在NetSuite中我做了以下事情: 1.创建一个名为“员工编号创建”的新用户事件脚本 2.创建一个脚本文件,其中包含一个函数(上图),并将其添加到我的脚本“Scripts”选项卡下。 3.创建适用于状态为“正在测试”且事件类型为“编辑”的自定义记录(潜在资源)的部署。
答案 0 :(得分:3)
有几种方法可以将脚本连接到"保存"一个记录。您可以使用客户端脚本附加到"保存记录"事件,它允许您验证记录并防止在必要时保存记录。
您还可以使用用户事件脚本并附加到"提交之前" event,您可以在记录到达数据库之前修改任何字段,或者在提交之后修改"提交后#34; event,您可以在将记录提交到数据库后对其他记录执行操作。
在任一脚本中,您都可以使用nlapiGetFieldValue
及相关函数从记录中的字段中检索信息,nlapiSetFieldValue
和相关函数将更新记录中的字段。
编辑:在NetSuite帮助中搜索"记录API"查看您可以使用的所有与记录相关的功能的文档。
答案 1 :(得分:0)
BeforeLoad适用于向表单添加自定义按钮等操作。当然,您不希望在将实际记录显示给用户之前更改它。
您的setFieldValue函数调用需要引用自定义记录上自定义字段的ID。这些字段称为" custrecord_whatever_you_named_it"。最佳做法是进入" _whatever"在创建自定义字段时在ID字段中。例如," _last_name"。如果您有一个包含此ID的字段,您的脚本将如下所示:
record.setFieldValue('custrecord_last_name', 'Set from script');
此外,如果您使用初始化值的用户事件脚本(如设置ID),则不需要加载记录。只需在BeforeLoad函数中使用它:
nlapiSetFieldValue('XXXXX', 'YYYYY');
答案 2 :(得分:0)
设置字段的方法很多。
对于客户端,您可以使用durectly nlapiSetFieldValue。
或者服务器,您可以通过rec = nlapiGetNewRecord或rec = nlapiLoadRecord加载记录,然后使用rec.setFieldValue,nlapiSubmit(rec)设置字段。
我发现在大多数情况下效果最好的是nlapiSubmitField,可以直接编辑。操作往往是失败的。
答案 3 :(得分:0)
您必须在修改后提交记录。您可以使用 nlapiSubmitRecord()
功能提交记录以下是示例代码。
function getMaxEmployeeNumber()
{
var record = nlapiLoadRecord(nlapiGetRecordType()), nlapiGetRecordId());
record.setFieldValue('Last Name', 'Set from script');
nlapiSubmitRecord(record, true);
}
答案 4 :(得分:0)
您错过了提交记录的原因,这就是您设置的值未反映的原因。
请参阅nlapiSubmitRecord()API
答案 5 :(得分:0)
var record = nlapiLoadRecord(nlapiGetRecordType()),nlapiGetRecordId());
这一行有一个额外的括号,甚至不会在不抛出错误的情况下执行。纠正它,并在完成后提交记录。
var record = nlapiLoadRecord(nlapiGetRecordType(),nlapiGetRecordId());