1

我想知道如果不允许他们查看成本,是否有人知道从某些 Netsuite 角色中隐藏某些字段(例如成本)的方法。

我可以防止用户在 PostSourcing 和 validateline 等期间使用nlapiDisableLineItemField更改销售价格...

但是对于成本字段,如果用户没有 COST 访问权限,我想隐藏它们。我意识到我可以通过创建一个不包含成本的单独表单来做到这一点,但是如果我可以通过脚本隐藏信息,这意味着我在考虑其他事情时可以减少重复工作。

4

2 回答 2

2

您可以使用 abeforeLoad userevent script来隐藏正文级别字段(但是,不能对行项目字段执行相同操作,因为 nlobjform 上没有任何 API 允许这样做。对于子列表/行项目字段,您必须编写一个客户端脚本验证或从表单中删除该字段,就像您在问题中提到的那样)。

在您加载用户事件脚本之前,您可以访问表单,然后使用类似下面的内容来隐藏正文级别的字段。

function beforeLoadEntryFunction(type, form)
{
  if(nlapiGetRole() === 'NON_ACCESSIBLE_ROLE_ID'){
   form.getField(YOUR_BODY_FIELD_ID).setDisplayType('hidden');
  }
}

编辑:对于 sublist/lineitem 字段创建一个client script代码为

function clientScriptEntryFunction(type, form)
    {
      if(nlapiGetRole() === 'NON_ACCESSIBLE_ROLE_ID'){
       form.getField(YOUR_BODY_FIELD_ID).setDisplayType('hidden');
       nlapiDisableLineItemField(SUBLIST_ID, LINE_FIELD_ID);
      }
    }

并且在 before load user event使用form.setScript(YOUR_CLIENT_SCRIPT_ID)中,因为您已经可以访问表单对象。

请记住,客户端脚本应该是全局客户端脚本

于 2015-10-23T06:11:35.423 回答
0

如果您的目的纯粹是为了美观,您可以执行客户端 onLoad 脚本并通过 jQuery 隐藏字段,您可以按名称进行选择,即使版本升级也不会改变。

jQuery 库包含在 NetSuite 中。

于 2015-10-23T06:08:12.233 回答