使用方法 | 详细解释 |
---|---|
显示当前人员的数据,以及当前人员所在部门的数据 | |
使用解释 | 使用GetChildrenNoLeaf()。注意这种情况[CurrentUserID]和[CurrentPartID]系统都已自动在外面替换了。 |
语法格式 | `所属人员列='[CurrentUserID]' or 所属部门列 in (GetChildrenNoLeaf([CurrentPartID]))` |
系统执行 | GetChildrenNoLeaf函数将被系统引擎自动按传入的[CurrentPartID]解析为其下所有非叶子节点集合,使用英文逗号分割。 |
存在问题 | 这个形式效果并不好,因为[CurrentPartID]在外部传入的是当前用户所在部门,并没有挂钩处理数据范围。 |
设置了数据范围,按数据范围执行, 未设数据范围按人员个体执行 | |
使用解释 | 和报表SQL逻辑一样使用数据范围, 并在数据范围和当前人员之间进行权限取舍。 |
语法格式 | `所属人员列='[AgentLeafKey]' and 所属部门列 in ([AgentFatherKey])` |
系统执行 | 当存在数据范围时,[AgentFatherKey]将被系统引擎自动按数据范围,解析为数据范围其下所有非叶子节点集合,英文逗号分割。并忽略人员个体查询分支,最终得到:1=1 and 所属部门列 in (34,45,675,4566) 这样的形式,从而按数据范围筛选数据。 当不存在数据范围时,[AgentFatherKey]分支将被忽略。[AgentLeafKey]将被替换为当前用户的OLAPKey。最终得到:所属人员列='475' and 1=1 这样的形式,从而按当前人员筛选数据。 |
存在问题 | 如果当前人员设定了数据范围,但同时当前人员没有处在这个范围内,按上述逻辑,前面的所属人员列='[AgentLeafKey]分支将被替换成1=1,从而无法显示这个人员自己的数据。解决这个问题,请看下面支持的第3个形式。 |
把上面两者结合起来,即可以看到自己的数据,也可以看到其他数据。如设置了数据范围,按数据范围执行 | |
使用解释 | 语法上综合上述两者。 |
语法格式 | `所属人员列='[CurrentUserID] or ( 所属人员列='[AgentLeafKey]' and 所属部门列 in ([AgentFatherKey]) )` |
系统执行 | 见上面两者的系统执行。 |
存在问题 | 注意上面的( 所属人员列='[AgentLeafKey]' and 所属部门列 in ([AgentFatherKey]) )整体和前面的分支之间是or的关系。因为目前核心引擎有BUG,注意看( 所属人员列='[AgentLeafKey]' and 所属部门列 in ([AgentFatherKey]) ),前后括号里面是需要加一个空格的,否则系统无法正确识别。 同样由于系统引擎BUG,FatherKey in ( [AgentFatherKey] )这样写是不可以的,这里面的括号前后不能加空格。FatherKey in ([AgentFatherKey]) and AgentKey='[AgentLeafKey]'这样写也是不可以的。即不能随意调换顺序。 因此上述用法,必须严格按上述样式填写才能保证正确解析执行。 |
把上面两者另一种组合方式,总可以看到自己所在部门的数据,其他数据如设置了数据范围按数据范围 | |
使用解释 | 语法上综合上述两者。 |
语法格式 | `所属部门列 in (GetChildrenNoLeaf([CurrentPartID])) or ( 所属人员列='[AgentLeafKey]' and 所属部门列 in ([AgentFatherKey]) )` |
系统执行 | 见上面两者的系统执行。 |
存在问题 | 注意上面的( 所属人员列='[AgentLeafKey]' and 所属部门列 in ([AgentFatherKey]) )整体和前面的分支之间是or的关系。因为目前核心引擎有BUG,注意看( 所属人员列='[AgentLeafKey]' and 所属部门列 in ([AgentFatherKey]) ),前后括号里面是需要加一个空格的,否则系统无法正确识别。 同样由于系统引擎BUG,FatherKey in ( [AgentFatherKey] )这样写是不可以的,这里面的括号前后不能加空格。FatherKey in ([AgentFatherKey]) and AgentKey='[AgentLeafKey]'这样写也是不可以的。即不能随意调换顺序。 因此上述用法,必须严格按上述样式填写才能保证正确解析执行。 |
传入参数表示人力档案中的字段来筛选数据 | |
使用解释 | 系统支持自动解析字段。注意仅支持人力档案。 |
语法格式 | `查询列='[Current_Chose1Key]'` |
系统执行 | 系统会在人力档案中查找Chose1Key进行替换。 |
存在问题 | 这并挂钩数据范围。当然也可以按上述3那样,把这个用法和上面的用法组合起来。 |
数据范围位置 | 详细解释 |
---|---|
看板的数据范围 | 看板中具体图、表的SQL中要添加数据范围处理。 系统会自动处理看板里面的每一个表、图,将当前用户的数据范围,传递到其SQL里面,使其数据范围生效。(看板上的表、图是否本身带有部门查询,无关紧要,看板本身查询条是否带有部门查询,无关紧要)。 |
独立报表的数据范围 | SQL中要添加数据范围处理。 独立显示一个报表时,系统会自动将当前用户的数据范围,传递到其SQL里面,使其数据范围生效的。(报表是否本身带有部门查询,无关紧要) |