Python开发简单账表
对于公有云发布.NET插件不方便,用Python脚本开发简单账表服务插件,以便快速开发,快速迭代。
简单账表开发教程可参考:https://wenku.my7c.com/article/1094
简单总结一下,需要用代码拼接SQL拼接来构建报表数据源时,就需要用到用简单账表,对于常用场景,对报表不做其他复杂设置的情况下,简单账表的开发一般就是以下几个步骤就OK。
1.新建->空白对象->简单账表。
2.如果需要的话:添加表头字段。添加报表字段(通常都是在取数服务插件中构建,可以不做)
3.新建过滤界面:继承->BOS->应用框架->动态表单->公共过滤
4.开发取数服务插件,看后面的Python脚本参考代码。核心的报表逻辑都在这一步。
5.权限配置。
分享一下如何用Python脚本开发简单账表的取数服务插件。老版本可能不支持,我开发的版本是[V7.6.0.202103],也是比较旧的版本了,高于此版本的环境应该都是可以的。
复制代码,可下载附件
import clr clr.AddReference("System") clr.AddReference("Kingdee.BOS") clr.AddReference("Kingdee.BOS.Core") clr.AddReference("Kingdee.BOS.DataEntity") clr.AddReference("Kingdee.BOS.App") clr.AddReference("Kingdee.BOS.Contracts") clr.AddReference("Kingdee.BOS.ServiceHelper") from Kingdee.BOS import* from Kingdee.BOS.Contracts import* from Kingdee.BOS.Contracts.Report import* from Kingdee.BOS.Core import * from Kingdee.BOS.Core.Metadata import * from Kingdee.BOS.Core.Report import* from Kingdee.BOS.Core.SqlBuilder import* from Kingdee.BOS.App.Data import* from Kingdee.BOS.Orm.DataEntity import* from System import* from System.ComponentModel import* from System.Collections.Generic import* from System.Text import* from System.Threading.Tasks import* from Kingdee.BOS.ServiceHelper import * #初始化 def Initialize(): this.ReportProperty.ReportType=ReportType.REPORTTYPE_NORMAL; this.IsCreateTempTableByPlugin=True; this.ReportProperty.IsGroupSummary=True; #设置标题 def GetReportTitles(Filter): reportTitles=ReportTitles(); #customFiler=Filter.FilterParameter.CustomFilter; return reportTitles; #设置单据列 def GetReportHeaders(Filter): header=ReportHeader(); localEid=this.Context.UserLocale.LCID; header.AddChild("FNumber",LocaleValue("员工编号",localEid)); header.AddChild("FID",LocaleValue("员工ID",localEid)); return header; #创建临时报表 def BuilderReportSqlAndTempTable(rptfilter,tableName): custFilter = rptfilter.FilterParameter.CustomFilter; whereFempId=""; if(custFilter<>None): empObj=custFilter["F_ora_EmpId"]; if(empObj<>None): whereFempId=(" and FID={0} ").format(empObj["Id"]); ##!!!!! FIDENTITYID 一定要从1开始,不然前台显示没数据!!!! sql=("""/*dialect*/ SELECT FIDENTITYID=row_NUMBer() over(order by t1.FID ASC),t1.* INTO {0} FROM ( select FNumber,FID from T_HR_EMPINFO where 1=1 {1} ) t1 """).format(tableName,whereFempId); DBServiceHelper.Execute(this.Context,sql); #关闭清空临时表 def CloseReport(): this.DropTempTable();
Python 开发用什么工具比较好?
为啥什么我只要换一个表就报错,换成采购订单就报
System.ArgumentException: 值“Microsoft.Scripting.Interpreter.InterpretedFrameInfo”不是“System.String”类型,不能在此泛型集合中使用。
参数名: key
大神我想问下,如果要把过滤框的参数传到表头要怎么写
知识点很详细,适合耐心查看学习。打卡签到学习。。。老年卡签到——
老师,我按照您上面的复制过去,改成我自己的测试,提示:查询出现异常。Kingdee.BOS.Orm.Exceptions.ORMDesignException: 实体类型Kd977b6a2c7b7ccc8中不存在名为FENTRYID 的属性
老师,您好,我按照您上面的操作步骤弄,打开报表提示需要配置数据源插件
第4步开发取数服务插件,如果改成统计直接调拨单数据,请教下如何修改
请问第3步,公共过滤框,需要自己把功能添加过来吗?还是这模板自动带出来,我这边按步骤来,打开界面是空的?
在 IronPython.Compiler.Parser.ReportSyntaxError(Int32 start, Int32 end, String message, Int32 errorCode)
难道BOS默默支持了账表插件用python开发了
Python开发简单账表
本文2024-09-16 17:19:10发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-14932.html