【学习】字段的取值赋值原创
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);
注意文本框的取值是没有问题的 但基础资料就变成了一个类型参数(所以就需要用到转换)
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);
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);
注意
单据体在选择物料后会自动新增一行单据体 所以 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);
单据头向单据体赋值
this.Model.GetValue("字段标识",值,字段所在行(如果字段在单据头可不填))
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); } } } } }
推荐阅读