返回顶部
首页 > 资讯 > 后端开发 > Python >k3cloud新建简单帐表教程
  • 827
分享到

k3cloud新建简单帐表教程

简单教程k3cloud 2023-01-31 03:01:51 827人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

简单账表本帖将基于实际开发过程,逐步介绍如何开发出一张全新的简单账表 - 采购日报表1.在BOS设计器中,新建一张空白简单账表简单修改下报表的名称等属性之后,保存即可。图一:新建简单账表图二:简单账表设计器及其关键属性2.开发报表服务端取数

简单账表
本帖将基于实际开发过程,逐步介绍如何开发出一张全新的简单账表 - 采购日报表
1.在BOS设计器中,新建一张空白简单账表
简单修改下报表的名称等属性之后,保存即可。

图一:新建简单账表
20160316 04简单账表1.png



图二:简单账表设计器及其关键属性
20160316 04简单账表2.png



2.开发报表服务端取数插件
简单账表服务端取数插件,必须从 Kingdee.BOS.Contracts.Report.SysReportBaseService 派生。
更详细的简单账表插件开发资料,可以从如下文档获取:

Http://open.kingdee.com/K3Cloud/Wenku/DocumentView.aspx?docId=117280
账表服务取数插件示例代码

插件开发完毕后,编译成*.dll文件。
本帖最后会附上示例报表服务端插件的完整代码。

3.给简单账表,注册服务端插件
把刚刚编译通过的报表插件,注册到服务端插件列表

图三:注册服务器插件
20160316 04简单账表3.png



4.新建报表过滤界面
点击新建菜单,继承 BOS - 应用框架 - 动态表单 - 公共过滤,创建一个新的过滤界面,
并在过滤界面上,绘制各个过滤条件字段。
绘制完毕,保存。

图四:新建过滤界面
20160316 04简单账表7.png


5:配置简单账表的过滤界面
把新建的过滤界面的标识,复制粘贴到简单账表的"过滤窗口业务对象"属性上


6.修改报表服务端取数插件,根据过滤界面上的条件,据此过滤数据
在BuilderReportsqlAndTempTable事件中,通过读取filter.FilterParameter对象,获取到完整的过滤方案,据此拼装出过滤条件、排序字段等。
本帖的示例代码中,未读取过滤条件,请自行尝试。

7.发布主控台
把报表发布到主控台,为了快速看到效果,建议先取消报表的权限控制。

8.浏览报表效果
登录K/3 Cloud,打开报表,浏览报表的运行效果,调试与修正报表插件问题。

图五:本案例的报表效果
20160316 04简单账表8.png

实例代码:
using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.ComponentModel;
 using Kingdee.BOS;
 using Kingdee.BOS.Util;
 using Kingdee.BOS.Core;
 using Kingdee.BOS.Core.Report;
 using Kingdee.BOS.Core.Report.PlugIn;
 using Kingdee.BOS.Core.Report.PlugIn.Args;
 using Kingdee.BOS.Core.List;
 using Kingdee.BOS.Contracts.Report;
 using Kingdee.BOS.App.Data;
 using Kingdee.BOS.ORM.DataEntity;
 namespace JDSample.ServicePlugIn.Report
 {
     /// <summary>
     /// 自定义简单账表:服务端插件
     /// </summary>
     /// <remarks>
     /// 开发目的:用以学习简单账表插件的各种事件、属性
     ///
    /// 案例:
     /// 按日期,搜索采购订单,
     /// 输出:编号、状态、物料、数量、单位、单价、价税合计
     /// 可以对物料汇总;
     /// 默认按编号排序
     /// 数量、价税合计需要合计
     /// 数量、单价、价税合计,需控制精度
     /// 相同的采购订单行,编号不重复显示
     /// </remarks>
     [Description("自定义简单账表")]
     public class S151016MySysReport : SysReportBaseService
     {
        
         /// <summary>
         /// 初始化事件:在此事件中,设置报表基本属性
         /// </summary>
         /// <remarks>
         ///
        /// </remarks>
         public override void Initialize()
         {
             base.Initialize();
             // 简单账表类型:普通、树形、分页
             this.ReportProperty.ReportType = ReportType.REPORTTYPE_NORMAL;
             // 报表名称
             this.ReportProperty.ReportName = new LocaleValue("日采购报表", base.Context.UserLocale.LCID);
             //
            this.IsCreateTempTableByPlugin = true;
             //
            this.ReportProperty.IsUIDesignerColumns = false;
             //
            this.ReportProperty.IsGroupSummary = true;
             //
            this.ReportProperty.SimpleAllCols = false;
             // 单据主键:两行FID相同,则为同一单的两条分录,单据编号可以不重复显示
             this.ReportProperty.PrimaryKeyFieldName = "FID";
             //
            this.ReportProperty.IsDefaultOnlyDspSumAndDetailData = true;
            
             // 报表主键字段名:默认为FIDENTITYID,可以修改
             //this.ReportProperty.IdentityFieldName = "FIDENTITYID";
             //
             // 设置精度控制
             List<DecimalControlField> list = new List<DecimalControlField>();
             // 数量
             list.Add(new DecimalControlField
             {
                 ByDecimalControlFieldName = "FQty",
                 DecimalControlFieldName = "FUnitPrecision"
             });
             // 单价
             list.Add(new DecimalControlField
             {
                 ByDecimalControlFieldName = "FTAXPRICE",
                 DecimalControlFieldName = "FPRICEDIgitS"
             });
             // 金额
             list.Add(new DecimalControlField
             {
                 ByDecimalControlFieldName = "FALLAMOUNT",
                 DecimalControlFieldName = "FAMOUNTDIGITS"
             });
             this.ReportProperty.DecimalControlFieldList = list;
         }
         public override string GetTableName()
         {
             var result = base.GetTableName();
             return result;
         }
         /// <summary>
         /// 向报表临时表,插入报表数据
         /// </summary>
         /// <param name="filter"></param>
         /// <param name="tableName"></param>
         public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName)
         {
             base.BuilderReportSqlAndTempTable(filter, tableName);
 
            // 拼接过滤条件 : filter
             // 略
            
             // 默认排序字段:需要从filter中取用户设置的排序字段
             base.KSQL_SEQ = string.Format(base.KSQL_SEQ, " FID ");
            
             // 取数SQL
             // FID, FEntryId, 编号、状态、物料、数量、单位、单位精度、单价、价税合计
             string sql = string.Format(@"
                                 select t0.FID, t1.FENTRYID
                                        ,t0.FBILLNO
                                        ,t0.FDOCUMENTSTATUS
                                        ,t2.FLOCALCURRID
                                        ,ISNULL(t20.FPRICEDIGITS,4) AS FPRICEDIGITS
                                        ,ISNULL(t20.FAMOUNTDIGITS,2) AS FAMOUNTDIGITS
                                        ,t1.FMATERIALID
                                        ,t1M_L.FNAME as FMaterialName
                                        ,t1.FQTY
                                        ,t1u.FPRECISION as FUnitPrecision
                                        ,t1U_L.FNAME as FUnitName
                                        ,t1f.FTAXPRICE
                                        ,t1f.FALLAMOUNT
                                        ,row_number() over (order by t0.FID) as FIDENTITYID
                                   into {0}
                                   from T_PUR_POORDER t0
                                  inner join T_PUR_POORDERFIN t2 on (t0.FID = t2.FID)
                                   left join T_BD_CURRENCY t20 on (t2.FLOCALCURRID = t20.FCURRENCYID)
                                  inner join T_PUR_POORDERENTRY t1 on (t0.FID = t1.FID)
                                   left join T_BD_MATERIAL_L t1M_L on (t1.FMATERIALID = t1m_l.FMATERIALID and t1M_L.FLOCALEID = 2052)
                                  inner join T_PUR_POORDERENTRY_F t1F on (t1.FENTRYID = t1f.FENTRYID)
                                   left join T_BD_UNIT t1U on (t1f.FPRICEUNITID = t1u.FUNITID)
                                   left join T_BD_UNIT_L t1U_L on (t1U.FUNITID = t1U_L.FUNITID and t1U_L.FLOCALEID = 2052) ",
                         tableName);
             DBUtils.ExecuteDynamicObject(this.Context, sql);
         }
         protected override string GetIdentityFieldIndexSQL(string tableName)
         {
             string result = base.GetIdentityFieldIndexSQL(tableName);
             return result;
         }
         protected override void ExecuteBatch(List<string> listSql)
         {
             base.ExecuteBatch(listSql);
         }
         /// <summary>
         /// 构建出报表列
         /// </summary>
         /// <param name="filter"></param>
         /// <returns></returns>
         /// <remarks>
         /// // 如下代码,演示如何设置同一分组的分组头字段合并
         /// // 需配合Initialize事件,设置分组依据字段(PrimaryKeyFieldName)
         /// ReportHeader header = new ReportHeader();
         /// header.Mergeable = true;
         /// int width = 80;
         /// ListHeader headChild1 = header.AddChild("FBILLNO", new LocaleValue("应付单号"));
         /// headChild1.Width = width;
         /// headChild1.Mergeable = true;
         ///            
        /// ListHeader headChild2 = header.AddChild("FPURMAN", new LocaleValue("采购员"));
         /// headChild2.Width = width;
         /// headChild2.Mergeable = true;
         /// </remarks>
         public override ReportHeader GetReportHeaders(IRptParams filter)
         {
             // FID, FEntryId, 编号、状态、物料、数量、单位、单位精度、单价、价税合计
             ReportHeader header = new ReportHeader();
             // 编号
             var status = header.AddChild("FDocumentStatus", new LocaleValue("状态"));
             status.ColIndex = 0;
             var billNo = header.AddChild("FBillNo", new LocaleValue("单据编号"));
             billNo.ColIndex = 1;
             billNo.IsHyperlink = true;          // 支持超链接
             var material = header.AddChild("FMaterialName", new LocaleValue("物料"));
             material.ColIndex = 2;
             var qty = header.AddChild("FQty", new LocaleValue("数量"), SqlStorageType.SqlDecimal);
             qty.ColIndex = 3;
             var unit = header.AddChild("FUnitName", new LocaleValue("单位"));
             unit.ColIndex = 4;
             var price = header.AddChild("FTAXPRICE", new LocaleValue("含税价"), SqlStorageType.SqlDecimal);
             price.ColIndex = 5;
             var amount = header.AddChild("FALLAMOUNT", new LocaleValue("价税合计"), SqlStorageType.SqlDecimal);
             amount.ColIndex = 6;
             return header;
         }
         public override ReportTitles GetReportTitles(IRptParams filter)
         {
             var result = base.GetReportTitles(filter);
             DynamicObject dyFilter = filter.FilterParameter.CustomFilter;
             if (dyFilter != null)
             {
                 if (result == null)
                 {
                     result = new ReportTitles();
                 }
                 result.AddTitle("F_JD_Date", Convert.ToString(dyFilter["F_JD_Date"]));
             }
             return result;
         }
         protected override string AnalyzeDspCloumn(IRptParams filter, string tablename)
         {
             string result = base.AnalyzeDspCloumn(filter, tablename);
             return result;
         }
         protected override void AfterCreateTempTable(string tablename)
         {
             base.AfterCreateTempTable(tablename);
         }
         /// <summary>
         /// 设置报表合计列
         /// </summary>
         /// <param name="filter"></param>
         /// <returns></returns>
         public override List<SummaryField> GetSummaryColumnInfo(IRptParams filter)
         {
             var result = base.GetSummaryColumnInfo(filter);
             result.Add(new SummaryField("FQty", Kingdee.BOS.Core.Enums.BOSEnums.Enu_SummaryType.SUM));
             result.Add(new SummaryField("FALLAMOUNT", Kingdee.BOS.Core.Enums.BOSEnums.Enu_SummaryType.SUM));
             return result;
         }
         protected override string GetSummaryColumsSQL(List<SummaryField> summaryFields)
         {
             var result = base.GetSummaryColumsSQL(summaryFields);
             return result;
         }
         protected override System.Data.DataTable GetListData(string sSQL)
         {
             var result = base.GetListData(sSQL);
             return result;
         }
         protected override System.Data.DataTable GetReportData(IRptParams filter)
         {
             var result = base.GetReportData(filter);
             return result;
         }
         protected override System.Data.DataTable GetReportData(string tablename, IRptParams filter)
         {
             var result = base.GetReportData(tablename, filter);
             return result;
         }
         public override int GetRowsCount(IRptParams filter)
         {
             var result = base.GetRowsCount(filter);
             return result;
         }
         protected override string BuilderFromWhereSQL(IRptParams filter)
         {
             string result = base.BuilderFromWhereSQL(filter);
             return result;
         }
         protected override string BuilderSelectFieldSQL(IRptParams filter)
         {
             string result = base.BuilderSelectFieldSQL(filter);
             return result;
         }
         protected override string BuilderTempTableOrderBySQL(IRptParams filter)
         {
             string result = base.BuilderTempTableOrderBySQL(filter);
             return result;
         }
         public override void CloseReport()
         {
             base.CloseReport();
         }
         protected override string CreateGroupSummaryData(IRptParams filter, string tablename)
         {
             string result = base.CreateGroupSummaryData(filter, tablename);
             return result;
         }
         protected override void CreateTempTable(string sSQL)
         {
             base.CreateTempTable(sSQL);
         }
         public override void DropTempTable()
         {
             base.DropTempTable();
         }
         public override System.Data.DataTable GetList(IRptParams filter)
         {
             var result = base.GetList(filter);
             return result;
         }
         public override List<long> GetOrgIdList(IRptParams filter)
         {
             var result = base.GetOrgIdList(filter);
             return result;
         }
         public override List<Kingdee.BOS.Core.Metadata.Treenode> GetTreeNodes(IRptParams filter)
         {
             var result = base.GetTreeNodes(filter);
             return result;
         }
     }
 }
 

--结束END--

本文标题: k3cloud新建简单帐表教程

本文链接: https://lsjlt.com/news/187302.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • k3cloud新建简单帐表教程
    简单账表本帖将基于实际开发过程,逐步介绍如何开发出一张全新的简单账表 - 采购日报表1.在BOS设计器中,新建一张空白简单账表简单修改下报表的名称等属性之后,保存即可。图一:新建简单账表图二:简单账表设计器及其关键属性2.开发报表服务端取数...
    99+
    2023-01-31
    简单 教程 k3cloud
  • 教你简单版新手重装系统win7教程
    现在很多电脑都是预装了win10系统了,这对于习惯win7系统的小伙伴来说比较麻烦,有不少网友想要重装win7系统,但是自己不知道如何重装win7。其实我们可以借助一键重装系统工具帮助我们快速安装win7系统,下面就给大家演示下新手重装系统...
    99+
    2023-07-13
  • 2022最新PyCharm安装教程(简单详细)
    2022最新PyCharm安装教程(简单详细) 一、PyCharm简介 PyCharm是一种Python IDE(Integrated Development Environment,集成开发环境),...
    99+
    2023-10-10
    pycharm python ide
  • Redis 集群搭建和简单使用教程
    前言 Redis集群搭建的目的其实也就是集群搭建的目的,所有的集群主要都是为了解决一个问题,横向扩展。 在集群的概念出现之前,我们使用的硬件资源都是纵向扩展的,但是纵向扩展很快就会达到一个极限,单台机器的C...
    99+
    2022-06-04
    集群 简单 教程
  • 简单教程:如何更新Python的pip工具
    Python升级pip的简易教程,需要具体代码示例 一、背景说明在使用Python进行开发过程中,我们经常使用pip来安装、升级和管理第三方库。pip是Python的一个包管理器,用于下载和安装Python包或库,为我们提供了便...
    99+
    2024-01-18
  • Eclipse中Python开发环境搭建简单教程
    一、背景介绍   Eclipse是一款基于Java的可扩展开发平台。其官方下载中包括J2EE方向版本、Java方向版本、C/C++方向版本、移动应用方向版本等诸多版本。除此之外,Eclipse还可以通过安装...
    99+
    2022-06-04
    简单 环境 教程
  • 简单实用的DVWA靶场的搭建教程
    DVWA靶场搭建 1.下载DVWA-master文件,将其放入phpstudy文件夹下的WWW文件夹内,如图: 打开DVWA-master文件下的config文件夹,将config.inc.php....
    99+
    2023-09-20
    php 开发语言 web安全 安全
  • butterfly简单使用教程
    butterfly 可以让你在浏览器中显示日常终端,喜欢吗?一起来试试吧。安装butterfly...
    99+
    2023-06-05
  • w3af简单使用教程
    w3af简单使用教程w3af是一个Web应用程序***和检查框架.该项目已超过130个插件,其中包括检查网站爬虫,SQL注入(SQL Injection),跨站(XSS),本地文件包含(LFI),远程文件包含(RFI)等.该项目的目标是要建...
    99+
    2023-01-31
    简单 教程 w3af
  • MySQL使用简单教程
    本文通过演示如何使用MySQL客户机程序创建和使用一个简单的数据库,允许连接到MySQL服务器、运行查询和查看结果。 mysql也可以在批处理模式下使用:预先将查询放在文件中,然后告诉mysql执行文件的内容。 要查看mysql提供的选项列...
    99+
    2023-08-17
    mysql 服务器 数据库
  • 怎么申请Micrososft帐户?创建Micrososft帐户安装Win10的详细教程
    安装Windows10系统需要用到Micrososft帐户的帐号,我们在安装前如何创建Micrososft帐户呢?下面介绍电脑创建微软帐户的方法。 安装Windows10系统创Micrososft帐户的方法 1、百度搜...
    99+
    2023-06-16
    windows10 microsoft windows10安装方法 windows10安装失败 Micrososft 帐户 教程 Win10
  • Java搭建简单Netty开发环境入门教程
    下面就是准备Netty的jar包了,如果你会maven的话自然是使用maven最为方便了。只需要在pom文件中导入以下几行 <!-- https://mvnreposi...
    99+
    2024-04-02
  • mysql 8.0.12 简单安装教程
    本文为大家分享了mysql 8.0.12 安装教程,供大家参考,具体内容如下 下载地址:地址链接 现在最下边的社区版本,也就是免费版本 之后我们会看到有两个选择的下载,一个为zip压缩包格式,一个是Ins...
    99+
    2024-04-02
  • CentOS安装mysql简单教程
    环境说明 操作系统:CentOS Linux release 7.9.2009 (Core)本次安装MySQL版本:8.0.26连接工具:xshell、xftp(或者其他连接/上传工具) 开始 1、查看centos7中是否有MariaDB,...
    99+
    2023-09-06
    mysql centos 数据库
  • .NET HttpClient简单使用教程
    创建一个名为HttpClientTest的Web API项目 新建Clients文件夹,用于存放自定义的HttpClient 在Clients下新建一个MyHttpClient类...
    99+
    2024-04-02
  • C# Chart 简单使用教程
    Chart控件可以用来绘制波形图、柱状图、饼图、折线图等,用来进行数据表现是很不错的,现在简单说一下这个控件的使用方法 XAML: <Window x:Class="WpfA...
    99+
    2022-11-21
    C# Chart使用 C# Chart
  • Docker swarm 简单使用教程
    swarm 三台虚拟机 132,133,134 1.初始化一个集群 并把自己加入集群中 # 初始化主节点 docker swarm init --advertise-addr 1...
    99+
    2024-04-02
  • Android Studio实现简单的页面跳转(简单教程)
                     项目实现:(实现Android Studio 基本有两种实现方式:一种为.MainActivity跳转;第二种是Relatelayout布局跳转。                   这里着重介绍第一种:(...
    99+
    2023-09-21
    android studio android ide java androidx
  • MyBatis入门实例教程之创建一个简单的程序
    准备: (1) IDEA 2021 (2)Java 1.8 (3)数据库 MySQL 5.7 (SQLyog 或 Navicat) 在 MySQL 中创建数据库 mybatisdem...
    99+
    2024-04-02
  • Python Pandas的简单使用教程
    一、  Pandas简介 Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型...
    99+
    2022-06-02
    Python Pandas使用 Python Pandas
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作