import clr clr.AddReference("System") clr.AddReference("Kingdee.BOS") clr.AddReference("Kingdee.BOS.Core") clr.AddReference("Kingdee.BOS.DataEntity") clr.AddReference("Kingdee.BOS.App") clr.AddReference("Kingdee.BOS.Contracts") clr.AddReference("Kingdee.BOS.ServiceHelper") from Kingdee.BOS import * from Kingdee.BOS.Core import * from Kingdee.BOS.Core.Metadata.EntityElement import * from Kingdee.BOS.Orm.DataEntity import * from Kingdee.BOS.Core.DynamicForm.PlugIn import * from Kingdee.BOS.Core.DynamicForm.PlugIn.Args import * from Kingdee.BOS.Util import StringUtils,JsonUtil from System import * from System.ComponentModel import * from System.Collections.Generic import * from System.Text import* from Kingdee.BOS.ServiceHelper import * def BeforeF7Select(e): if e.FieldKey.upper() == "FLEDGERSTOCKID": id = this.Model.DataObject["Id"] details = this.View.BusinessInfo.GetEntity("F_VUOY_LEDGERSTOCK") entry = this.View.Model.GetEntityDataObject(details) joinFilterSrt = """ FSTOCKID NOT IN ( SELECT t0es.FLEDGERSTOCKID FROM T_BD_LEDGERENTRY t0e INNER JOIN T_BD_LEDGERSTOCK t0es on t0e.FEntryID = t0es.FEntryID WHERE FID != {0}) """.format(id) if entry != None and entry.Count > 0: idList = map(str,set(map(lambda x : x["FLedgerStockId_Id"], entry))) if idList.Count > 0: e.ListFilterParameter.Filter = StringUtils.JoinFilterString(e.ListFilterParameter.Filter," FSTOCKID NOT IN ({0})".format(",".join(idList))) e.ListFilterParameter.Filter = StringUtils.JoinFilterString(e.ListFilterParameter.Filter, joinFilterSrt) return