缺料分析已选单据去重二开方案

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:2

缺料分析已选单据去重二开方案

## 实现原理 1.通过BeforeDoOperation事件捕获选单操作,将已选的单据传入e.Option对象。 2.目标单列表插件通过重写AfterCreateSqlBuilderParameter事件,处理e.sqlBuilderParameter对象的查询筛选条件。本方案主要是添加ExtJoinTable和增加where条件的形式实现已选数据去重。 ## 参考插件(Python) ### 插件一:注册于缺料分析单表单插件属性 ```python import clr clr.AddReference('System') from System.Collections.Generic import List from System import Int64 def BeforeDoOperation(e): if e.Operation.FormOperation.Operation == "Draw": prdIds=List[Int64]() subreqIds=List[Int64]() for entry in this.Model.DataObject["Entity"]: if entry['RowType']<>'0': continue if entry['SelOrderType']=='A' and entry['MoEntryId']>0: prdIds.Add(entry['MoEntryId']) elif entry['SelOrderType']=='B' and entry['MoEntryId']>0: subreqIds.Add(entry['MoEntryId']) if subreqIds.Count>0: e.Option.SetVariableValue('subreqIds',subreqIds) if prdIds.Count>0: e.Option.SetVariableValue("prdIds",prdIds) ``` ### 插件二:注册于生产订单列表 ```python import clr clr.AddReference('Kingdee.BOS.Core') clr.AddReference('Kingdee.BOS') clr.AddReference('System.Core') from Kingdee.BOS.Core.SqlBuilder import QueryBuilderParemeter from Kingdee.BOS.Core.SqlBuilder import ExtJoinTableDescription from Kingdee.BOS.Util import StringUtils from Kingdee.BOS import SqlParam from Kingdee.BOS import KDDbType from System.Collections.Generic import List from System.Linq import Enumerable def AfterCreateSqlBuilderParameter(e): if this.View.ParentFormView is None: return if this.View.ParentFormView.Session is None: return if this.View.ParentFormView.Session.ContainsKey('_DrawOperationOption_')==False: return option = this.View.ParentFormView.Session["_DrawOperationOption_"] if option is None: return if option.ContainsVariable('prdIds')==False: return existIds = option.GetVariables()['prdIds'] extd= ExtJoinTableDescription() extd.FieldName = "FID" extd.TableName = StringUtils.GetSqlWithCardinality(existIds.Count, "@eids", 1) extd.TableNameAs = "tls" extd.ScourceKey = "FTreeEntity_FENTRYID" extd.JoinOption = QueryBuilderParemeter.JoinOption.LeftJoin e.sqlBuilderParameter.ExtJoinTables.Add(extd) e.sqlBuilderParameter.SqlParams.Add(SqlParam("@eids", KDDbType.udt_inttable, existIds.ToArray())) if e.sqlBuilderParameter.FilterClauseWihtKey is not None and e.sqlBuilderParameter.FilterClauseWihtKey.Length>0: e.sqlBuilderParameter.FilterClauseWihtKey +=" And tls.FID is NULL" else: e.sqlBuilderParameter.FilterClauseWihtKey =" tls.FID is NULL" ``` ## 注册到委外订单的列表插件 ```python import clr clr.AddReference('Kingdee.BOS.Core') clr.AddReference('Kingdee.BOS') clr.AddReference('System.Core') from Kingdee.BOS.Core.SqlBuilder import QueryBuilderParemeter from Kingdee.BOS.Core.SqlBuilder import ExtJoinTableDescription from Kingdee.BOS.Util import StringUtils from Kingdee.BOS import SqlParam from Kingdee.BOS import KDDbType from System.Collections.Generic import List from System.Linq import Enumerable def AfterCreateSqlBuilderParameter(e): if this.View.ParentFormView is None: return if this.View.ParentFormView.Session is None: return if this.View.ParentFormView.Session.ContainsKey('_DrawOperationOption_')==False: return option = this.View.ParentFormView.Session["_DrawOperationOption_"] if option is None: return if option.ContainsVariable('subreqIds')==False: return existIds = option.GetVariables()['subreqIds'] extd= ExtJoinTableDescription() extd.FieldName = "FID" extd.TableName = StringUtils.GetSqlWithCardinality(existIds.Count, "@eids", 1) extd.TableNameAs = "tls" extd.ScourceKey = "FTreeEntity_FENTRYID" extd.JoinOption = QueryBuilderParemeter.JoinOption.LeftJoin e.sqlBuilderParameter.ExtJoinTables.Add(extd) e.sqlBuilderParameter.SqlParams.Add(SqlParam("@eids", KDDbType.udt_inttable, existIds.ToArray())) if e.sqlBuilderParameter.FilterClauseWihtKey is not None and e.sqlBuilderParameter.FilterClauseWihtKey.Length>0: e.sqlBuilderParameter.FilterClauseWihtKey +=" And tls.FID is NULL" else: e.sqlBuilderParameter.FilterClauseWihtKey =" tls.FID is NULL" ```

缺料分析已选单据去重二开方案

## 实现原理1.通过BeforeDoOperation事件捕获选单操作,将已选的单据传入e.Option对象。2.目标单列表插件通过重写AfterCreateSqlBuilderPa...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息