关于通过Generic Inquiry在特定租户中获取全租户数据的功能请求
跨租户Generic Inquiry获取所有租户数据的实现方案
前提说明
Acumatica多租户架构默认通过TenantID字段自动过滤当前租户数据,要实现跨租户查询需调整GI配置并确保权限到位。
具体步骤
创建/修改Generic Inquiry
打开Generic Inquiry(SM208000),新建或打开目标GI:- 在Tables标签页,添加业务数据表和
Tenant表(SMTenant),建立关联:业务表的TenantID关联SMTenant的TenantID。 - 在Conditions标签页,删除所有默认的
TenantID = 当前租户类过滤条件,这是绕过租户隔离的核心操作。
- 在Tables标签页,添加业务数据表和
配置跨租户访问权限
- 确保当前操作角色已勾选Access All Tenants系统权限,无此权限则无法突破租户数据隔离。
- 在GI的Security标签页,指定具备该权限的角色,严格控制访问范围。
添加租户标识字段
在Results标签页,添加SMTenant表的TenantCD(租户编码)和Name(租户名称)字段,方便区分每条数据所属租户,再按需添加业务表的其他字段。测试验证
保存GI后运行查询,此时应能看到所有租户的数据,且每条数据都带有对应的租户标识。
注意事项
- 数据安全:跨租户查询打破了默认数据隔离,必须严格限制访问角色,避免数据泄露。
- 性能优化:若数据量较大,建议添加日期范围等过滤条件缩小结果集,避免性能损耗。
- 自定义表要求:如果是自定义业务表,需确保表中包含
TenantID字段(Acumatica标准表默认自带),否则无法关联租户信息。
内容的提问来源于stack exchange,提问作者Bajrang Patidar
相关产品推荐
相关产品推荐

