Suitescript修改当前记录

时间:2014-04-04 16:35:58

标签: netsuite

我看了一遍,但似乎无法找到如何使用Suitescript修改现有记录。基本上我希望能够在启动脚本的记录上设置一个字段。例如,当我查看自定义记录,潜在资源并保存它时,它会启动脚本(确实会发生);但是如何从启动脚本的记录中获取信息?

或者我是以错误的方式解决这个问题?

- 这就是我在.js中所拥有的

function getMaxEmployeeNumber(){
var record = nlapiLoadRecord(nlapiGetRecordType()), nlapiGetRecordId());
record.setFieldValue('Last Name', 'Set from script');
}

我不知道这是否有帮助,但在NetSuite中我做了以下事情: 1.创建一个名为“员工编号创建”的新用户事件脚本 2.创建一个脚本文件,其中包含一个函数(上图),并将其添加到我的脚本“Scripts”选项卡下。 3.创建适用于状态为“正在测试”且事件类型为“编辑”的自定义记录(潜在资源)的部署。

6 个答案:

答案 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());