自动设置弹性域字段数据原创
金蝶云社区-eris
eris
3人赞赏了该文章 1448次浏览 未经作者许可,禁止转载编辑于2021年05月17日 17:55:55

在页面给弹性域字段设值时,需要逐个维度设置并且没有逻辑控制,下面通过按钮自动设置弹性域的值。

关键点:弹出模式下需要先保存维度值,再给弹性域字段赋值。

具体代码:

using System;
using System.Data;
using System.ComponentModel;
using System.Collections.Generic;

using Kingdee.BOS.Core;
using Kingdee.BOS.Util;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.Metadata.FieldElement;
using Kingdee.BOS.WebApi.FormService;
using Kingdee.BOS.Model.DynamicForm;
using Newtonsoft.Json.Linq;

namespace Kingdee.BOS.TestPlugIn22.FormPlugin
{
      [HotUpdate]
    [Description("单据测试插件")]
    public class TestFormPlugIn : AbstractBillPlugIn
    {

        public override void ButtonClick(ButtonClickEventArgs e)
        {
            base.ButtonClick(e);
            if (e.Key.EqualsIgnoreCase("F_Jac_Button"))
            {
                //数据包,给部门和员工维度赋值
                var data = "{\"Model\":[{\"FFLEX5\":{\"FNumber\":\"BM000035\"}, \"FFLEX7\":{\"FNumber\":\"1111\"}}]}";
                //调用弹性域保存接口,保存维度数据,此接口存在会返回内码,不存在会保存数据
                var result = WebApiServiceCall.FlexSave(this.Context, "BD_FLEXITEMDETAILV", data);;
                var result1 = JsonUtil.Serialize(result);
                var joResult = JObject.Parse(result1);
                var isSuccuess = joResult["Result"]["ResponseStatus"]["IsSuccess"].Value<bool>();
                if (isSuccuess)
                {
                    //根据返回的核算维度内码给弹性域赋值
                    var pkId = joResult["Result"]["ResponseStatus"]["SuccessEntitys"][0]["Id"].Value<long>();
                    ((DynamicFormModel)this.Model).SetValue("F_Jac_Flex1", pkId);
                }
            }
        }
    }
}


赞 3