插件案例 —— 单据体的赋值技巧
案例背景
根据某个查询结果,批填分录的情况时常存在,那么怎么快速批填,又标准呢?
代码示例
1.分录构建
界面填充,有视图的情况下,借助视图的相关功能,快速填写单据体,这种方法简单粗暴,对于有界面的情况下,快速填写实体有帮助,但是有的时候存在模型交互情况,需要添加 this.View.Mode.BeginInit()和this.View.Model.EndInit()语句进行初始化构造。
//清空分录包 this.View.Model.DeleteEntryData("分录Key"); //获取实体信息 var rEntity = this.View.Model.BusinessInfo.GetEntity("分录Key"); int index = 0; foreach (var item in invStock) { //新增行 this.View.Model.CreateNewEntryRow(rEntity, index); //按分录填值 this.View.Model.SetValue("行字段", Convert.ToInt64(item["FMATERIALID"]), index); this.View.Model.SetValue("行字段", Convert.ToInt64(item["FAUXPROPID"]), index); index++; } //刷新分录 this.View.UpdateView("F_QPOV_Entity");
2. 动态包属性构建
对于动态表单来说,数据源是完全不确定的情况下,初始化取数过后,在创建数据包的时候,构建业务数据包。缺点,对于基础资料类的数据,仍然需要使用SetValue,或者需要LoadReference,否则看到的基础资料是空值。
public override void CreateNewData(BizDataEventArgs e) { base.CreateNewData(e); if (lstProxy == null || lstProxy.Count<= 0) { return; } //动态对象类型 var billType = this.View.Model.BusinessInfo.GetDynamicObjectType(); //实体包 DynamicObject billObj = new DynamicObject(billType); //Entity var entryEntity = this.View.Model.BusinessInfo.GetEntryEntity("分录Key"); foreach (var item in lstProxy) { var rowObj = new DynamicObject(entryEntity.DynamicObjectType); rowObj["行字段"] = item.Number; rowObj["行字段"] = item.Name; //对属性包填值 entryEntity.DynamicProperty.GetValue<DynamicObjectCollection>(billObj).Add(rowObj); } 给业务包赋值 e.BizDataObject = billObj; }
3. 数据包填充
楼主,通过var rowObj = new DynamicObject(entryEntity.DynamicObjectType);
增加的单据数据包,可以触发系统的值更新或者实体服务规则么?
插件案例 —— 单据体的赋值技巧
案例背景根据某个查询结果,批填分录的情况时常存在,那么怎么快速批填,又标准呢?代码示例1.分录构建界面填充,有视图的情况下,借助视图...
点击下载文档
上一篇:凭证过账显示:存在未关闭的凭证下一篇:【8月17日笔记】财务-总账
本文2024-09-16 17:24:39发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-15532.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章