• 数据范围
    • 概念定义
    • 语法列表

什么是数据范围

数据范围

  1. 数据范围:是指一个账号(用户),能在公司组织架构树形图,浏览节点的数据范围。

数据范围列表

  1. 关于事实表、档案表、单据的数据范围:
使用方法 详细解释
显示当前人员的数据,以及当前人员所在部门的数据
使用解释 使用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那样,把这个用法和上面的用法组合起来。
  1. 关于看板、图形、报表的数据范围:
数据范围位置 详细解释
看板的数据范围 看板中具体图、表的SQL中要添加数据范围处理。
系统会自动处理看板里面的每一个表、图,将当前用户的数据范围,传递到其SQL里面,使其数据范围生效。(看板上的表、图是否本身带有部门查询,无关紧要,看板本身查询条是否带有部门查询,无关紧要)。
独立报表的数据范围 SQL中要添加数据范围处理。
独立显示一个报表时,系统会自动将当前用户的数据范围,传递到其SQL里面,使其数据范围生效的。(报表是否本身带有部门查询,无关紧要)