分享pyton过滤条件框开发插件——多选组织原创
金蝶云社区-堕落丿恶魔
堕落丿恶魔
6人赞赏了该文章 929次浏览 未经作者许可,禁止转载编辑于2021年11月01日 15:08:29

接上文python简单账表开发

简单账表过滤条件框,主要使用系统自带功能,完成二开条件字段,进行参数传递。

下文参考简单账表过滤条件框多选组织,改写完成。欢迎大家共同学习交流,谢谢!

import clr
clr.AddReference("System")
clr.AddReference("Kingdee.BOS")
clr.AddReference("Kingdee.BOS.Core")
clr.AddReference("Kingdee.BOS.App")
from Kingdee.BOS import *
from Kingdee.BOS.JSON import *
from Kingdee.BOS.Core import *
from Kingdee.BOS.Core.CommonFilter import *
from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import *
from Kingdee.BOS.Core.Metadata import *
from Kingdee.BOS.Core.Permission import *
from Kingdee.BOS.Core.SqlBuilder import *
from Kingdee.BOS.Orm import *
from Kingdee.BOS.Orm.DataEntity import *
from Kingdee.BOS.ServiceHelper import *
from System import *
from System.ComponentModel import *
from System.Collections.Generic import *
from System.Linq import *
from System.Text import *
from System.Threading.Tasks import *

lstOrgList = List[long]();

def TreeNodeClick(e):
	SetDefaultValue("FOrgId");

def SetDefaultValue(sOrgFieldKey):
	global lstOrgList
	if this.View.ParentFormView:
		lstOrgList = GetPermissionOrg(this.View.ParentFormView.BillBusinessInfo.GetForm().Id);
		organization = GetOrganization(sOrgFieldKey);
		fieldEditor = this.View.GetFieldEditor(sOrgFieldKey,0);
		fieldEditor.SetComboItems(organization);
		value = this.Model.GetValue(sOrgFieldKey);
		if String.IsNullOrWhiteSpace(value):
			item = 101L if sOrgFieldKey.ToUpperInvariant().Equals("FORGID") else 107L;
			if this.Context.CurrentOrganizationInfo.FunctionIds.Contains(item):
				this.Model.SetValue(sOrgFieldKey,this.Context.CurrentOrganizationInfo.ID);

def GetOrganization(sOrgFieldKey):
	enumlist = List[EnumItem]();
	num = 101L if sOrgFieldKey.ToUpperInvariant().Equals("FORGID") else 107L;
	text = (String.format("FORGID IN ({0})", ",".join(list(map(str,lstOrgList))) ))  if len(lstOrgList) > 0 else "FORGID = -1";
	text += String.format(" AND FORGFUNCTIONS LIKE '%{0}%' ",num.ToString());
	para = QueryBuilderParemeter();
	para.FormId = "ORG_Organizations";
	para.SelectItems = SelectorItemInfo.CreateItems("FORGID","FNUMBER","FNAME");
	para.FilterClauseWihtKey = text;
	dynamicObjectCollection = QueryServiceHelper.GetDynamicObjectCollection(this.View.Context,para);
	for current in dynamicObjectCollection:
		enumItem = EnumItem();
		enumItem.EnumId = current["FORGID"].ToString();
		enumItem.Value = current["FORGID"].ToString();
		enumItem.Caption = LocaleValue(current["FNAME"].ToString(),this.Context.UserLocale.LCID);
		enumlist.Add(enumItem);
	return enumlist;

def GetPermissionOrg(formId):
	bizObject = BusinessObject();
	bizObject.Id = formId;
	bizObject.PermissionControl = this.View.ParentFormView.BillBusinessInfo.GetForm().SupportPermissionControl;
	bizObject.SubSystemId = this.View.ParentFormView.Model.SubSytemId;
	return PermissionServiceHelper.GetPermissionOrg(this.Context, bizObject, "6e44119a58cb4a8e86f6c385e14a17ad");

python过滤条件框.jpg


赞 6