【插件开发】通过代码复制物料原创
4人赞赏了该文章
2,067次浏览
编辑于2020年09月29日 15:20:49
private static IOperationResult CopyMaterial(string materialBaseId,IBillView materialView) { // 获取物料的view 初始化 var materialView = CreateMaterialView(); // 执行copy操作 materialView.Model.Copy(materialBaseId); // 设置物料的number var modelDataObject = materialView.Model.DataObject; if (modelDataObject["MaterialBase"] is DynamicObjectCollection modelDataMaterialBase) { // 可以根据需求来改变物料,比如修改物料编码,属性 // modelDataObject["Number"] = "Test"; } // 保存 var operationResult = materialView.Model.Save(); // 提交 materialView.InvokeFormOperation(FormOperationEnum.Submit); // 审核 var isAudit = materialView.InvokeFormOperation(FormOperationEnum.Audit); // 如果审核成功就返回 if (isAudit) return operationResult; operationResult.IsSuccess = false; return operationResult; } private IBillView CreateMaterialView() { // 读取物料的元数据 var meta = MetaDataServiceHelper.Load(this.Context, "BD_MATERIAL") as FormMetadata; var form = meta.BusinessInfo.GetForm(); // 创建用于引入数据的单据view var type = Type.GetType("Kingdee.BOS.Web.Import.ImportBillView,Kingdee.BOS.Web"); Debug.Assert(type != null, nameof(type) + " != null"); var billView = (IDynamicFormViewService) Activator.CreateInstance(type); // 开始初始化billView: // 创建视图加载参数对象,指定各种参数,如FormId, 视图(LayoutId)等 var openParam = CreateOpenParameter(meta); // 动态领域模型服务提供类,通过此类,构建MVC实例 var provider = form.GetFormServiceProvider(); billView.Initialize(openParam, provider); return billView as IBillView; } /// 元数据 /// 视图加载参数对象 private BillOpenParameter CreateOpenParameter(FormMetadata meta) { Form form = meta.BusinessInfo.GetForm(); // 指定FormId, LayoutId BillOpenParameter openParam = new BillOpenParameter(form.Id, meta.GetLayoutInfo().Id); // 数据库上下文 openParam.Context = this.Context; // 本单据模型使用的MVC框架 openParam.ServiceName = form.FormServiceName; // 随机产生一个不重复的PageId,作为视图的标识 openParam.PageId = Guid.NewGuid().ToString(); // 元数据 openParam.FormMetaData = meta; // 界面状态:新增 (修改、查看) openParam.Status = OperationStatus.ADDNEW; // 单据主键:本案例演示新建物料,不需要设置主键 openParam.PkValue = null; // 界面创建目的:普通无特殊目的 (为工作流、为下推、为复制等) openParam.CreateFrom = CreateFrom.Default; // 基础资料分组维度:基础资料允许添加多个分组字段,每个分组字段会有一个分组维度 // 具体分组维度Id,请参阅 form.FormGroups 属性 openParam.GroupId = ""; // 基础资料分组:如果需要为新建的基础资料指定所在分组,请设置此属性 openParam.ParentId = 0; // 单据类型 openParam.DefaultBillTypeId = ""; // 业务流程 openParam.DefaultBusinessFlowId = ""; // 主业务组织改变时,不用弹出提示界面 openParam.SetCustomParameter("ShowConfirmDialogWhenChangeOrg", false); // 插件 var plugs = form.CreateFormPlugIns(); openParam.SetCustomParameter(FormConst.PlugIns, plugs); PreOpenFormEventArgs args = new PreOpenFormEventArgs(this.Context, openParam); foreach (var plug in plugs) { // 触发插件PreOpenForm事件,供插件确认是否允许打开界面 plug.PreOpenForm(args); } // 返回 return openParam; }
赞 4
4人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读