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

客户端演示demo代码SelfRpt.rar。用户将代码下载解压,打开工程,将会看到如下的工程结构。
工程文件中,只有CallFunc.cls文件需要用户修改,其它的都不需要修改
用户也可以将SelfRpt的工程名进行修改。

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_ParamsSELF_ADD_Params两个函数对SELF_ACCT_NAMESELF_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_CALSELF_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报表公式二次开发指南相关推荐

  1. EAS 取数公式二次开发指南

    取数公式开发指南 只是做报表公式二次开发做一个参考 开发所需要新建的文件 com/kingdee/eas/fi/newrpt/formula/define/ formulas_defination.x ...

  2. [新书推荐]Autodesk地理信息系统解决方案——FDO、MapGuide、AutoCAD® Map 3D二次开发指南...

    MapGuide及其相关技术一直缺乏中文资料,针对这种现状,最近Autodesk上海研究院出版了一本新书,系统的介绍了Autodesk地理信息系统解决方案,包括FDO.MapGuide.Map3D等等 ...

  3. 关于K3wise系列的二次开发

    关于K3wise系列的二次开发 今天收到反馈说PAD端做的外购入库单据没有[含税金额]数据 经分析不管在PAD端还是PC端添加库存单据都会执行 p_UpdateBillRelateData 存储过程 ...

  4. 《Clair二次开发指南1——Clair编译与使用》

    Clair简介: Clair是一个开源项目,用于对应用程序容器中的漏洞进行静态分析,目前支持的容器有appc和docker. Clair目前共发布了21个release,这里我们使用其第20个rele ...

  5. 《Clair二次开发指南2——analyze-local-images源码剖析》

    我们先分析下analyze-local-images这个客户端,然后在下一篇文章中在分析Clair.这样我们可以很清楚的了解到,analyze-local-images向Clair发送了什么数据. 首 ...

  6. ECShop二次开发指南-文件结构(二)

    ecshop文件架构说明 注意:因各版权不一,大概参考 /*  ECShop 2.5.1 的结构图及各文件相应功能介绍  ECShop2.5.1_Beta upload 的目录  ┣ activity ...

  7. Map 3D API二次开发学习指南

    作者:杜长宇 – Autodesk开发技术顾问 2012年9月26日 AutoCAD Map 3D 是构建于AutoCAD之上,面向基础设施领域的产品,他采用FDO技术来实现对业界常见GIS数据格式的 ...

  8. 文件fluent_胡言4种Fluent二次开发姿势

    江湖传言:Fluent有4种二次开发模式. 这里所提的二次开发,指的是在Fluent的基础上开发新的功能.Fluent是商用闭源软件,提供给用户的是经过编译了的可执行文件,故用户难以对软件的核心功能进 ...

  9. IoT开源平台Thingsboard二次开发研究

    ThingsBoard 二次开发指南 参考资料 TB官方文档(英文) Protobuf的讲解 概述 1 整个ThingsBoard的代码中,变量.方法命名规范;2 变量和方法的标识符,字面意思基本能表 ...

最新文章

  1. 如何改进YOLOv3使其更好应用到小目标检测(比YOLO V4高出4%)
  2. Android 关于获取摄像头帧数据解码
  3. 利用memcached做缓存服务器,为后端tomcat服务器做会话保持,利用httpd的jk模块模块做负载均衡...
  4. Linux查看网卡状态
  5. 用_beginthreadex不用 CreateThread
  6. idea中HTML可以打debug吗,Intellij IDEA中使用Debug调试
  7. 八年磨一剑,阿里云ApsaraDB for HBase2.0正式上线 1
  8. python爬虫bs4_Python爬虫系列-Xpath自如和bs4链家
  9. (原创)攻击方式学习之(3) - 缓冲区溢出(Buffer Overflow)
  10. Arcade扩展音色库:Output Arcade Brain Waves Library Content
  11. python: 抓取免费代理ip
  12. 证券计算机行业研究,首创证券-计算机行业深度报告:物联网,研究框架-行业分析-慧博研究报告资讯...
  13. 几款常用UML建模工具介绍
  14. 一个留学生眼中的匹兹堡(图)
  15. 实用应聘技巧(转前沿讲座)
  16. 六、肿瘤RNA突变的全组学研究-肿瘤基因调控(Genomic basis for RNA alterations in cancer)
  17. excel怎么设置自动计算_Excel财务表格大全!公式已设置好,数据自动计算产生...
  18. 谷歌AI聊天机器人Bard答错问题,股价大跌7.4%;淘宝屏蔽ChatGPT;孟晚舟4月将首次当值华为轮值董事长丨每日大事件...
  19. mysql out of range,mysql保存数据提示:Out of range value for column错误
  20. Excel学习日记:L20-excel的12个小技巧

热门文章

  1. idea调试需要的快捷键_Idea 进行断点调试的 快捷键
  2. htmlunit使用代理IP
  3. 校验数值是否在范围内
  4. JS添加多个子节点的方法
  5. Linux下jenkins安装部署
  6. C# sql数据的导入导出
  7. 软件工程—国内核心期刊
  8. #跟我一起写 Makefile# origin函数shell函数
  9. 12星座情人圣诞礼物建议
  10. 一阶RC/RL电路零状态响应