11月的时候,应业务要求编制了VBA用于计算提成,前期已经写过一篇文章《使用VBA中的XMLHTTP群发企业微信消息》,12月时,业务提出了新的需求,开始理解其实挺简单的,就是去读取金蝶K3Cloud的数据库中的“直接调拨单或订单中的数据”,实际开始编制数据查询语句时发现不简单啊,过程虽然曲折,但是也弄清楚了K3Cloud的单据的数据库设计的思路,特此记录。
本文阅读者要求:(好像不好找这种人才哦,哈哈,自我陶醉一下)
- 熟悉MS SQL;熟悉SQL语言
- 熟悉金蝶ERP业务(产销存)
- 了解K3Cloud的单据功能
- 了解WK3Cloud的数据库结构
- 了解K3Cloud的WebAPI接口的查询及调试方法
本文过程中需要查阅的相关资料:
-
《金蝶云cloud7.1数据字典》 用于了解数据库字段信息和定义,如果没有可以发电子邮件给我:hoeking@qq.com
-
《K3Cloud的WebAPI接口》 主要用于查找自定义单据中新增的数据,官方数据字典中不包含二开、自定义的单据的数据字段说明,使用和查找方法在K3客户端工具中,不会用可以Baidu。
本文过程中需要的工具:
- 【MSSM V18】 微软官方的数据库管理工具
- 【VSCODE】 微软开源的源代码编辑器,万能工具,我用这个来编写SQL
解决对策
因为业务核算业务员提成时采用的是线下手工核算,因为业务员提成的异常情况和变化太多,目前难以用系统来实现,现在的对策是,人工先从K3客户端中导出基本的数据,然后,通过VBA+SQL方式根据直接调拨单号+物料号,从K3数据库中获取得相关的信息,根据这些信息在结合业务的提成的计算规则编制VBA计算函数,从而计算出结果。
操作流程如下:(注意这里首先还得将提成模板设计好)
-
首先业务人员使用过滤方案“导出租赁提成计算列表”;从K3中导出租赁计提单列表
-
将导出的租赁数据填充到“租赁提成”sheet
-
在“租赁提成”sheet中,点击按钮“获取k3基础信息”
-
使用公式……计算提成 (注意这里首先还得将提成模板设计好)
程序流程如下:
约束条件
- 首先,你需要数据库帐号(我有一个用于只读的数据库帐号),因为得写SQL调试数据。
- 其次,你需要K3应用的管理员帐号,(如果需要查询Webapi的话。)
小技巧
1、将SQL语句构建好放在Excel中,条件参数都定义好,通过VBA将参数获取后替换进去在进行SQL查询。
正题
- 研究K3中的直接调拨单结构。
- 查找相关的表结构
对表结构进行分析后如下:
直接调拨单这三个表核心表: