Suitescript - 在销售 Order/Invoice 条目期间隐藏行字段
Suitescript - Hiding line fields during Sales Order/Invoice entry
我想知道是否有人知道在某些 Netsuite 角色不允许查看成本的情况下隐藏某些字段(例如成本)的方法。
我可以在 PostSourcing 和 validateline 等期间使用 nlapiDisableLineItemField 防止用户在未经适当授权的情况下更改售价...
但是对于成本字段,如果用户没有成本访问权限,我想隐藏它们。我意识到我可以通过创建一个不包括成本的单独表格来做到这一点,但如果我可以通过脚本隐藏信息,这意味着我在考虑其他事情时可以减少重复工作。
如果您的目的纯粹是为了美观,您可以执行客户端 onLoad 脚本并通过 jQuery 隐藏字段,您可以按名称执行 select,即使在版本上也不会更改升级。
jQuery 库包含在 NetSuite 中。
您可以使用 beforeLoad userevent script
来隐藏正文级别字段(但是,无法对行项目字段执行相同操作,因为 nlobjform 上没有任何 API 允许那。对于 sublist/lineitem 字段,您将必须编写客户端脚本验证或从表单中删除该字段,就像您在问题中提到的那样)。
在你的 beforeload 用户事件脚本中,你可以访问表单,然后使用类似下面的东西来隐藏正文级别的字段。
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)
,因为您已经可以访问表单对象。
记住,客户端脚本应该是全局客户端脚本
我想知道是否有人知道在某些 Netsuite 角色不允许查看成本的情况下隐藏某些字段(例如成本)的方法。
我可以在 PostSourcing 和 validateline 等期间使用 nlapiDisableLineItemField 防止用户在未经适当授权的情况下更改售价...
但是对于成本字段,如果用户没有成本访问权限,我想隐藏它们。我意识到我可以通过创建一个不包括成本的单独表格来做到这一点,但如果我可以通过脚本隐藏信息,这意味着我在考虑其他事情时可以减少重复工作。
如果您的目的纯粹是为了美观,您可以执行客户端 onLoad 脚本并通过 jQuery 隐藏字段,您可以按名称执行 select,即使在版本上也不会更改升级。
jQuery 库包含在 NetSuite 中。
您可以使用 beforeLoad userevent script
来隐藏正文级别字段(但是,无法对行项目字段执行相同操作,因为 nlobjform 上没有任何 API 允许那。对于 sublist/lineitem 字段,您将必须编写客户端脚本验证或从表单中删除该字段,就像您在问题中提到的那样)。
在你的 beforeload 用户事件脚本中,你可以访问表单,然后使用类似下面的东西来隐藏正文级别的字段。
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)
,因为您已经可以访问表单对象。
记住,客户端脚本应该是全局客户端脚本