插件案例 —— 服务端基础资料赋值技巧
案例背景
下推的时候,有的时候我们可以在单据转换里面进行下游基础资料携带。但是有的基础资料没有办法经过携带,比如想下推过后默认携带当前用户的采购员、销售员,这些需要先取数,再赋值。
错误思路
直接给数据包赋值,比如 :
billObj["PurchaserId_Id"] =12138;
但是这样虽然能给给数据包赋值,界面上不显示呀,对应的数据模型没有填充。
代码思路一
如果基础资料仅后台生成过后,暂存,其实也确实是不需要赋值基础资料包,只要把对应的ID填写进数据库了,下次加载的时候,就会自动重新构建包。
代码思路二
BaseDataField purchaserIdField = e.TargetBusinessInfo.GetField("FPURCHASEID"); headDyn["PurchaserId_Id"] = Convert.ToInt64(取数的Id); FieldUtils.SetBaseDataFieldValue(this.Context, purchaserIdField, headDyn, headDyn["PurchaserId_Id"]);
FieldUtils.SetBaseDataFieldValue 其实利用的就是基础资料包Load后,再SetValue了。
public static void SetBaseDataFieldValue(Context ctx,BaseDataField field, DynamicObject data, object value) { long lPKValue = 0; Int64.TryParse(value.ToString(), out lPKValue); if (value.ToString().Length > 1 || lPKValue > 0) { DynamicObject valueObj = LoadReferenceData(ctx, field.RefFormDynamicObjectType, (object)value); field.DynamicProperty.SetValue(data, valueObj); filed.RefIDDynamicProperty.SetValue(data, value); } else { field.DynamicProperty.SetValue(data, null); field.RefIDDynamicProperty.SetValue(data, 0); } } public static DynamicObject LoadReferenceData(Context ctx, DynamicObjectType dt, object pkValue) { if (pkValue.IsEmptyPrimaryKey()) { return null; } OperateOption option = OperateOption.Create(); option.SetThrowExceptionWhenNotFind(false); IViewService service = ServiceHelper.GetService<IViewServivce>(); return service.LoadSingle(ctx, pkValue, dt, option); }
赋值上面的代码,在服务端赋值让基础资料显示的时候,可以正常在单据上显示。
* 代码思路三
如果在资料需要保存、提交、审核的时候,这里会涉及到很多代码,关于基础资料的引用的问题,如果数据包没有被加载到Model.DataObject的时候,就会报错。
我们可以调用DbService里面的方法,完成填充包问题。
IDbService dbService = Kingdee.BOS.App.ServiceHelper.GetService<IDBService>(); dbService.LoadReferenceObject(this.Context, new List<DynamicObject>(), BillMetaData.BusinessInfo.GetDynamicObjectType());
headDyn这个如何获取?
第一次选了不生效,第二次才生效是为啥
【emoji】
难怪显示不了
学习
插件案例 —— 服务端基础资料赋值技巧
案例背景下推的时候,有的时候我们可以在单据转换里面进行下游基础资料携带。但是有的基础资料没有办法经过携带,比如想下推过后默认携带当...
点击下载文档
上一篇:生产订单如何生成工序计划下一篇:出纳岗位职责
本文2024-09-16 17:27:25发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-15820.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章