为所有记录获取字段的最大价值

时间:2014-03-31 19:45:58

标签: netsuite

对于NetSuite中的员工记录,我们有一个名为“员工编号”的自定义字段,其ID为custentity1。我已经创建了一个工作流程,它将自动创建一个新的员工记录并填充各个字段,但我遇到困难的是Employee Number字段。我想要做的就是从所有员工记录中获取最大的员工编号,并为新员工记录添加一个。

“员工编号”字段是一个自由格式的文本字段,因此我知道我必须使用TO_NUMBER,但无论何时我尝试引用{custentity1}我都会收到错误消息,说明该字段不是找到。

更新:我为员工记录创建了一个名为“员工编号”的新自定义字段ID为custentity_employeenumber。我还创建了一个包含以下内容的javascript文件:

function getMaxEmployeeNumber(){
   var empNumber = nlobjSearchColumn('custentity_employeenumber', null, 'max');
   return empNumber;
}

但是我怎么做才能使用我的记录?

3 个答案:

答案 0 :(得分:1)

NetSuite确实有一个内置于其原生功能的自动编号机制,我们的大多数客户都是为了这个目的而使用的。这个功能没有被利用的特殊原因吗?可以通过设置>访问此功能。 公司> 自动生成的号码

我对工作流程的工作量不大,所以我不知道是否可以使用相同的功能,但这是我在SuiteScript中解决这个问题的方法:

  1. 创建在“提交客户记录前提交事件”
  2. 上执行的用户事件脚本
  3. 创建一个客户搜索,其中custentity1的搜索列的摘要类型为max

    new nlobjSearchColumn('custentity1', null, 'max');

  4. 运行此搜索应该会给出1个结果,即最大客户编号。然后你可以只添加1。

  5. 您可以在用户界面中创建类似的已保存搜索,以查看结果集的外观。

    只有当字段是数字而不是文本时,这才会真正起作用。如果您知道它将始终是一个数字,我建议将该字段更改为Integer字段。这可能会清除现有数据,因此首先您可以将所有客户及其编号导出到Excel,然后在更改字段后执行CSV导入。

答案 1 :(得分:0)

您是如何在工作流程中寻找最后一名员工的?

我知道这可以在js中完成:

  • 搜索员工 - 返回最多1000

  • 因为员工人数给了我最后一个的custentity1 - nlapiLookupfield('员工'员工[employees.length],' custentity1')

  • 添加+1并保存在新记录中

答案 2 :(得分:0)

如果您使用此搜索列

nlobjSearchColumn(' custentity1',null,' max');

您还可以按递减值对其进行排序,以便第一个结果始终为最大值。像

这样的东西

nlobjSearchColumn(' custentity1',null,' max')。setSort(true);