8. 公司内部用钉钉审批,但财务系统需要金蝶凭证,如何用Python脚本实现自动同步?

2026-06-17

兄弟们,今天聊个实在的活儿。相信很多公司的IT都困在这个场景里:业务人员在钉钉上提交报销、付款申请,审批流程走完了,财务同学却得对着钉钉截图,手工往金蝶里一条条录凭证。要是碰上月底冲业绩,几百张单据够财务小姐姐加好几个通宵。

老板觉得你IT不行:“钉钉都审批完了,怎么凭证还得手动录?”财务觉得你IT不专业:“就不能让系统自己导过去吗?”——你夹在中间,两头受气。其实这事儿真不复杂,一个Python脚本就能搞定,今天就跟大家掰扯掰扯。

痛点先摆清楚

先说说为啥手工录这么坑。就拿我们公司举例:差旅报销在钉钉里填,分管领导、财务经理、总经理三道审批,流程走完,钉钉生成一个表单ID。然后财务拿着这个ID去钉钉后台导出Excel,再按金蝶的科目、部门、摘要格式手动录入。一个月平均200张凭证,每张按10个分录算,就是2000条。人工录入出错率大概5%—10%,经常出现科目选错、金额对不上,月结时来回扯皮。

而且这不是技术上的高难度问题,纯粹是重复劳动。我们IT老炮最看不惯这种事:能用系统干的活,非要堆人头。

思路就一句话:搭个“数据中转站”

核心逻辑其实特别简单:把钉钉审批单当成“包裹”,我们的Python脚本就是“快递中转站”,金蝶就是“最终收货人”。脚本每天定时去钉钉拿包裹,拆开看看里面有什么(申请金额、费用类型、部门、备注),然后打包成金蝶认得的格式,通过金蝶的接口扔进去。

打个比方:钉钉说的是“中文”,金蝶说的“英文”,Python脚本就是翻译官。翻译官不需要懂语法,只负责把字段从A映射到B。

具体怎么干?分三步走

第一步:让钉钉“开口说话”

钉钉提供开放平台接口,你得先注册一个企业内部应用,拿到AppKey和AppSecret。然后调用 get_process_instance 相关API,就能拉取已审批通过的实例数据。这里要注意:钉钉返回的数据是JSON格式,里面会有诸如 money, dept, feeType 那些你自定义的控件ID。你需要在脚本里写个映射表,比如:

# 钉钉控件ID -> 金蝶字段翻译
mapping = {
    "DDHrmTravel-amount": "FAmount",
    "DDHrmTravel-dept": "FDepartment"
}

这块最容易踩坑:不同版本的钉钉应用,控件ID名字千奇百怪。建议先拉一条数据打印出来看,一个个对着配。

第二步:让金蝶“接得住”

金蝶(比如K3 WISE或Cloud)有WebAPI,也有SDK。最通用的是调用它的WebService接口,传入XML或JSON凭证对象。你需要知道:金蝶的凭证写入接口叫 SaveVoucher,需要传递一个包含“凭证头”和“凭证分录”的结构。

头信息包括:凭证日期、凭证字、制单人。分录包括:摘要、科目、借方金额、贷方金额、辅助核算(部门、职员等)。

难的是辅助核算映射。比如钉钉里选的“销售部”,金蝶的部门编码是“02”。这个你得提前导出一份金蝶的部门档案,在脚本里维护一个映射字典。

第三步:定时执行,加异常通知

写个循环,每天凌晨或每小时跑一次。核心逻辑:

  1. 查钉钉最近未同步的审批实例(用状态或时间戳)
  2. 解析数据,按映射组装金蝶凭证
  3. 调用金蝶API创建凭证,记录成功/失败
  4. 如果有失败(比如科目不存在、金额负数),发钉钉机器人消息通知财务

我一般用 scheduleAPScheduler 库,配合 logging 记录日志。上线前最好拉一个月历史数据批量跑一遍,看成功率。

几个坑,帮你们提前踩

坑一:金额精度
钉钉表单上写的是“¥1,234.56”,金蝶只认“1234.56”,不处理逗号会报错。

坑二:重复同步
万一脚本中途挂了,重新跑时可能会重复写入凭证。解决办法:在钉钉数据处理上加“已同步”标记(可以用本地数据库表,或者读取钉钉审核时间戳)。

坑三:金蝶版本差异
K3 Cloud和KIS的API不一样。如果你们用的是金蝶云星空(Cloud),它的接口比较规范;如果是老K3,可能需要用中间件或直接操作数据库(不推荐,风险大)。

坑四:审批中途撤销
钉钉的审批单状态可能会从“已通过”变成“已撤销”。脚本必须判断状态变更,如果是撤销,得调用金蝶的删除凭证接口(或者让财务人工冲销)。

实际效果怎么样?

我们跑了半年,每月同步凭证平均600条,脚本耗时不到3分钟。财务再也不抱怨了,月底结账提前两天完成。唯一的问题是,某次金蝶升级临时改了接口地址,脚本报错没人发现,差点耽误月报。后来加了钉钉机器人告警,再没出过事。

如果你觉得自己写脚本太费事,或者团队没有Python能力,也可以找现成的低代码工具。比如之前我在 itfangan.com 上看到一个方案,叫“钉钉审批自动生成金蝶凭证”,直接配置表单字段映射就行,不用写代码。类似方案还有很多,不同规模的公司适配不同,大家可以上去逛逛,兴许就找到现成的。

最后说两句

自动同步这事儿,技术上没难度,难的是跨部门沟通和理解业务逻辑。写脚本的时候,最好拉上财务跟业务一起确认字段映射,别闷头写完了发现科目对不上。刚开始用的时候,先手工核验一周,确认无误再全自动。

好了,今天的分享就到这儿。你们公司要是也有类似的需求,或者已经踩过什么坑,欢迎留言交流。更多方案也可直接访问 itfangan.com,说不定能省你几个通宵。