function checkUserIfMember(){
var user = nlapiGetUser();
filters = new Array(),
columns = new Array(),
searchresults = new Array();
filters[0] = new nlobjSearchFilter('internalid', null, 'is', 14703); //internal id of the static Group
filters[1] = new nlobjSearchFilter('internalid', 'groupmember', 'is', user);
columns[0] = new nlobjSearchColumn('internalid', 'groupmember' ); // Member Id
try {
// Check for user
searchresults = nlapiSearchRecord('entitygroup', null, filters, columns);
// Return true if we have results
if (searchresults){
return 'T';
}
} catch (e) {
nlapiLogExecution('DEBUG', e.name, e.message);
return 'F';
}
return 'F';
}
函数 checkUserIfMember
用于检查当前登录的用户是否是某个特定组(通过其 internalid
识别)中的成员。下面是代码逐步的中文解释:
-
获取当前用户的ID:
var user = nlapiGetUser();
这一行通过
nlapiGetUser()
获取当前登录用户的内部ID。 -
初始化搜索条件和列:
filters = new Array(), columns = new Array(), searchresults = new Array();
这几行初始化了存储搜索过滤条件、列和搜索结果的数组。
-
设置搜索条件:
- 第一个过滤器检查的是
internalid
为14703
的组。 - 第二个过滤器检查用户是否为该组的成员,
'groupmember'
表示用户是该组的成员,'is'
表示匹配当前用户。
- 第一个过滤器检查的是
-
设置要返回的列:
columns[0] = new nlobjSearchColumn('internalid', 'groupmember'); //成员ID列
设置返回搜索结果时,显示成员的
internalid
(即成员ID)。 -
执行搜索并处理结果:
try { searchresults = nlapiSearchRecord('entitygroup', null, filters, columns); if (searchresults){ return 'T'; } } catch (e) { nlapiLogExecution('DEBUG', e.name, e.message); return 'F'; } return 'F';
- 使用
nlapiSearchRecord
执行实体组的搜索,返回符合条件的记录(即当前用户是否是组内成员)。 - 如果有结果,返回
'T'
,表示用户是该组的成员。 - 如果没有结果,或者出现错误,捕获异常并返回
'F'
,表示用户不是该组的成员。
- 使用
总结:
这个函数检查当前用户是否属于ID为 14703
的组,返回 'T'
(是成员)或 'F'
(不是成员)。