插件案例 —— 单据体的赋值技巧

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:1

插件案例 —— 单据体的赋值技巧


案例背景


根据某个查询结果,批填分录的情况时常存在,那么怎么快速批填,又标准呢?



代码示例


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.分录构建界面填充,有视图的情况下,借助视图...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息