金蝶云星空服务端基础资料赋值-公共方法

金蝶云星空服务端基础资料赋值-公共方法

背景

单据转换下游基础资料无法从上游携带,但又需要赋值。

方案设计

基础资料的赋值不止是在当前这个单据转换需要,它也会在别的单据转换出现,也可能会出现服务端的操作赋值需要界面显示,但是赋值的逻辑是不变的,因此为了减少代码冗余,将公共部分抽出来做成方法,供有需要的地方调用。

场景需求

采购价目表下推采购调价单,调价原因默认为:定期询价。

具体实现

创建一个类库

在这里插入图片描述

添加引用

在这里插入图片描述

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

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值