二开案例.列表插件.列表查询使用所有组织
【应用场景】
某些特定场景下的列表查询,希望能取消组织隔离。
【风险提醒】
因为数据规则的产生非常复杂,此案例中的处理方式对多组织下的数据规则做了简化处理,会导致列表查询原有的数据规则权限控制失效,您务必知晓此风险并谨慎使用。
【案例演示】
采购订单列表查询,强制取消组织隔离。
【实现步骤】
<1>编写列表插件,代码如下。
using Kingdee.BOS.App.Data; using Kingdee.BOS.Core.List.PlugIn; using Kingdee.BOS.Core.List.PlugIn.Args; using Kingdee.BOS.Util; using System; using System.ComponentModel; using System.Linq; namespace Jac.XkDemo.BOS.Business.PlugIn { /// <summary> /// 【列表插件】列表查询使用所有组织 /// </summary> [Description("【列表插件】列表查询使用所有组织"), HotUpdate] public class ListQueryUseAllOrgListPlugIn : AbstractListPlugIn { public override void AfterCreateSqlBuilderParameter(SqlBuilderParameterArgs e) { base.AfterCreateSqlBuilderParameter(e); var listQueryUseAllOrg = this.View.OpenParameter.GetCustomParameter("ListQueryUseAllOrg"); if (listQueryUseAllOrg == null || !Convert.ToBoolean(listQueryUseAllOrg)) { // 打开列表时,如果未在ShowParameter中指定了参数ListQueryUseAllOrg=true,则不执行下面的特殊的过滤逻辑 // 设置参数示例:showParameter.CustomParams.Add("ListQueryUseAllOrg", "true"); return; } /*方案1:直接禁用组织隔离特性*/ //e.sqlBuilderParameter.IsIsolationOrg = false; //e.sqlBuilderParameter. IsolationOrgList.Clear(); //e.sqlBuilderParameter.IsEnabledDetialDRForList = false; //e.sqlBuilderParameter.DataRuleFilterString = string.Empty; //e.sqlBuilderParameter.DynamicFilterExpression = string.Empty; //e.sqlBuilderParameter.SqlParams4DataRule.Clear(); /*方案2:按指定的组织过滤数据*/ // 先获取组织信息 var sql = "SELECT FORGID FROM T_ORG_ORGANIZATIONS WHERE FDOCUMENTSTATUS='C' AND FFORBIDSTATUS='A'"; var orgs = DBUtils.ExecuteDynamicObject(this.Context, sql); var orgIds = orgs.Select(o => Convert.ToInt64(o[0])).ToList(); // 过滤方案设置按多个组织过滤数据 this.ListView.Model.FilterParameter.IsolationOrgList.Clear(); this.ListView.Model.FilterParameter.IsolationOrgList.AddRange(orgIds); e.sqlBuilderParameter.IsolationOrgList.Clear(); e.sqlBuilderParameter.IsolationOrgList.AddRange(orgIds); // 停用数据权限 e.sqlBuilderParameter.DataRuleFilterString = string.Empty; e.sqlBuilderParameter.DynamicFilterExpression = string.Empty; e.sqlBuilderParameter.SqlParams4DataRule.Clear(); } } }
<2>拷贝插件组件到应用站点的WebSite\Bin目录下,重启IIS。
<3>BOSIDE扩展采购订单,注册列表插件,保存元数据,开发完毕。
【功能验证】
<1>登录业务站点,打开采购订单列表,用任意过滤方案查询,都能查到所有组织下的数据。
---------------------------------------------------------------------------------------------------------
【金蝶云星空BOS二次开发案例演示】https://vip.kingdee.com/article/94751030918525696
二开案例.列表插件.列表查询使用所有组织
【应用场景】某些特定场景下的列表查询,希望能取消组织隔离。【风险提醒】因为数据规则的产生非常复杂,此案例中的处理方式对多组织下的数...
点击下载文档
本文2024-09-23 04:07:48发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-163321.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章