#星空云诊所#:云诊所-如何快速提高自己的开发能力

目前星空开发新人特别多,有经验丰富的开发人员也不少,即使有经验的开发人员有时候也难免遇到曾经从未接触过的开发场景,甚至还不知道如何下手的问题,在这里分享一些实际经验给大家,希望能帮助到更多的开发人员提高自己的能力,其实开发最重要的一条就是开发思维,如果自己开发思维能力上去了,以不变应万变,这样很多问题就会隐忍而解。
分享如下:
尽量利用平台本身实现的保存、提交和审核,
模拟单据本身的方法,不要自己随便写一个SQL 语句做更新,自己随便写一个方法去执行保存,特别是业务逻辑比较强的方法,你自己写的SQL执行好像是没问题,说不定有些地方反写就没到位,有些关联地方就没处理到,这样会造成你可能都会意想不到的问题。那模拟平台保存方法需要注意的是:
(1)需要构建视图,下面写了一个通用方法,如果是主键为空时则为新建,否则为编辑,不用再考虑编辑状态的特殊处理方法
public IDynamicFormView CreateBillView(Context ctx, string objname, FormMetadata meta, string pkid = null)
{
BusinessInfo info = meta.BusinessInfo;
Form form = info.GetForm();
BillOpenParameter param = new BillOpenParameter(objname, null);
param.SetCustomParameter("formID", form.Id);
//根据主键是否为空 置为新增或修改状态
param.SetCustomParameter("status", !IsPrimaryValueEmpty(pkid) ? "Edit" : "AddNew");
param.SetCustomParameter("PlugIns", form.CreateFormPlugIns()); //插件实例模型
//修改主业务组织无须用户确认
param.SetCustomParameter("ShowConformDialogWhenChangeOrg", false);
param.Context = this.Context;
param.FormMetaData = meta;
param.LayoutId = param.FormMetaData.GetLayoutInfo().Id;
param.PkValue = !IsPrimaryValueEmpty(pkid) ? pkid : null;//单据主键内码FID
param.Status = !IsPrimaryValueEmpty(pkid) ? OperationStatus.EDIT : OperationStatus.ADDNEW;
IResourceServiceProvider provider = form.GetFormServiceProvider();
//普通的动态表单模式DynamicFormView
//IDynamicFormView billview = provider.GetService(typeof(IDynamicFormView)) as IDynamicFormView;
//这里模拟为引入模式的WebView,否则遇到交互的时候会有问题,移动端目前无法直接交互
Type type = Type.GetType("Kingdee.BOS.Web.Import.ImportBillView,Kingdee.BOS.Web");
IDynamicFormView billview = (IDynamicFormView)Activator.CreateInstance(type);
(billview as IBillViewService).Initialize(param, provider);//初始化
(billview as IBillViewService).LoadData();//加载单据数据
//如果是普通DynamicFormView时,LoadData的时候会加网控,要清除。//引入模式View不需要
// (billview as IBillView).CommitNetworkCtrl();
return billview;
}
private bool IsPrimaryValueEmpty(object pk)
{
return pk == null || pk.ToString() == "0" || string.IsNullOrWhiteSpace(pk.ToString());
}
(2)跟属性赋值(标准产品也是这么做的)
IDynamicFormView OUTSTOCKview = CreateBillView(this.Context, "SAL_OUTSTOCK", meta, fid);
OUTSTOCKview.Model.SetValue("FRealQty", outStockQty, 0);//含税单价字段赋值,row为具体行号
setvalue方法就是对已经构建的视图进行赋值处理,
(3)如果涉及到需要联
#星空云诊所#:云诊所-如何快速提高自己的开发能力
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



