二开案例.表单插件.复制单据上的基础资料的单据体数据包到子单据体

【应用场景】
复制单据上的基础资料的单据体数据包到子单据体。
【案例演示】
物料有单据体,在采购订单上录入物料时,将物料的单据体数据包复制到单据的子单据体。
物料数据:

采购订单数据:

【实现步骤】
<1>编写表单插件,代码如下。
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Util;
using System.ComponentModel;
namespace Jac.XkDemo.BOS.Business.PlugIn
{
/// <summary>
/// 【表单插件】复制单据上的基础资料的单据体数据包到子单据体
/// </summary>
[Description("【表单插件】复制单据上的基础资料的单据体数据包到子单据体"), HotUpdate]
public class CopyBaseDataFieldEntityValueToSubEntityFormPlugIn : AbstractDynamicFormPlugIn
{
public override void DataChanged(DataChangedEventArgs e)
{
base.DataChanged(e);
if (e.Field.Key.EqualsIgnoreCase("FMaterialId"))
{
// 获取物料数据包
var obj = this.Model.GetValue("FMaterialId") as DynamicObject;
if (obj == null)
{
return;
}
// 获取物料的单据体数据包
var materialEntityObjs = obj["F_Jac_Entity"] as DynamicObjectCollection;
if (materialEntityObjs == null || materialEntityObjs.Count == 0)
{
return;
}
// TODO
var subEntityKey = "F_Jac_SubEntity";
// 获取子分录行数
var rowCount = this.Model.GetEntryRowCount(subEntityKey);
if (rowCount < materialEntityObjs.Count)
{
// 子分录行数比物料的单据体行数少时,提前创建子分录行
this.Model.BatchCreateNewEntryRow(subEntityKey, materialEntityObjs.Count - rowCount);
}
#region 方式1:直接修改数据包
//var subEntityObjs = this.Model.GetEntityDataObject(this.View.BillBusinessInfo.GetEntity(subEntityKey));
//for (var i = 0; i < materialEntityObjs.Count; ++i)
//{
// // 复制文本(通过字段的属性名取值赋值)
// subEntityObjs[i]["F_Jac_Text"] = materialEntit二开案例.表单插件.复制单据上的基础资料的单据体数据包到子单据体
【应用场景】复制单据上的基础资料的单据体数据包到子单据体。【案例演示】物料有单据体,在采购订单上录入物料时,将物料的单据体数据包复...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



