权限级别

权限级别(Perm Level),是 ERPNext 和 Frappe 中的字段级权限系统。它允许管理员控制 DocType 中敏感字段的访问权限,而无需隐藏或限制整个文档。

权限级别控制什么

DocType 中的每个字段都有一个权限级别。默认情况下,字段的权限级别为0。级别为 0 的字段受 DocType 的常规权限控制。

当字段被分配了更高的权限级别,例如12时,用户需要在角色权限管理器中拥有该级别的匹配权限行。如果没有匹配的权限,用户可能仍然可以打开文档,但根据配置的权限,高级别字段可能被隐藏或设为只读。

权限级别的用途

当大多数用户需要处理文档,但只有部分用户应查看或编辑敏感信息时,权限级别非常有用。这避免了为保护少数几个字段而创建单独的 DocType 或自定义工作流。

  • 销售: 销售用户可以创建报价单,而只有经理可以编辑折扣审批字段。
  • 人力资源: 人力资源用户可以查看员工记录,而薪资详情仅对薪资角色可用。
  • 财务: 用户可以查看供应商发票,而银行或税务相关字段仅限于财务经理访问。
  • 支持: 支持用户可以更新工单详情,而内部升级备注仅对高级用户可见。

权限级别如何工作

  1. 在 DocType 或自定义表单中为字段分配一个权限级别。
  2. 使用角色权限管理器定义每个角色在每个权限级别可以执行的操作。
  3. 当用户打开文档时,ERPNext 会检查用户的角色以及每个字段的权限级别。
  4. 如果用户拥有该字段权限级别的权限,则根据允许的操作(如读取或写入)提供该字段。
  5. 如果用户没有该权限级别的权限,即使该用户可以访问文档本身,该字段也会受到限制。

示例

假设一个销售订单包含以下字段:

  • 客户 权限级别为 0
  • 项目 权限级别为 0
  • 交货日期 权限级别为 0
  • 已批准折扣 权限级别为 1
  • 管理层备注 权限级别为 2

仅拥有级别 0 权限的销售用户可以使用常规的销售订单字段。拥有级别 1 权限的销售经理还可以读取或更新“已批准折扣”字段。拥有级别 2 权限的销售总监也可以访问“管理层备注”。

权限级别与角色权限管理器

只有当权限级别与角色权限配对时,它们才变得有用。在角色权限管理器中,每个权限行都有一个级别值。该值必须与字段的权限级别匹配。

例如,如果某个字段设置为权限级别 1,则该角色需要在该 DocType 上拥有级别 1 的权限行。然后,该行可以根据 DocType 和业务需求允许执行读取、写入、创建、提交、取消或修改等操作。

良好实践

  • 将大多数字段保持在权限级别 0。
  • 仅对确实需要额外控制的字段使用更高的权限级别。
  • 使用清晰的字段标签,以便在配置期间轻松识别受限制的字段。
  • 在依赖设置之前,使用非管理员用户测试权限。
  • 避免创建过多级别,因为权限规则可能难以审计。
  • 记录每个受限制字段被分配更高权限级别的原因。

常见错误

  • 将字段设置为级别 1,但未添加级别 1 的角色权限: 用户可能会意外失去对该字段的访问权限。
  • 认为文档访问权限意味着字段访问权限: 用户可以访问文档,但仍可能无法访问更高级别的字段。
  • 使用权限级别代替工作流审批: 权限级别控制字段访问。它们不能替代需要业务流程控制时的审批工作流。
  • 仅以管理员身份测试: 管理员访问权限可能隐藏权限问题。始终使用目标角色进行测试。
  • 用户与权限
  • 角色权限管理器
  • DocType 权限
  • 自定义表单

修改现有用户的邮箱或重命名用户

用户 ID 是根据电子邮件地址创建的。当用户被重命名时,其值会在所有现有记录(包括变更日志)中更新。因此,这是一个资源密集型操作。如果在重命名用户时遇到超时问题,可以考虑使用更新后的电子邮件地址创建一个新的用户 ID,并禁用旧用户。

如果您需要更改用户的电子邮件地址或用户名,请使用 ERPNext 内置的重命名工具。这会在所有关联记录中更新用户的唯一 ID,同时保留分配、权限和历史数据。

要更改用户的电子邮件 ID,请按照以下步骤操作:

用户列表 -> 打开用户 > 点击菜单 -> 重命名 > 输入新的电子邮件 ID。保存

前提条件

您必须拥有管理员权限才能重命名用户。

步骤

  1. 转到设置 > 用户和权限 > 用户
  2. 打开您想要重命名的用户。
  3. 点击表单右上角的菜单 (⋮)。
  4. 选择重命名
  5. 输入新的电子邮件地址或用户名。
  6. 点击保存

重命名后会发生什么?

ERPNext 会自动更新系统中所有对该用户的引用。这确保了:

  • 现有文档链接保持不变。
  • 分配继续有效。
  • 用户权限得以保留。
  • 历史记录能正确引用重命名后的用户。

权限错误问题

问题:用户已分配了“账户用户”和“账户经理”等角色。但在访问“应收账款”报表时,用户仍收到无权限访问“地区主数据”的错误信息。

回答:

根据 ERPNext 的权限系统,用户要能访问某个表单或报表,必须至少对该表单/报表中的所有链接字段拥有读取权限。由于“地区”是“应收账款”报表中的一个链接字段,请添加一条权限规则,让“账户用户/经理”至少对“地区主数据”拥有读取权限。请按照以下步骤解决此问题。

  1. 分配给用户的角色是“账户用户”和“账户经理”。
  2. 如错误信息所示,该用户没有“地区主数据”的权限。根据默认权限,分配给该用户的上述角色均未对“地区主数据”拥有任何权限。
  3. 为解决此问题,我已为“账户用户”角色分配了“地区主数据”的读取权限。

根据此权限更新,用户应该能够正常访问“应收账款”报表。

权限级别错误

在权限管理器中自定义规则时,您可能会收到一条错误消息,内容如下:

对于系统管理员 (或其他角色),在客户 (或其他单据) 的第 8 行,级别 2 (或其他级别):必须先设置级别 0 的权限,然后才能设置更高级别的权限。

错误消息表明问题出在该单据的现有权限设置中。

对于任何角色,在分配权限级别 1 或 2(及更高)的权限之前,必须先分配权限级别 0 的权限。错误消息指出系统管理员已被分配了权限级别 1 和 2 的权限,但未分配级别 0 的权限。您应首先通过以下方式更正系统管理员角色的权限:

  • 为系统管理员分配级别 0 的权限。

或者

  • 删除级别 1 和 2 的权限。

执行上述任一步骤后,您应该能够成功地在角色权限管理器中添加新的权限规则。

最大用户数限制问题

您的 ERPNext 订阅取决于您订阅的系统用户数量。一旦超过该限制,系统将不允许您创建更多用户。例如,您订阅了 10 个用户。如果您已在账户中创建了 10 个系统用户,系统将不允许您创建第 11 个系统用户,并且您会看到以下消息。

要解决此问题,您需要执行以下操作之一:

  1. 购买新用户,或

  2. 禁用当前用户

然而,有时即使您尚未用尽订阅计划中的系统用户数量,仍可能遇到此问题。例如,您的限制是 5 个系统用户,而您只创建了 3 个用户。但在创建第 4 个用户时,您却收到了上述消息。原因可能是某些用户的“同时会话”字段值大于 1。

每个同时会话被视为 1 个系统用户。例如,如果您创建了 3 个用户,其中一人的“同时会话”设置为 3,那么您总共有 5 个用户,即 3 + 1 + 1 = 5 个同时会话/系统用户。

为了让系统允许您创建更多用户,您需要减少这些用户的同时会话数。为此,请进入用户的个人资料,在安全设置下,相应设置/减少“同时会话”的值。

注意: 您仍然可以创建网站用户,因为对此没有限制。

基于层级的用户权限

问题:

如何配置用户权限,使员工既能查看自己的费用报销单,也能查看向其汇报的下属的费用报销单?

答案:

在员工主数据中,可以为每位员工定义其汇报对象。根据定义的“汇报给”关系,员工层级结构也会随之建立。

员工层级结构

此外,当用户与员工关联后,系统会按如下方式创建用户权限。根据此用户权限,员工将能够查看自己在人力资源模块中创建的文档,以及为其下属员工创建的文档。

根据此配置,当向 Kenneth 汇报的用户创建费用报销单时,Kenneth 也能访问该报销单。

请确保在向其汇报的员工信息中,将上级员工的员工编号更新为“汇报给”字段。之后,经理应能查看为其下属创建的费用报销单及其他文档(如请假申请、绩效评估等)。

编辑报表的导出/打印权限

要处理报表的导出/打印权限,请使用该报表所基于的文档类型的角色权限管理器。

步骤 1:

确定报表是从哪个文档类型生成的

步骤 2:

进入角色权限管理器,使用相同的文档类型进行筛选 (在我们的示例中为销售发票),并根据角色编辑权限

系统用户与网站用户的区别

问题: 我已将我的员工添加为用户,并为他们分配了角色。但他们登录后仍然无法查看仪表盘。

回答:

ERPNext 中有两种类型的用户。

  • 系统用户:通常是内部用户,如员工、经理和管理员,他们需要对 ERPNext 系统进行广泛访问以执行各种业务操作。他们拥有更高级别的访问权限和更详细的权限,允许他们与多个模块交互、生成报告和自定义工作流程。
  • 网站用户:通常是外部用户,如客户或供应商,他们通过网络门户与 ERPNext 系统交互。他们的访问权限仅限于与其需求相关的功能,例如下订单、查看订单状态或管理其账户信息。与系统用户使用的全面后台界面相比,他们的界面更简单。

以下是 ERPNext 中系统用户和网站用户的表格对比

系统用户 网站用户
此类型适用于管理内部活动和操作 适用于管理外部操作和交易
提供对 ERPNext 模块和功能的完全访问权限 提供对 ERPNext 模块和功能的受限访问权限
此类别的典型用户是内部员工 此类型的用户角色包括外部方,如客户、顾客等
由 ERPNext 内的管理员创建 可以自行注册或由管理员创建
提供对公司范围数据和报告的访问权限 仅提供对个人数据和有限报告的访问权限
可以查看、创建、编辑和删除记录 大多只能查看和创建与其相关的记录
在所有模块中拥有完整的数据录入能力 数据录入能力仅限于与其角色相关的部分

修改现有用户的邮箱地址

用户 ID 是根据电子邮件地址创建的。当用户重命名时,其值会在所有现有记录(包括变更日志)中更新。因此,这是一个资源密集型操作。如果在重命名用户时遇到超时问题,可以考虑使用更新后的电子邮件地址创建一个新的用户 ID,并禁用旧用户。

要更改用户的电子邮件 ID,请按照以下步骤操作:

用户列表 -> 打开该用户 > 点击菜单 -> 重命名 > 输入新的电子邮件 ID。保存

请参考此处展示相同操作的 GIF: