K3WISE报表公式二次开发指南
K/3WISE报表公式二次开发指南
文章目录
- K/3WISE报表公式二次开发指南
- 1、客户端演示插件[SelfRpt.rar](https://pan.baidu.com/s/1gkOzdno3g-eS5-kb7AJhuQ)
- 1.1、 创建插件工程
- 1.2、实现```CallFunc.cls```中的公式注册接口```Funcs```
- 1.2.1、实现接口```Funcs```
- 1.2.2、实现接口```Funcs```中调用的公式描述函数
- 1.3、实现```CallFunc.cls```中的公式取数接口```GetData```
- 1.3.1、实现接口```GetData```
- 1.3.2、实现接口```GetData```中调用的公式函数
- 1.4、实现```CallFunc.cls```中的其他两个接口
- 2、演示插件部署
- 2.1、配置```RPTFUNC.ini```
- 2.2、注册插件
- 3、演示插件效果
- 3.1、公式```SELF_ACCT_NAME```的演示
- 3.2、公式```SELF_ADD```的演示
1、客户端演示插件SelfRpt.rar
MMTS.bas
,ModPub.bas
,GLobal.bas
包含了一些基础的函,RptFunc.RES
为资源文件
Func.cls
公式实体类,包含公式的一些属性
Funcs.cls
公式实体集合
Param.cls
公式中的参数实体类,包含公式参数的一些属性
Params.cls
参数实体集合,在公式实体类中包含
- 需要修改的文件
CallFunc.cls
提供给外界调用的类, 包含了四个用户需要实现的接口函数
' 1. 参数可选值列表 接口函数(可以不修改)
Public Function GetParamValueList(sFunc As String, sParam As String, sParamText As String) As Variant
' 2. 公式参数的F7帮助 接口函数(可以不修改)
Public Function GetParamValue(sFunc As String, sParam As String, sParamText As String) As String
' 3. 自定义公式注册 接口函数(必须修改)
Public Property Get Funcs(ByVal sDefDsn As String) As Funcs
' 4. 公式运算取数 接口函数(必须修改)
Public Function GetData(ByVal sFunc As String, Params As Variant, sErr As String) As Variant
1.1、 创建插件工程
打开VB创建工程,添加MMTS.bas
,ModPub.bas
,GLobal.bas
,CallFunc.cls
,Func.cls
,Funcs.cls
,Param.cls
,Params.cls
,RptFunc.RES
文件,保存且修改工程名。
用户可以不用创建工程,直接对SelfRpt.rar进行修改工程名及CallFunc.cls
文件
1.2、实现CallFunc.cls
中的公式注册接口Funcs
1.2.1、实现接口Funcs
FuncType = LoadKDString("自定义报表函数")
为公式类型名,在该类型下有两个公式SELF_ACCT_NAME
, SELF_ADD
。
SELF_ACCT_NAME_Params
,SELF_ADD_Params
两个函数对SELF_ACCT_NAME
,SELF_ADD
两个公式进行了描述。
K3报表中将会调用的Funcs
接口
'应实现的接口,使K3报表获取自定义函数,函数信息注册
Public Property Get Funcs(ByVal sDefDsn As String) As FuncsDim oFunc As FuncDim FuncType As StringmConnectionStr = sDefDsnFuncType = LoadKDString("自定义报表函数")'公式1: SELF_ACCT_NAME 用于获得科目名称Set oFunc = mvarFuncs.Add("SELF_ACCT_NAME", "SELF_ACCT_NAME") '自定义的函数,用于获取科目名SELF_ACCT_NAME_Params oFunc, FuncType'公式2: SELF_ADD 用于做加法Set oFunc = mvarFuncs.Add("SELF_ADD", "SELF_ADD") '自定义的函数,用于做加法SELF_ADD_Params oFunc, FuncTypeSet Funcs = mvarFuncsSet oFunc = Nothing
End Property
1.2.2、实现接口Funcs
中调用的公式描述函数
接口Funcs
中调用了SELF_ACCT_NAME_Params
,SELF_ADD_Params
两个函数,这两个函数分别对两个公式及其参数进行了描述。
下面以SELF_ADD_Params
为例,展示如何对公式进行描述。
SELF_ADD_Params
描述了一个名为SELF_ADD的加法公式,公式有两个参数值1与值2,参数类型及返回值类型都是vbString
'公式2参数描述
'oFunc: 为公式实体
'FuncType: 公式类型
Private Sub SELF_ADD_Params(ByRef oFunc As Func, ByVal FuncType As String)Dim objParam As ParamDim objParams As New Params'公式的参数描述Set objParams = New Params'参数1Set objParam = objParams.Add("Value1", "Value1")With objParam.DataType = vbString '参数的数据类型.DefValue = 0 '参数默认值.IsCustomWnd = True.ParamName = LoadKDString("值1").ParamDes = LoadKDString("输入数值,按F7没有用的。")End With'参数2Set objParam = objParams.Add("Value2", "Value2")With objParam.DataType = vbString '参数的数据类型.DefValue = 0 '参数默认值.IsCustomWnd = True.ParamName = LoadKDString("值2").ParamDes = LoadKDString("输入数值,按F7没有用的。")End With'公式描述With oFunc.FuncName = "SELF_ADD".GroupName = FuncType.ResultType = vbString.FixParamNum = True.MinParamNum = 0.MaxParamNum = 2.FuncDes = LoadKDString("两数相加")Set .ParamsInfo = objParamsEnd WithSet objParam = NothingSet objParams = Nothing
End Sub
1.3、实现CallFunc.cls
中的公式取数接口GetData
1.3.1、实现接口GetData
K3报表公式运算时将会调用GetData
接口,以获取公式运算结果。GetData
会根据公式名称去调用公式。
这里GetData
调用了实现的两个公式函数 SELF_ACCT_NAME_CAL
,SELF_ADD_CAL
。
'取数(老报表系统接口函数)
'sFunc: 为需要调用的公式名
'Params: 为公式的参数数组
'sErr: 为计算错误,返回的错误信息
Public Function GetData(ByVal sFunc As String, Params As Variant, sErr As String) As VariantOn Error GoTo ErrHandleDim tempParams As VariantSelect Case sFunc'调用公式1Case "SELF_ACCT_NAME"If Params(0) = "" Then '当参数为默认值时GetData = ""ElseGetData = SELF_ACCT_NAME_CAL(sFunc, Params, sErr)End If'调用公式2Case "SELF_ADD"GetData = SELF_ADD_CAL(sFunc, Params, sErr)End SelectExit Function
ErrHandle:sErr = LoadKDString("#取数错误,错误信息:") & Err.Description
End Function
1.3.2、实现接口GetData
中调用的公式函数
实现SELF_ACCT_NAME_CAL
与SELF_ADD_CAL
两个公式运算函数。以SELF_ACCT_NAME_CAL
函数为例,如下面代码。
先对Params
中的参数进行检查,Params
是否为数组,Params(0)是否为空。
再根据参数,组装SQL进行数据库读取。这里使用的是Set rs = GLData.GetAnyRecordset(sql)
进行数据库查找。
'公式1主体
'sFunc: 为需要调用的公式名
'Params: 为公式的参数数组
'sErr: 为计算错误,返回的错误信息
Private Function SELF_ACCT_NAME_CAL(ByVal sFunc As String, Params As Variant, sErr As String) As Variant'取出报表默认设置Dim lRptYear As LongDim lRptPeriod As LongDim lRptEndPeriod As LongDim sRptCurrency As StringDim lErrCode As LongDim bIsTemplate As Boolean'此处没有使用上lRptYear = Properties("RPTYEAR") '默认年度lRptPeriod = Properties("RPTPERIOD") '默认期间lRptEndPeriod = Properties("RptEndPeriod") '默认结束期间sRptCurrency = Properties("RptCurCurrency") '默认货币'参数检查 ,最好做一下参数内容的检查If Not IsArray(Params) Then Exit Function'计算公式Dim strAcct As StringDim rs As ADOR.RecordsetDim sql As StringstrAcct = Params(0)If strAcct = vbNullString ThensErr = "#" & LoadKDString("科目代码为空")Exit FunctionEnd If'查找数据库sql = "SELECT FName FROM t_Account WHERE FNumber = '" & strAcct & "'"Set rs = GLData.GetAnyRecordset(sql)If Not rs.EOF Then SELF_ACCT_NAME_CAL = "" & rs!FName '返回公式结果rs.CloseSet rs = Nothing
End Function
1.4、实现CallFunc.cls
中的其他两个接口
修改GetParamValueList
,GetParamValue
两个接口函数,如果需要使用就修改,不用,就不要修改。
演示插件SelfRpt.rar中实现了GetParamValue
,而没有修改GetParamValueList
。
GetParamValue
的实现使得,在输入参数是可以使用F7
进行查找
代码Set CFilter = CreateObject("EBCGLView.GLView") Set retcol = CFilter.AccountLookup
将会显示科目查询窗体。
'///添加公式为SELF_ACCT_NAME时的F7帮助
Public Function GetParamValue(sFuncName As String, sParamName As String, sParamText As String) As StringDim CFilter As ObjectSelect Case sFuncNameCase "SELF_ACCT_NAME"Dim retcol As ObjectSet CFilter = CreateObject("EBCGLView.GLView")Set retcol = CFilter.AccountLookup'显示查询窗体If Not retcol.ReturnObject Is Nothing ThenGetParamValue = retcol.ReturnObject.NumberEnd IfSet retcol = NothingEnd SelectSet CFilter = Nothing
End Function
2、演示插件部署
2.1、配置RPTFUNC.ini
在Kingdee的K3ERP目录有一个RPTFUNC.ini
文件。
将SelfRpt.CallFucn
放入RPTFUNC.ini
文件中,如下图所示,SelfRpt
为组件名
2.2、注册插件
代码编写完成以后,进行组件编译,生成SelfRpt.dll
组件
将SelfRpt.dll
组件放入Kingdee的K3ERP目录中
将组件使用Regsvr32注册
3、演示插件效果
3.1、公式SELF_ACCT_NAME
的演示
根据科目代码读取科目名称,公式运算的时候,会调用接口GetData
,接口GetData
会调用SELF_ACCT_NAME_CAL
函数
使用F7
快捷键查找科目代码,将会调用接口GetParamValue
,显示查询窗体
3.2、公式SELF_ADD
的演示
根据科目代码读取科目名称,公式运算的时候,会调用接口GetData
,接口GetData
会调用SELF_ADD_CAL
函数
K3WISE报表公式二次开发指南相关推荐
- EAS 取数公式二次开发指南
取数公式开发指南 只是做报表公式二次开发做一个参考 开发所需要新建的文件 com/kingdee/eas/fi/newrpt/formula/define/ formulas_defination.x ...
- [新书推荐]Autodesk地理信息系统解决方案——FDO、MapGuide、AutoCAD® Map 3D二次开发指南...
MapGuide及其相关技术一直缺乏中文资料,针对这种现状,最近Autodesk上海研究院出版了一本新书,系统的介绍了Autodesk地理信息系统解决方案,包括FDO.MapGuide.Map3D等等 ...
- 关于K3wise系列的二次开发
关于K3wise系列的二次开发 今天收到反馈说PAD端做的外购入库单据没有[含税金额]数据 经分析不管在PAD端还是PC端添加库存单据都会执行 p_UpdateBillRelateData 存储过程 ...
- 《Clair二次开发指南1——Clair编译与使用》
Clair简介: Clair是一个开源项目,用于对应用程序容器中的漏洞进行静态分析,目前支持的容器有appc和docker. Clair目前共发布了21个release,这里我们使用其第20个rele ...
- 《Clair二次开发指南2——analyze-local-images源码剖析》
我们先分析下analyze-local-images这个客户端,然后在下一篇文章中在分析Clair.这样我们可以很清楚的了解到,analyze-local-images向Clair发送了什么数据. 首 ...
- ECShop二次开发指南-文件结构(二)
ecshop文件架构说明 注意:因各版权不一,大概参考 /* ECShop 2.5.1 的结构图及各文件相应功能介绍 ECShop2.5.1_Beta upload 的目录 ┣ activity ...
- Map 3D API二次开发学习指南
作者:杜长宇 – Autodesk开发技术顾问 2012年9月26日 AutoCAD Map 3D 是构建于AutoCAD之上,面向基础设施领域的产品,他采用FDO技术来实现对业界常见GIS数据格式的 ...
- 文件fluent_胡言4种Fluent二次开发姿势
江湖传言:Fluent有4种二次开发模式. 这里所提的二次开发,指的是在Fluent的基础上开发新的功能.Fluent是商用闭源软件,提供给用户的是经过编译了的可执行文件,故用户难以对软件的核心功能进 ...
- IoT开源平台Thingsboard二次开发研究
ThingsBoard 二次开发指南 参考资料 TB官方文档(英文) Protobuf的讲解 概述 1 整个ThingsBoard的代码中,变量.方法命名规范;2 变量和方法的标识符,字面意思基本能表 ...
最新文章
- 如何改进YOLOv3使其更好应用到小目标检测(比YOLO V4高出4%)
- Android 关于获取摄像头帧数据解码
- 利用memcached做缓存服务器,为后端tomcat服务器做会话保持,利用httpd的jk模块模块做负载均衡...
- Linux查看网卡状态
- 用_beginthreadex不用 CreateThread
- idea中HTML可以打debug吗,Intellij IDEA中使用Debug调试
- 八年磨一剑,阿里云ApsaraDB for HBase2.0正式上线 1
- python爬虫bs4_Python爬虫系列-Xpath自如和bs4链家
- (原创)攻击方式学习之(3) - 缓冲区溢出(Buffer Overflow)
- Arcade扩展音色库:Output Arcade Brain Waves Library Content
- python: 抓取免费代理ip
- 证券计算机行业研究,首创证券-计算机行业深度报告:物联网,研究框架-行业分析-慧博研究报告资讯...
- 几款常用UML建模工具介绍
- 一个留学生眼中的匹兹堡(图)
- 实用应聘技巧(转前沿讲座)
- 六、肿瘤RNA突变的全组学研究-肿瘤基因调控(Genomic basis for RNA alterations in cancer)
- excel怎么设置自动计算_Excel财务表格大全!公式已设置好,数据自动计算产生...
- 谷歌AI聊天机器人Bard答错问题,股价大跌7.4%;淘宝屏蔽ChatGPT;孟晚舟4月将首次当值华为轮值董事长丨每日大事件...
- mysql out of range,mysql保存数据提示:Out of range value for column错误
- Excel学习日记:L20-excel的12个小技巧