金蝶云星空服务端基础资料赋值-公共方法
背景:
单据转换下游基础资料无法从上游携带,但又需要赋值。
方案设计:
基础资料的赋值不止是在当前这个单据转换需要,它也会在别的单据转换出现,也可能会出现服务端的操作赋值需要界面显示,但是赋值的逻辑是不变的,因此为了减少代码冗余,将公共部分抽出来做成方法,供有需要的地方调用。
场景需求:
采购价目表下推采购调价单,调价原因默认为:定期询价
具体实现:
1、创建一个类库
2、添加引用
using Kingdee.BOS; using Kingdee.BOS.Core.Metadata.FieldElement; using Kingdee.BOS.Orm; using Kingdee.BOS.Orm.DataEntity; using Kingdee.BOS.Orm.Metadata.DataEntity; using Kingdee.BOS.Util;
3、新建静态类:BOSCommon
完整如下:

using Kingdee.BOS; using Kingdee.BOS.Core.Metadata.FieldElement; using Kingdee.BOS.Orm; using Kingdee.BOS.Orm.DataEntity; using Kingdee.BOS.Orm.Metadata.DataEntity; using Kingdee.BOS.Util; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace mm_k3cloud.App.Service.Common { public static class BOSCommon { /// <summary> /// 给基础资料赋值 /// </summary> /// <param name="ctx"></param> /// <param name="field"></param> /// <param name="data"></param> /// <param name="value"></param> public static void SetBaseDataFieldValue(Context ctx, BaseDataField field, DynamicObject data, object value) { long result = 0L; long.TryParse(value.ToString(), out result); if ((value.ToString().Length > 1) || (result > 0L)) { DynamicObject newValue = LoadReferenceData(ctx, field.RefFormDynamicObjectType, value); field.DynamicProperty.SetValue(data, newValue); field.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); return Kingdee.BOS.ServiceHelper.BusinessDataServiceHelper.LoadSingle(ctx, pkValue, dt, option); } } }
4、使用
//单选辅助资料:调价原因:默认值 BaseDataField reasonField = e.TargetBusinessInfo.GetField("FPaReason") as BaseDataField; BOSCommon.SetBaseDataFieldValue(this.Context, reasonField, item.DataEntity, "7590e08cf9064cdfbfe7e3a7fb0741e2");
单选辅助资料的内码是字符串,基础资料的值就是整型。
5、界面效果
代码编译后,重启IIS,打开所属功能。
说明代码生效