转K3Cloud 二次开发 单据转换系列

Posted Just Do It

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了转K3Cloud 二次开发 单据转换系列相关的知识,希望对你有一定的参考价值。

Entity, EntryEntity, SubEntryEntity 这三个对象具有继承关系:
Entity 是实体基类,用于定义各种实体的公共属性;
EntryEntity 是单据体实体类,从Entity派生,增加了单据体的一些特性;
SubEntryEntity 是子单据体实体类,从EntryEntity派生,增加了子单据体的一些特性;

BusinessInfo.GetEntity()方法,返回的是Entity类型,此类已经包含了实体的ORM属性定义,利用此类,完全就可以到单据数据包中获取到数据,无需转换为EntryEntity。

通常情况下,没有Model时,可以使用Entity.DynamicProperty.GetValue(obj)方法,获取单据体的DynamicObjectCollection;

单据转换插件各事件中,生成的下推结果,为了方便插件取数,提供了另外一种方式获取单据体行。

如下演示代码,介绍了在单据转换插件中,两种获取单据体行数据的方法:
//**********************************************
public override void AfterConvert(AfterConvertEventArgs e)
{
    // 方法一:直接获取生成的全部单据体行,不区分单据

    // 此方法特别适用单据转换插件,非常方便
    ExtendedDataEntity[] allEntryRows = e.Result.FindByEntityKey("FEntity");
    foreach (var entryRowDataEntity in allEntryRows)
    {
        DynamicObject row = entryRowDataEntity.DataEntity;
        // TODO: xxxx
    }


    // 方法二:逐个单据循环,获取其单据体行
    // 此方法比较通用
    Entity entity = e.TargetBusinessInfo.GetEntity("FEntity");
    // 获取生成的全部单据
    ExtendedDataEntity[] billDataEntities = e.Result.FindByEntityKey("FBillHead");

    // 对单据做循环,逐单读取单据体
    foreach (var billDataEntity in billDataEntities)
    {

        // 如下是比较通用的方法,利用entity读取单据体
        DynamicObjectCollection entryRows = entity.DynamicProperty.GetValue(
                    billDataEntity.DataEntity) as DynamicObjectCollection;
        foreach (DynamicObject row in entryRows)
        {
            // TODO: xxxx
        }
    }
}

原贴地址 http://club.kisdee.com/forum.php?mod=viewthread&tid=967037&source=solr_search&word=ENTITY 

以上是关于转K3Cloud 二次开发 单据转换系列的主要内容,如果未能解决你的问题,请参考以下文章

单据界面布局配置(速达二次开发)

速达软件二次开发-发出商品和估价入库选择单据不显示价格和金额

K3Cloud Python套打插件开发记录

关于金蝶K3老单的二次开发

速达软件二次开发-隐藏货品资料成本单价和删除机会报价单

开源系统_二次开发(转)