金蝶云星空服务端基础资料赋值-公共方法
背景
单据转换下游基础资料无法从上游携带,但又需要赋值。
方案设计
基础资料的赋值不止是在当前这个单据转换需要,它也会在别的单据转换出现,也可能会出现服务端的操作赋值需要界面显示,但是赋值的逻辑是不变的,因此为了减少代码冗余,将公共部分抽出来做成方法,供有需要的地方调用。
场景需求
采购价目表下推采购调价单,调价原因默认为:定期询价。
具体实现
创建一个类库
添加引用
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;
新建静态类: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);
}
}
}
BOSCommon
功能所需处使用公共方法
//单选辅助资料:调价原因:默认值
BaseDataField reasonField = e.TargetBusinessInfo.GetField("FPaReason") as BaseDataField;
BOSCommon.SetBaseDataFieldValue(this.Context, reasonField, item.DataEntity, "7590e08cf9064cdfbfe7e3a7fb0741e2");
单选辅助资料的内码是字符串,基础资料的值就是整型。
代码编译
集成环境下:代码编译后,重启IIS,打开所属功能。
协同环境下:重新启动开发环境。
界面效果
END