public DynamicObject installCostRequestPackage(Context ctx, string FormID, Action <IDynamicFormViewService> fillBillPropertys, string BillTypeId = "") { //IMetaDataService metaService = ServiceHelper.GetService<IMetaDataService>();//元数据服务 //FormMetadata Meta = metaService.Load(ctx, FormID) as FormMetadata;//获取元数据 FormMetadata Meta = MetaDataServiceHelper.Load(ctx, FormID) as FormMetadata;//获取元数据 Form form = Meta.BusinessInfo.GetForm(); IDynamicFormViewService dynamicFormViewService = (IDynamicFormViewService)Activator.CreateInstance(Type.GetType("Kingdee.BOS.Web.Import.ImportBillView,Kingdee.BOS.Web")); // 创建视图加载参数对象,指定各种参数,如FormId, 视图(LayoutId)等 BillOpenParameter openParam = new BillOpenParameter(form.Id, Meta.GetLayoutInfo().Id); openParam.Context = ctx; openParam.ServiceName = form.FormServiceName; openParam.PageId = Guid.NewGuid().ToString(); openParam.FormMetaData = Meta; openParam.Status = OperationStatus.ADDNEW; openParam.CreateFrom = CreateFrom.Default; // 单据类型 openParam.DefaultBillTypeId = BillTypeId; openParam.SetCustomParameter("ShowConfirmDialogWhenChangeOrg", false); // 插件 List <AbstractDynamicFormPlugIn> plugs = form.CreateFormPlugIns(); openParam.SetCustomParameter(FormConst.PlugIns, plugs); PreOpenFormEventArgs args = new PreOpenFormEventArgs(ctx, openParam); foreach (var plug in plugs) { plug.PreOpenForm(args); } // 动态领域模型服务提供类,通过此类,构建MVC实例 IResourceServiceProvider provider = form.GetFormServiceProvider(false); dynamicFormViewService.Initialize(openParam, provider); IBillView billView = dynamicFormViewService as IBillView; ((IBillViewService)billView).LoadData(); // 触发插件的OnLoad事件: // 组织控制基类插件,在OnLoad事件中,对主业务组织改变是否提示选项进行初始化。 // 如果不触发OnLoad事件,会导致主业务组织赋值不成功 DynamicFormViewPlugInProxy eventProxy = billView.GetService <DynamicFormViewPlugInProxy>(); eventProxy.FireOnLoad(); if (fillBillPropertys != null) { fillBillPropertys(dynamicFormViewService); } // 设置FormId form = billView.BillBusinessInfo.GetForm(); if (form.FormIdDynamicProperty != null) { form.FormIdDynamicProperty.SetValue(billView.Model.DataObject, form.Id); } return(billView.Model.DataObject); }