【学习】字段的取值赋值原创
金蝶云社区-___________________
___________________
13人赞赏了该文章 694次浏览 未经作者许可,禁止转载编辑于2023年06月30日 15:03:34

单据头取值

字段标识 取值1:VVHD_QZ1 取值2:VVHD_QZ2 赋值1:VVHD_FZ1

使用this.Model.GetValue("字段标识") 方法可以直接获取字段的值

var value1 = this.Model.GetValue("F_VVHD_Text1");//文本 数字类型可以直接取值
var F_VVHD_WL = this.Model.GetValue("F_VVHD_WL");//基础资料不可以直接取值
this.View.ShowMessage(value1 + "-----" + F_VVHD_WL);

image.png

注意文本框的取值是没有问题的 但基础资料就变成了一个类型参数(所以就需要用到转换)




var value1 = this.Model.GetValue("F_VVHD_Text1");//文本 数字类型可以直接取值
var F_VVHD_WL = this.Model.GetValue("F_VVHD_WL");//基础资料不可以直接取值
string Name1 = (F_VVHD_WL as DynamicObject)["id"].ToString(); //取值方法1
string Name2 = ((dynamic)F_VVHD_WL).Name;       //取值方法2
this.View.ShowMessage(value1 + "-----" + Name1 + "----" + Name2);

image.png

DynamicObject dynamic 都是在运行时解析这个字段具体有什么值(如果值解析不到值会报错)

这样就可以去拿到基础资料的任意值了



单据体取值

int count = this.Model.GetEntryRowCount("明细信息标识"); 

                int count = this.Model.GetEntryRowCount("FPOOrderEntry");
                string str = "";
                for (int i = 0; i < count; i++)
                {
                    var value1 = this.Model.GetValue("FTaxPrice", i);//文本 数字类型可以直接取值
                    var F_VVHD_WL = this.Model.GetValue("FMaterialId", i);//基础资料不可以直接取值
                    string Name1 = (F_VVHD_WL as DynamicObject)["id"].ToString(); //取值方法1
                    str += value1 + "-----" + Name1 + "----" + "第" + i.ToString() + "行" + "\r\n";   
                }
                this.View.ShowMessage(str);

image.png

注意

单据体在选择物料后会自动新增一行单据体 所以 i 初始为2 

当 i 为 1 时 解析到第二行空值时就会报错




使用这个方法F_VVHD_WL.IsNullOrEmpty() 来判断这个基础资料的值是否为空

                int count = this.Model.GetEntryRowCount("FPOOrderEntry");
                string str = "";
                for (int i = 0; i < count; i++)
                {
                    var value1 = this.Model.GetValue("FTaxPrice", i);//文本 数字类型可以直接取值
                    var F_VVHD_WL = this.Model.GetValue("FMaterialId", i);//基础资料不可以直接取值
                    if (!F_VVHD_WL.IsNullOrEmpty())
                    {
                        string Name1 = (F_VVHD_WL as DynamicObject)["id"].ToString(); //取值方法1
                        str += value1 + "-----" + Name1 + "----" + "第" + i.ToString() + "行" + "\r\n";
                    }
                }
                this.View.ShowMessage(str);

image.png



单据头向单据体赋值

this.Model.GetValue("字段标识",值,字段所在行(如果字段在单据头可不填))

image.png

                var value1 = this.Model.GetValue("F_VVHD_Text1");//文本 数字类型可以直接取值
                var F_VVHD_WL = this.Model.GetValue("F_VVHD_WL");//基础资料不可以直接取值
                string Name1 = (F_VVHD_WL as DynamicObject)["id"].ToString(); //取值方法1
                int count = this.Model.GetEntryRowCount("FPOOrderEntry");
                for (int i = 0; i < count; i++)
                {
                    this.Model.SetValue("FTaxPrice", value1, i);
                    this.Model.SetValue("FMaterialId", Name1, i);
                }

进行基础资料赋值时 必须使用 id (字段的内码)进行赋值 使用编码将无法解析


代码分享

using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Util;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;

namespace XueXi
{
    [Description("学习按钮点击取值赋值"), HotUpdate]
    public class Class2 : AbstractBillPlugIn
    {
        public override void BarItemClick(BarItemClickEventArgs e)
        {
            base.BarItemClick(e);
            string BarItemKey = e.BarItemKey;//获取本次点击的按钮标识
            if (BarItemKey.EqualsIgnoreCase("VVHD_QZ1"))
            {
                var value1 = this.Model.GetValue("F_VVHD_Text1");//文本 数字类型可以直接取值
                var F_VVHD_WL = this.Model.GetValue("F_VVHD_WL");//基础资料不可以直接取值
                string Name1 = (F_VVHD_WL as DynamicObject)["id"].ToString(); //取值方法1
                string Name2 = ((dynamic)F_VVHD_WL).Name;       //取值方法2
                this.View.ShowMessage(value1 + "-----" + Name1 + "----" + Name2);
            }

            if (BarItemKey.EqualsIgnoreCase("VVHD_QZ2"))
            {
                int count = this.Model.GetEntryRowCount("FPOOrderEntry");
                string str = "";
                for (int i = 0; i < count; i++)
                {
                    var value1 = this.Model.GetValue("FTaxPrice", i);
                    var F_VVHD_WL = this.Model.GetValue("FMaterialId", i);
                    if (!F_VVHD_WL.IsNullOrEmpty()) //对物料进行判空处理 并进行取反
                    {
                        string Name1 = (F_VVHD_WL as DynamicObject)["id"].ToString(); 
                        str += value1 + "-----" + Name1 + "----" + "第" + i.ToString() + "行" + "\r\n";
                    }
                }
                this.View.ShowMessage(str);
            }

            if (BarItemKey.EqualsIgnoreCase("VVHD_FZ1"))
            {
                var value1 = this.Model.GetValue("F_VVHD_Text1");
                var F_VVHD_WL = this.Model.GetValue("F_VVHD_WL");
                string Name1 = (F_VVHD_WL as DynamicObject)["id"].ToString();//获取物料的id
                int count = this.Model.GetEntryRowCount("FPOOrderEntry");
                for (int i = 0; i < count; i++)
                {
                    //进行赋值
                    this.Model.SetValue("FTaxPrice", value1, i); 
                    this.Model.SetValue("FMaterialId", Name1, i);
                }
            }
        }
    }
}


赞 13