
#引入clr运行库 import clr #添加对cloud插件开发的常用组件的引用 clr.AddReference(System) clr.AddReference(System.Core) clr.AddReference(System.Data) clr.AddReference(Kingdee.BOS) clr.AddReference(Kingdee.BOS.Core) clr.AddReference(Kingdee.BOS.App) clr.AddReference(Kingdee.BOS.DataEntity) clr.AddReference(Kingdee.BOS.Contracts) clr.AddReference(Kingdee.BOS.ServiceHelper) clr.AddReference(Kingdee.BOS.App.LogService) clr.AddReference(Kingdee.K3.MFG.ServiceHelper) clr.AddReference(Kingdee.BOS.Business.Bill) clr.AddReference(Kingdee.K3.Core) clr.AddReference(Newtonsoft.Json) #导入cloud基础库中的常用实体对象分命名空间导入不会递归导入 from Kingdee.BOS import * from Kingdee.BOS.Core import * #金蝶的解析json工具 from Kingdee.BOS.JSON import JSONObject #金蝶的上机日志工具 import Kingdee.BOS.Core.Log as Kingdee_Log from Kingdee.BOS.Contracts import * from Kingdee.BOS.Orm.DataEntity import * from Kingdee.BOS.DataEntity import * from Kingdee.BOS.Core.Bill import * from Kingdee.BOS.Core.DynamicForm import * from Kingdee.BOS.Core.DynamicForm.PlugIn import * from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import * from Kingdee.BOS.Log import * from Kingdee.BOS.App.LogService import * from Kingdee.BOS.App.Data import * from Kingdee.BOS.ServiceHelper import * #金蝶的查询条件参数对象 from Kingdee.BOS.Core.SqlBuilder import * from Kingdee.BOS.Core.SqlBuilder import QueryBuilderParemeter from Kingdee.BOS.Core.Metadata import * #金蝶json字符串转换成DynamicObjectc对象 from Kingdee.BOS.Util.JsonUtil import DeserializeObject from Kingdee.BOS.Util import SequentialGuid from System import * from System.Linq import * from System.Data import * from System.Collections.Generic import List,Dictionary from Newtonsoft.Json import JsonConvert,JsonSerializer,JsonSerializerSettings,ReferenceLoopHandling from Newtonsoft.Json.Linq import * from System.Net import WebRequest, WebException from System.IO import StreamWriter, StreamReader from System.Text import Encoding from Kingdee.K3.MFG.ServiceHelper import ENG from Kingdee.K3.Core import MFG from Kingdee.K3.Core.MFG.EnumConst import Enums from Kingdee.K3.Core.MFG import Utils from System import Int64 from Kingdee.BOS.Util import * from Kingdee.BOS.Core.Report import * from Kingdee.BOS.Business.Bill.Utils.Args import * from Kingdee.BOS.Business.Bill.Utils.ImportExportUtils import * def AfterSave(e): 保存后事件单据保存成功后执行 触发顺序AfterSave - AfterDoOperation bomQueryOptionBuildBomExpandOption() lstExpandSourceBuildBomExpandSourceData(277897,252521) lstExpandResultENG.BomQueryServiceHelper.GetBomQueryForwardResult(this.Context, lstExpandSource, bomQueryOption) FIDListList[Int64]() #FIDList[ int(Row[MaterialId_Id]) for Row in lstExpandResult if Row[ErpClsID] in [1,2] ] for Row in lstExpandResult: if Row[ErpClsID] in [1,2]: FIDList.Add(int(Row[MaterialId_Id])) SelectItemsSelectorItemInfo.CreateItems(FMATERIALID,FNumber,FName,FSpecification,FPurchaserId,FPurchaserId.FName,FDefaultVendor,FDefaultVendor.FName) FilterClauseWihtKeyFUseOrgId1 SqlParamsList[SqlParam](); RstQueryDynamicObjectCollection(BD_MATERIAL,FIDList,SelectItems,FilterClauseWihtKey,SqlParams) BillMetaMetaDataServiceHelper.Load(this.Context, BD_MATERIAL) HeadsList[List[ExcelField]]() ExcelFieldsList[ExcelField]() for i in range(len(SelectItems)): HeadlField ExcelField() FieldObject BillMeta.BusinessInfo.GetField(SelectItems[i].PropertyName) if not FieldObject: HeadlField.FieldKeySelectItems[i].PropertyName HeadlField.FieldName SelectItems[i].PropertyName HeadlField.CaptionSelectItems[i].PropertyName else: HeadlField.FieldKeyFieldObject.PropertyName HeadlField.FieldName FieldObject.Key HeadlField.CaptionFieldObject.Name ExcelFields.Add(HeadlField) Heads.Add(ExcelFields) CustomExportArgsDoCustomExportArgs() CustomExportArgs.DataSource List[DynamicObject](Rst) CustomExportArgs.FileName test_str(DateTime.Now) CustomExportArgs.Headers Heads DoCustomExport(this.View,CustomExportArgs) objJsonConvert.SerializeObject(SelectItems,JsonSerializerSettings (ReferenceLoopHandling ReferenceLoopHandling.Ignore)) this.View.ShowMessage(obj) # 示例1保存成功后显示提示 #this.View.ShowMessage(单据保存成功Python插件AfterSave事件已触发。) #this.View.ShowMessage(str(lstExpandSource)) def BuildBomExpandOption(): memBomExpandOption MFG.ENG.ParamOption.MemBomExpandOption_ForPSV() memBomExpandOption.ExpandLevelTo 0 memBomExpandOption.ExpandVirtualMaterial True memBomExpandOption.DeleteVirtualMaterial False memBomExpandOption.ExpandSkipRow True memBomExpandOption.DeleteSkipRow False memBomExpandOption.IsShowOutSource True memBomExpandOption.BomExpandId str(SequentialGuid.NewGuid()) memBomExpandOption.ParentCsdYieldRate False memBomExpandOption.ChildCsdYieldRate False memBomExpandOption.Mode Enums.BomExpand.Enu_BomExpandMode.KdMemoryOnly memBomExpandOption.IsExpandUnAuditBom True #从界面获取是否考虑替代方案 #isShowSubMtrl View.GetUserParam(IsShowSubMtrl, False) #memBomExpandOption.CsdSubstitution isShowSubMtrl memBomExpandOption.CsdSubstitutionFalse memBomExpandOption.BomExpandCalType Enums.Enu_BomExpandCalType.kdBySystemProfile; memBomExpandOption.Option.SetVariableValue(requireDataPermission, True) memBomExpandOption.DeleteExpireMaterial False return memBomExpandOption; def BuildBomExpandSourceData(bomId,materialId): lstExpandSource List[DynamicObject]() bomExpandSourceRowView MFG.ENG.BomExpand.BomForwardSourceDynamicRow.CreateInstance() bomExpandSourceRowView.MaterialId_Id materialId bomExpandSourceRowView.BomId_Id bomId bomExpandSourceRowView.NeedQty 0 bomExpandSourceRowView.TimeUnit str(1) lstExpandSource.Add(bomExpandSourceRowView) #objJsonConvert.SerializeObject(bomExpandSourceRowView) #this.View.ShowMessage(obj) return lstExpandSource def QueryDynamicObjectCollection(FormId,FIDList,SelectItems,FilterClauseWihtKey,SqlParams): query_param QueryBuilderParemeter() query_param.FormIdFormId #query_param.SelectItems SelectorItemInfo.CreateItems(FBILLNO); query_param.SelectItems SelectItems query_param.FilterClauseWihtKey FilterClauseWihtKey if len(SqlParams)0: query_param.SqlParamsSqlParams #这外方法获取了一个子查询可以用在QueryBuilderParemeter 的ExtJoinTables的属性中作连查询的作用 wStringUtils.GetSqlWithCardinalityAndParam2(FIDList,tvp) query_param.SqlParams.Add(w[1]) joinEntry ExtJoinTableDescription() joinEntry.JoinFirst True joinEntry.JoinOption QueryBuilderParemeter.JoinOption.InnerJoin joinEntry.ScourceKey FMATERIALID joinEntry.TableName w[0] joinEntry.TableNameAs tp joinEntry.FieldName FID query_param.ExtJoinTables.Add(joinEntry) #objJsonConvert.SerializeObject(query_param) #this.View.ShowMessage(obj) #获取动态对像集合 return QueryServiceHelper.GetDynamicObjectCollection(this.Context, query_param)