Download presentation
Presentation is loading. Please wait.
1
K/3 Cloud BOS技术开发培训 -- 套打设计和报表开发
注:云图标可根据标题长度适度调整移动,以标题右上角,与标题上、右均等距离7个像素为标准。
2
课程说明: 课程简介: 本课程介绍K/3 Cloud BOS 平台的套打设计器环境(NotePrint IDE)、套打模板设计与应用、报表设计与开发,以功能讲解辅之案例演练帮助学员快速掌握K/3 Cloud BOS平台的核心功能。 本课程偏重实践,少理论;适合开发者学习 讲师:
3
目录 NotePrint IDE(套打设计器平台) 报表设计与开发 套打是什么 认识NotePrint IDE 如何开始 如何应用 概述
新建套打模板 设计套打模板 属性设置 如何应用 报表设计与开发 概述 报表界面设计 报表过滤界面设计 报表数据源开发 自定义直接SQL报表
4
套打是什么 功能说明 客户价值 简单地说,就是在印刷好的表格中打印内容; 在印刷好的发票上打印发票金额等内容;
在印刷好的记账凭证中打印凭证借贷方金额等内容;
5
认识 NotePrint IDE 菜单栏 工具栏 工具箱 项目栏 设计区 属性栏 输出栏 任务栏 主要功能 客户价值
可视化、技术无 关的套打设计平 台; 菜单栏 工具栏 工具箱 项目栏 设计区 打印模板自行设计; 灵活应用、易学易 用;且所见即所得; 属性栏 输出栏 任务栏
6
认识 NotePrint IDE – 菜单 功能说明 客户价值 提供设计器的各种操作菜单 丰富的菜单功能,方便的进行设计
7
认识 NotePrint IDE – 项目管理器
功能说明 客户价值 1)项目:列出当前子系统的套打模板 2)导航树:列出当前套打上所有元素 3)数据源:列出当前业务对象所有数据字段信息 分类列出模板、元素集合、数据源集合,方便操作
8
认识 NotePrint IDE – 工具箱 功能说明 客户价值 列出业务对象设计时需要使用到的4种控件元素 简单、抽象、使用方便
9
认识 NotePrint IDE – 设计区 功能说明 客户价值 图形化的设计区域 所见即所得
10
如何开始 – 新建套打模板 功能说明 客户价值 首先登陆套打IDE,工具栏新建,选择需要设计套打的单据或基础资料
通过新建复制等方式设计用户自己的套打,所见即所得,支撑平滑升级
11
从工具箱拖入控件,从数据源窗口拖入字段数据源至控件
如何开始 – 设计模板 从工具箱拖入控件,从数据源窗口拖入字段数据源至控件 功能说明 拖拉控件 设置属性 绑定数据源 客户价值 方便快捷的设计套打模板 登陆套打设计器,点击【新建】按钮,打开新建向导; 添加工具箱文本、数据表格、布局表格等控件至套打设计界面,将数据源栏字段拖放至控件内,实现控件与数据源关联;
12
如何开始 – 元素属性设置 功能说明 客户价值 拖拉控件 设置属性 绑定数据源 方便快捷的设计套打模板
登陆套打设计器,点击【新建】按钮,打开新建向导; 添加工具箱文本、数据表格、布局表格等控件至套打设计界面,将数据源栏字段拖放至控件内,实现控件与数据源关联;
13
如何应用 – 套打设置 功能说明 客户价值 配置单据默认套打模 板; 单据类型中配置套打 模板;
通过BOS IDE单据属性为单据配置默认套打模板 功能说明 单据类型维护界面,支持为单据类型选择套打模板 单据界面支持配置单据套打模板 配置单据默认套打模 板; 单据类型中配置套打 模板; 客户价值 方便快捷的为单据配置套打模板; 设计时配置:设计时通过业务对象的【默认套打模板】属性,配置 该业务对象的默认套打模板; 运行时配置:运行时通过单据类型中的【默认套打模板】属性,配 置该单据类型的默认套打模板; 运行时通过单据界面:工具栏【套打设置】按钮,选择单据的套打模板进行打印; 单据类型:单据针对不同业务应用的分类。例如采购订单可分为:标准采购订单、标准委外订单、资产采购订单、直运采购订单等;
14
如何应用– 套打使用 功能说明 客户价值 运行时单据界面、单据列表界面,对单据进行套打打印; 点击工具栏打印按钮,进行单据套打打印
单据列表界面工具栏,支持单据批量套打打印 运行时单据界面、单据列表界面,对单据进行套打打印; 客户价值 通过单据工具栏打印操作,进行单据套打; 套打设计、套打配置完成之后,运行时单据界面、单据列表界面,选择工具栏打印操作,对单据进行套打打印;
15
小结 套打设计器IDE介绍 新建套打模板 设计套打模板 配置和应用套打
16
目录 NotePrint IDE(套打设计器平台) 报表设计与开发 套打是什么 认识NotePrint IDE 如何开始 如何应用 概述
新建套打模板 设计套打模板 属性设置 如何应用 报表设计与开发 概述 报表界面设计 报表过滤界面设计 报表数据源开发 自定义直接SQL报表
17
概述 功能说明 客户价值 账表分类:简单账表、分页账表、树形账表、直接SQL账表 快速定制个性化的业务报表 简单账表 树形账表 分页账表
18
如何开始 – 设计过程 了解需求 设计准备 界面设计 数据源插件开发 过滤设计 过滤插件开发
19
如何开始 – 新增报表对象 功能说明 客户价值 通过向导新增 新增模式: 新增 复制 多种新增模式
继承差量化存储,隔离基类模板与派生报表,支撑平滑升级
20
如何开始 – 新增报表对象 功能说明 客户价值 通过向导新增 新增模式: 新增 复制 多种新增模式
继承差量化存储,隔离基类模板与派生报表,支撑平滑升级
21
报表界面设计 – 表单属性 功能说明 客户价值 报表的整体属性, 配置方法 业务对象的个性通过属性配置实现
22
报表界面设计 – 参数介绍 功能说明 客户价值 报表的整体属性, 配置方法 业务对象的个性通过属性配置实现 参数为什么不放在过滤界面?
23
报表界面设计 – 菜单 功能说明 客户价值 报表的整体属性, 配置方法 业务对象的个性通过属性配置实现
24
过滤界面设计 功能说明 客户价值 过滤表单最重要的属性是设置控件的字段集合以及添加快捷过滤字段 按需过滤设计
25
过滤界面设计 功能说明 客户价值 过滤表单最重要的属性是设置控件的字段集合以及添加快捷过滤字段 按需过滤设计
26
过滤界面设计 功能说明 客户价值 过滤表单最重要的属性是设置控件的字段集合以及添加快捷过滤字段 按需过滤设计
27
报表数据源开发-接口关系图 功能说明 客户价值 数据源插件接口类图 根据接口关系图按需实现接口
28
报表数据源开发-报表属性 ReportProperty属性 IdentityFieldName
分页顺序字段名,实模式取数必须设置,插件可以修改 GroupSummaryInfoData 分组信息数据(包含默认分组字段、分组级次字段等信息) IsDefaultOnlyDspSumAndDetailData 默认只显示合计和明细数据,不显示小计数据 IsGroupSummary 标识报表是否支持分组汇总 IsUIDesignerColumns 标识报表的列必须通过UI设计,不考虑动态列 SimpleAllCols 是否锁定表格列 VirtualMode 是否虚模式取数 ReportName 报表名称
29
报表数据源开发-报表属性 ReportProperty属性 DetailReportId
明细报表的FormId(报表表单标识),用于单明细报表 DetailReportFormIdFieldName 明细报表的FormId存储字段名,用于多明细报表 DetailReportType 明细报表类型 BillKeyFieldName 联联单据主键字段名 BillTypeFieldName 联查单据对应的单据类型名称 FormIdFieldName 联联单据FormId字段名 DecimalControlFieldList 精度控制字段集合
30
报表数据源开发- 报表查询参数 IRptParams参数的属性和方法 CurrentPosition
报表当前位置,除分页报表外,该值始终是0 StartRow 报表取数开始行号 EndRow 报表取数结束行号 IsRefresh 报表是否重新刷新取数 IsOnlyQuerySumData 只查询汇总数据 FilterParameter 过滤条件 ParameterData 用户参数
31
报表数据源开发- 报表查询参数 IRptParams参数的属性和方法 CustomParams
报表其他参数,可以任意添加(如发布报表定义的参数) FilterFieldInfo 过滤字段元数据信息 GetParentReportFilter() 获得父报表过滤条件 GetParentReportCurrentRow() 获得父报表当前行数据 GetFirstParentReportFilter() 报表穿透,获得第一个报表的过滤条件 GetParentReportCurrentConditionData() 获得父报表是分页报表的当前分页条件
32
报表数据源开发-组件引用 功能说明 客户价值 插件开发示例 报表数据源插件简单示例参考
33
报表数据源开发-代码示例(简单报表) 功能说明 客户价值 插件开发示例 报表数据源插件简单示例参考 using System;
using System.Text; using System.Linq; using System.Collections.Generic; using System.Data; using Kingdee.BOS.Core.Report; using Kingdee.BOS.Core.Report.PlugIn; using Kingdee.BOS.Core.CommonFilter; using Kingdee.BOS.App.Data; using Kingdee.BOS.Contracts.Report; using Kingdee.BOS.Util; using Kingdee.BOS.Core.List; using Kingdee.BOS; /// <summary> { namespace Kingdee.BOS.Demo.Report /// 报表演示示例 public class DemoSysReport : SysReportBaseService /// </summary> /// 报表初始化 public override void Initialize() this.ReportProperty.BillKeyFieldName = "FID"; this.ReportProperty.IsGroupSummary = true; } /// 创建临时表 public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName) /// <param name="tableName"></param> /// <param name="filter"></param> LEFT JOIN T_BD_MATERIAL_L B ON A.FMATERIALID=B.FMATERIALID AND B.FLOCALEID=2052 {0} INTO {1} FROM T_SAL_ORDERENTRY A string sSQL B.FNAME AS FWNAME,C.FCUSTID,D.FNAME AS FCNAME,A.* ,F.FAMOUNT,3 AS FAMOUNT_DECIMAL,F.FPRICE, LEFT JOIN T_SAL_ORDER C ON A.FID=C.FID KSQL_SEQ = string.Format(KSQL_SEQ, "a.FID asc"); LEFT JOIN T_SAL_ORDERENTRY_F F ON A.FENTRYID=F.FENTRYID"; LEFT JOIN T_BD_CUSTOMER_L D ON C.FCUSTID=D.FCUSTID AND D.FLOCALEID=2052 sSQL = string.Format(sSQL, this.KSQL_SEQ, tableName); DBUtils.Execute(this.Context, sSQL); /// 设置汇总列信息 /// <returns></returns> public override List<Core.Report.SummaryField> GetSummaryColumnInfo(IRptParams filter) summarys.Add(new Core.Report.SummaryField("FQty", Core.Enums.BOSEnums.Enu_SummaryType.SUM)); List<Core.Report.SummaryField> summarys = new List<Core.Report.SummaryField>(); summarys.Add(new Core.Report.SummaryField("FPrice", Core.Enums.BOSEnums.Enu_SummaryType.SUM)); return summarys; summarys.Add(new Core.Report.SummaryField("FAmount", Core.Enums.BOSEnums.Enu_SummaryType.SUM)); /// 构建动态列 public override ReportHeader GetReportHeaders(IRptParams filter) header.AddChild("FWName", new LocaleValue("物料", this.Context.UserLocale.LCID)); ReportHeader header = new ReportHeader(); header.AddChild("FCustId", new LocaleValue("客户", this.Context.UserLocale.LCID)); header.AddChild("FAmount", new LocaleValue("金额", this.Context.UserLocale.LCID), SqlStorageType.SqlDecimal); header.AddChild("FPrice", new LocaleValue("单价", this.Context.UserLocale.LCID), SqlStorageType.SqlDecimal); header.AddChild("FQty", new LocaleValue("数量", this.Context.UserLocale.LCID),SqlStorageType.SqlDecimal); return header;
34
自定义直接SQL报表 功能说明 客户价值 自定义SQL 自定义查询条件 用户通过自定义SQL,快速开发符合需求的简单报表
using System; using System.Text; using System.Linq; using System.Collections.Generic; using System.Data; using Kingdee.BOS.Core.Report; using Kingdee.BOS.Core.Report.PlugIn; using Kingdee.BOS.Core.CommonFilter; using Kingdee.BOS.App.Data; using Kingdee.BOS.Contracts.Report; using Kingdee.BOS.Util; using Kingdee.BOS.Core.List; using Kingdee.BOS; /// <summary> { namespace Kingdee.BOS.Demo.Report /// 报表演示示例 public class DemoSysReport : SysReportBaseService /// </summary> /// 报表初始化 public override void Initialize() this.ReportProperty.BillKeyFieldName = "FID"; this.ReportProperty.IsGroupSummary = true; } /// 创建临时表 public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName) /// <param name="tableName"></param> /// <param name="filter"></param> LEFT JOIN T_BD_MATERIAL_L B ON A.FMATERIALID=B.FMATERIALID AND B.FLOCALEID=2052 {0} INTO {1} FROM T_SAL_ORDERENTRY A string sSQL B.FNAME AS FWNAME,C.FCUSTID,D.FNAME AS FCNAME,A.* ,F.FAMOUNT,3 AS FAMOUNT_DECIMAL,F.FPRICE, LEFT JOIN T_SAL_ORDER C ON A.FID=C.FID KSQL_SEQ = string.Format(KSQL_SEQ, "a.FID asc"); LEFT JOIN T_SAL_ORDERENTRY_F F ON A.FENTRYID=F.FENTRYID"; LEFT JOIN T_BD_CUSTOMER_L D ON C.FCUSTID=D.FCUSTID AND D.FLOCALEID=2052 sSQL = string.Format(sSQL, this.KSQL_SEQ, tableName); DBUtils.Execute(this.Context, sSQL); /// 设置汇总列信息 /// <returns></returns> public override List<Core.Report.SummaryField> GetSummaryColumnInfo(IRptParams filter) summarys.Add(new Core.Report.SummaryField("FQty", Core.Enums.BOSEnums.Enu_SummaryType.SUM)); List<Core.Report.SummaryField> summarys = new List<Core.Report.SummaryField>(); summarys.Add(new Core.Report.SummaryField("FPrice", Core.Enums.BOSEnums.Enu_SummaryType.SUM)); return summarys; summarys.Add(new Core.Report.SummaryField("FAmount", Core.Enums.BOSEnums.Enu_SummaryType.SUM)); /// 构建动态列 public override ReportHeader GetReportHeaders(IRptParams filter) header.AddChild("FWName", new LocaleValue("物料", this.Context.UserLocale.LCID)); ReportHeader header = new ReportHeader(); header.AddChild("FCustId", new LocaleValue("客户", this.Context.UserLocale.LCID)); header.AddChild("FAmount", new LocaleValue("金额", this.Context.UserLocale.LCID), SqlStorageType.SqlDecimal); header.AddChild("FPrice", new LocaleValue("单价", this.Context.UserLocale.LCID), SqlStorageType.SqlDecimal); header.AddChild("FQty", new LocaleValue("数量", this.Context.UserLocale.LCID),SqlStorageType.SqlDecimal); return header;
35
小结 报表分类 报表的设计过程 报表界面设计及属性 报表过滤界面设计及属性 报表数据源插件接口 报表数据源属性 报表查询参数说明
自定义直接SQL报表
Similar presentations