Suitescript - 在销售订单/发票输入期间隐藏行字段

时间:2015-10-23 04:34:37

标签: netsuite suitescript

我想知道是否有人知道某些Netsuite角色的某些字段(例如费用)如果不允许他们看到费用的话。

在PostSourcing和validateline等期间,我可以阻止用户在没有 nlapiDisableLineItemField 的适当权限的情况下更改卖价......

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

2 个答案:

答案 0 :(得分:2)

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

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

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

编辑: 对于子列表/ 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),因为您已经可以访问表单对象。

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

答案 1 :(得分:0)

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

jQuery库包含在NetSuite中。