一、那个让我失眠的周五下午
2025年2月,我坐在办公室,盯着屏幕上的金蝶云星空。
44家分子公司的报表和科目余额表已经导出来了,散落在桌面上,像小山一样。
合并报表,我还是得手工做。
金蝶的"合并报表模块",说得好听——
要手工维护股权关系 要手工录入抵销分录 要手工核对内部往来 - 它只是把Excel搬到了系统里,根本谈不上"智能"
我打了金蝶客服电话。
"你们有没有AI自动合并报表的功能?"
客服妹子很客气:"目前系统不支持AI自动生成抵销分录,您需要手动维护合并规则。"
手动。维护。
44家公司,每年新增3-5家,每次并购我都要重新配一遍规则。
我挂了电话,做了一个决定:不等金蝶了,自己搞。
二、金蝶做不了的事,到底卡在哪里?
我仔细想了一下,金蝶云星空为什么做不了真正的AI合并报表:
问题1:数据孤岛,根本抓不到实时数据
金蝶的合并报表模块,只能读取金蝶体系内的数据。
但现实是:
金蝶只能合并8家的数据。
剩下36家,我得手工导出Excel,再导入金蝶的合并模板。
一个月要处理200+个Excel文件。
问题2:合并规则太复杂,系统学不会
每家子公司的业务不一样:
有的做产品销售,收入确认规则特殊 有的做技术服务,成本分摊方式不同 有的有跨境业务,涉及外币折算
金蝶的合并规则是"硬编码"的——我得在系统里一条条配,配错了就得从头来。
我试过让实施顾问帮我配,他说:
"这个太复杂了,你们公司的情况,系统标准功能覆盖不了,得定制开发。"
定制开发报价:80万。
我没批下来预算。
问题3:内部交易对账,全靠人工
这是最痛的。
44家公司之间,每天都在发生内部交易:
母公司给子公司提供管理服务 → 子公司要确认管理费用 子公司之间互相销售产品 → 要抵销收入和成本 资金池调拨 → 要抵销内部往来
金蝶只能告诉我"有差异",但找不出差异在哪里。
我得打开44家公司的账套,一笔笔对。
有一次,为了找一笔12万元的差异,我加了3天班,最后发现是一家子公司把币种选错了(美元当成人民币录了)。
如果有个AI能自动对账、自动找差异,该多好。
三、我决定自己搭一个AI合并报表系统
那个周五晚上,我回到家,打开电脑,开始查资料。
我的思路很清楚:
金蝶云星空(数据源)
↓ 导出:科目余额表、内部交易明细
↓ 格式:Excel / API(如果开放)
AI Agent(我自己搭的)
↓ 读取数据
↓ 执行合并规则
↓ 生成抵销分录
↓ 输出合并报表
最终交付:合并资产负债表、利润表、现金流量表
关键技术栈:
四、我是怎么搭的(代码级细节)
第一步:从金蝶导出数据
我在金蝶云星空的合并报表模块,设置了自动导出任务:
【金蝶云星空】→【合并管理】→【报表模板】
→ 选择"科目余额表"
→ 设置"按组织汇总"
→ 设置"导出周期:每月1号凌晨2:00自动导出"
→ 导出格式:Excel(.xlsx)
→ 保存路径:\\财务服务器\合并报表\原始数据\
44家公司的科目余额表,每月1号早上,我已经能在文件夹里看到了。
第二步:用Python读取数据
# 这是我实际用的代码(已脱敏)
importpandasaspd
importos
# 读取所有子公司的科目余额表
defread_all_balance_sheets(folder_path):
all_data = []
forfileinos.listdir(folder_path):
iffile.endswith('.xlsx'):
# 从文件名提取公司代码
company_code = file.split('_')[2].split('.')[0]
# 读取Excel
df = pd.read_excel(os.path.join(folder_path, file))
df['公司代码'] = company_code
all_data.append(df)
# 合并所有数据
returnpd.concat(all_data, ignore_index=True)
这一步,把44家公司的数据,统一成了一张"大表"。
第三步:用AI生成抵销分录
这是最核心的部分。
我用了LangChain + 通义千问,让AI根据合并规则,自动生成抵销分录。
from langchain.llmsimportTongyi
fromlangchain.agentsimportinitialize_agent, Tool
# 初始化大模型(私有化部署,数据不出内网)
llm = Tongyi(
model_name="qwen-72b-chat",
api_base="http://192.168.1.100:8000/v1"
)
# 定义工具:查询股权结构
defget_equity_structure(company_code):
df = pd.read_excel('股权结构表.xlsx')
result = df[df['子公司代码'] == company_code]
returnresult.to_dict('records')
# 定义工具:查询历史抵销分录
defget_historical_eliminations(company_code, period):
query = f"{company_code} {period} 内部交易抵销"
results = vector_db.similarity_search(query, k=3)
return[doc.page_contentfordocinresults]
# 执行合并报表任务
result = agent.run(f"""
任务:为以下子公司生成2023年11月的合并抵销分录
要求:
1. 生成内部交易抵销分录
2. 生成股权投资抵销分录
3. 检查数据一致性
4. 输出合并报表
""")
第一次跑通的时候,我盯着屏幕看了10分钟。
AI生成了127条抵销分录,我抽查了20条,全对。
第四步:人工复核 + 一键生成合并报表
AI生成抵销分录后,我不是直接用的。
我设计了一个"AI建议 + 人工复核 + 一键生成"的流程:
# 生成合并报表
defgenerate_consolidated_report(balance_data, eliminations):
# 1. 合并所有子公司的科目余额
consolidated = balance_data.groupby('科目代码').sum()
# 2. 应用抵销分录
forentryineliminations:
consolidated.loc[entry['科目代码'], '期末余额'] += entry['金额']
# 3. 生成合并资产负债表
bs = generate_balance_sheet(consolidated)
# 4. 导出Excel
withpd.ExcelWriter('合并报表_202311.xlsx')aswriter:
bs.to_excel(writer, sheet_name='合并资产负债表')
return'合并报表_202311.xlsx'
从AI生成抵销分录,到导出合并报表,全程不超过10分钟。
五、效果:从5天到1天
| 100% | |||
| 87% | |||
| 99% | |||
| 99% | |||
| 合计 | 5天 | 1天以内 | 80% |
最让我满意的,不是快,是准。
以前手工做抵销分录,每个月总有那么几笔,要么借贷方向错了,要么金额算错了。
AI生成的分录,逻辑是统一的,不会犯低级错误。
我只需要复核异常项(比如新并购的公司、新增的业务类型),常规项直接过。
六、你可以怎么开始?
如果你公司也用金蝶/用友
第1步:别等厂商升级,先把手头的数据导出来
科目余额表(每月自动导出) 内部交易明细(从"内部交易对账"模块导出) 股权结构表(自己维护一个Excel)
第2步:学一点Python(真的很简单)
我推荐《Python数据分析实战》(书) 或者,B站搜"pandas教程",看3个小时就能上手
第3步:接入大模型API(不用自己部署)
通义千问:免费额度够用 或者Claude(如果你能访问) 或者,找我,我帮你搭
如果你公司还没上系统
更要提前规划。
别只听厂商忽悠"我们支持AI合并报表"。
问他们3个问题:
能不能自动抓取异构系统的数据?(SAP、用友、Excel) 能不能自动生成抵销分录?(不是"辅助",是"自动生成") 能不能自适应股权变动?(并购、分拆后,合并规则自动调整)
如果3个都能答"能",再考虑。
否则,做好"自己搭AI"的心理准备。
七、写在最后
有人问我:"你一个财务总监,为什么要自己写代码?"
我说:因为没人帮我做。
厂商不重视中小客户的需求,实施顾问只会按手册操作,IT部门说"这不是我们的业务系统"。
最后只能自己上。
但我不后悔。
因为当我用AI把合并周期从5天压到1天的时候,
当我有4天时间去做经营分析、去支持业务决策的时候,
我觉得,这才是一个CFO该做的事。
📌 行动清单
收藏这篇文章(搭AI系统时会用到) 导出你公司的科目余额表,看看数据质量怎么样 关注我,下期讲:《我做了个AI经营分析驾驶舱,老板直呼"这才是我要的"》 留言告诉我:你们公司的合并报表,最痛的点是什么?
每条留言我都会回。
我是「算帐的月亮」,12年财务老司机,蜂巢互联前财务总监,亲手搭建过财务共享中心。
金蝶云星空实施专家,但现在更爱用Python+AI解决问题。
在这里,我只讲一件事:如何用信息化和AI,让财务人不再加班,让财务真正创造价值。
关注我,一起进化。
看完别忘了点「在看」,让更多财务人看到:我们不必等厂商施舍功能,我们可以自己创造工具。
有收获的话,转发到你的朋友圈,说不定你的老板/同事/同行,正好需要。
*这篇文章写了6个小时。代码是我实际跑通过的,案例真实,数据可查。*
*转载请注明出处。*
夜雨聆风