【转】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

时间: 2024-08-08 22:25:49

【转】K3Cloud 二次开发 单据转换系列的相关文章

【0002(基础)】Skyline二次开发入门经典系列教程——目录

这段时间由于个人事务太多,以至于没有按照时间更新系列教程,本人将尽快补上所欠章节,在此说声抱歉!   这一章在我心目中占有很重要的地位,因为我想通过这一章的内容来确定整个系列的大致走向.然而在整理的过程中,发现现实远比想象要复杂得多:首先想尽可能介绍较多的知识点,其次又要考虑学习的简易程度,再次又要确定顺当的知识体系流程-- 由于暂时的考虑无论如何也是不可能完备的,因此为了不影响后面教程的编写,暂定把这一章作为一个[流动性质]的可变章节,在编写每一章时,动态根据实际情况修改(添加.移动.修改)系

【0001(基础)】Skyline二次开发入门经典系列教程总览

本人是从2012年开始接触Skyline二次开发的,经历过 v6.0~v6.5(最新的6.6版本还未使用)的所有版本.作为一名非GIS专业毕业的大学本科生,鬼使神差般地进入了这个瑰丽的GIS领域.因此,在从事了4年多的Skyline二次开发工作后,我不能说我是"授业有专攻",更不能说我是"闻道有先后".在这个领域内,大牛之人比比皆是,正是因为他们的存在与指引,才使得我现在有点东西可以写出来供大家交流沟通.   整理这个系列教程的原因主要出于如下几点的考虑: 1.Sk

使用 PySide2 开发 Maya 插件系列二:继承 uic 转换出来的 py 文件中的类 Ui_Form

使用 PySide2 开发 Maya 插件系列二:继承 uic 转换出来的 py 文件中的类 Ui_Form 开发环境: Wing IDE 6.1 步骤1: 打开 Wing IDE,创建一个新的 project,保存这个 project 到某个路径下,把之前生产的 py 文件所在的文件夹添加到该 project 中,然后在文件夹下新建一个 py 文件,我这里命名为 PySideTest.py 图中 PySide2ToPySide.py 是一个 PySide2 兼容 PySide 的一个补丁代码,

[Axis2与Eclipse整合开发Web Service系列之二] Top-Down方式,通过WSDL逆向生成服务端(续)

前言 本篇是承接上一篇: [Axis2与Eclipse整合开发Web Service系列之二] Top-Down方式,通过WSDL逆向生成服务端 在上一篇粗略地介绍了如何使用Top-Down的方式创建一个web service .  但是对于如何部署及调用,以及一些细节的部分基本上没有介绍. 应某些博友的要求, 也适逢自己有空, 接下来就详细介绍一下整个部分如何进行. 环境准备 JDK 肯定要安装了, 这个就不多讲了. 1. eclipse  3.5.2 对eclipse 版本的要求其实不是很严

K3 WISE 单据二次开发手册

概述      单据二次开发是针对现目前单据的一些功能无法满足一些客户的特殊需求,同时分公司又有能力进行二次开发而提出的,这样既可以在现有的系统不做 变动的情况下满足客户的需求,同时也增强了系统的稳定性. 注意,本篇所介绍所用到的动态链接库名为:K3BillTransfer.dll通过该说明文档,你可以了解到      1.如何通过K3BillTransfer组件在录单过程中对单据上各项目加以控制.      2.如何通过K3BillTransfer组件实现自定义功能菜单.      3.如何通

Ambari系列(四):基于Ambari做二次开发(DIY)

前言 Ambari能够搭建.管理Hadoop集群,这是一件很酷的事情,让集群管理变的easy,但是有可能也有自己的一些需求,如果我想基于Ambari做二次开发DIY,修改一下界面,增加一些功能,添加一个模块等等,这些都是没问题,首先Ambari是基于ASF协议,其次,开发也很方便,唯一不足的是官网基于此的开发文档不多. 我主要介绍下,怎么基于Ambari做二次开发,搭建开发环境,最后编译部署打包. 开发环境搭建 在windows下安装nodejs python的编译运行环境比较复杂,主要是nod

【wireshark】Wireshark原理分析与二次开发系列

1.版权声明 本系列文章是本人花了很多心血写成,wireshark本是开源软件,本人也乐于技术知识和经验的分享,更是欣赏和推崇开源精神,因此任何看到本文的人都可以随意转载,但只有一个要求: 在大段甚至全文引用本系列文章内容的情况下,需要保留本人网名(赵子清)和本博客地址的全部或一部分(http://www.cnblogs.com/zzqcn). 2.引言 Wireshark是一款优秀的开源协议分析软件,多年来,全球无数开发者为Wireshark编写了数千种协议的解析插件(版本1.12.6已有15

Android开发—智能家居系列】(二):用手机对WIFI模块进行配置

在实际开发中,我开发的这款APP是用来连接温控器,并对温控器进行控制的.有图为证,哈哈. 上一篇文章[Android开发-智能家居系列](一):智能家居原理的文末总结中写到: 手机APP控制智能温控器就两步:一是通过手机,让WIFI模块接入网络,而是通过网络,使用手机对模块发送指令.在这篇文章中,我们来介绍第一个步骤. [时序图] [概念] [两种模式]: AP:即无线接入点,是一个无线网络的中心节点.通常使用的无线路由器就是一个AP,其它无线终端可以通过AP相互连接. STA:即无线站点,是一

QGIS(PYTHON3.5、QT5.7.1、QGIS3)系列二次开发环境

QGIS(PYTHON3.5.QT5.7.1.QGIS3系列二次开发环境,所有环境以虚拟机方式提供,以便研究或直接使用. 具体包括:独立应用二次开发环境(WINDOWS,LINUX):android二次开发:独立应用PYTHON二次开发环境(WINDOWS,LINUX):插件开发环境(PYTHON,C++). 另外,我们承接基于QGIS的二次开发.插件开发整理:承接QGIS平台级功能的定制修改:承接QGIS的基本学习资料https://user.qzone.qq.com/2665146134/i