用友BIP / YonSuite 管理报表分析
适用范围
- 输入:用友 BIP / YonSuite(YS)导出的管理类报表,常见格式为
.xlsx/.xls/.csv。也兼容 U8/U9 cloud 导出的同结构报表。 - 核心能力:
- 识别报表类型(科目余额表 / 辅助余额表 / 预算执行表 / 利润表·管理报表 / 合并报表 / 通用明细表)。
- 数据清洗(表头定位、合并单元格拆分、金额列数值化、借贷方向归一、空行/合计行处理)。
- 多维分析:同比(YoY)、环比(MoM)、趋势、结构占比、预算执行率与差异。
- 异常检测:借贷不平、负余额异常、超预算、同比剧烈波动(z-score / 阈值)。
- 产出:Markdown 报告 + 图表 PNG(亦可转 HTML),按"分析结论优先"结构呈现。
- 典型场景:药企(GxP 合规要求)的管理报表月度/季度分析、销售费用与研发费用拆解、各产品线毛利、预算执行监控、合并报表核对。
工作流
流程遵循:读取 memory → 执行任务 → 交付附件 → 撰写摘要。本技能聚焦"执行任务"阶段。
Step 1 · 接收与识别
- 接收用户上传/指定的报表文件(路径或附件)。
- 用
scripts/yonyou_report_analyze.py的--type auto自动识别报表类型;识别依据见references/report_schemas.md。 - 若自动识别不准,让用户用
--type指定(balance / aux / budget / pl / consolidation / generic)。
Step 2 · 清洗与解析
- 脚本自动完成:跳过多余表头行、拆分合并单元格、将"借方/贷方"两列归一到带符号的"净额"列、把"元"单位文本转 float、剔除"合计/小计"行(保留为校验用)。
- 科目编码按层级(如
6001.01)保留,便于按上级科目聚合。 - 详细列映射与口径见
references/report_schemas.md。
Step 3 · 选择分析模板
按报表类型套用 references/analysis_methods.md 中的方法:
- 科目余额表:借贷平衡校验 → 期末 vs 期初变动 → 异常余额(负资产/负负债、零变动大额)。
- 辅助余额表:按辅助维度(部门/客户/供应商/项目/产品)拆解 → 结构占比 → Top N。
- 预算执行表:执行率 = 实际/预算 → 差异 → 超预算阈值预警(默认 >100% 标红,可配)。
- 利润表/管理报表:同比/环比 → 趋势 → 毛利率等派生指标。
- 合并报表:内部往来抵销校验 → 层层级联汇总核对。
- 通用明细:用户指定维度列 + 数值列后做透视、趋势、异常。
Step 4 · 异常与预警
- 内置规则(可在脚本
--rules覆盖):- 借贷不平衡(差额 > 0.01 元)
- 超预算(执行率 > 阈值,默认 1.0)
- 同比波动 |Δ%| > 阈值(默认 50%)且基数 > 最小金额
- z-score > 3 的离群金额
- 产出"预警清单"表格,每条含:对象、指标、数值、阈值、建议动作。
Step 5 · 产出报告
- 脚本生成
analysis.md(结论先行:摘要 → 关键指标 → 预警 → 明细)与charts/*.png。 - 用
present_files交付.md与图表;如需 PPT,再调用图表+摘要转制。 - 报告语言与用户偏好一致(默认中文;药企合规材料可切英文)。
调用脚本
PY="C:/Users/HP/.workbuddy/binaries/python/envs/yonyou/Scripts/python.exe"
$PY "C:/Users/HP/.workbuddy/skills/yonyou-report-analysis/scripts/yonyou_report_analyze.py" \
--input "<报表路径>" \
--type auto \
--out "<输出目录>" \
--budget-threshold 1.0 \
--yoy-threshold 0.5
参数说明见脚本 --help。无样本数据时可用 sample_data/ 下的合成样例自测。
反模式与常见问题 FAQ(排错)
本节解决"识别错了 / 图表乱码 / 数字变空 / 跑不起来"等实际报错,遇到问题时先来这里查。
反模式(不要这样做)
- 丢文件不说明类型,指望 auto 100% 正确:用友 BIP/YonSuite/U8/U9 导出格式千差万别,auto 失败时用
--type显式指定。 - 忽略
processing_log.txt直接信报告:先核对日志里的"表头定位行 / 排除行数 / 单位归一",确认读对表再下结论。 - 把未审、未抵销的导出当合规证据:必须在报告中标注"未经审计 / 未含抵销明细",药企 GxP 场景尤甚。
- 多 sheet 工作簿不指定
--sheet:默认只读第 0 个 sheet,合并报表/带抵销分录的表要显式指定。 - 阈值拍脑袋:超预算阈值默认 1.0,但季度/年度进度不同(6 月应≈50%),要结合时间进度判断是否"透支",而非机械看 >100%。
- 把
analysis.md当唯一真相:报告是分析辅助,异常项需回到企业端系统二次确认(凭证状态、在途数据)。
FAQ(常见问题与解答)
Q1 · 报表被识别成错误类型(如利润表被当辅助余额表、辅助表被当 generic)?
A:加 --type pl|aux|budget|balance|consolidation|generic 显式指定;或检查表头是否含 references/report_schemas.md 里的标准关键词(如"本期金额""营业收入""辅助核算")。"项目"列既是利润表行也是辅助维度,脚本已把利润表识别优先级放在辅助表之前。
Q2 · 图表里中文是方框/乱码?
A:环境无 CJK 字体时 matplotlib 会退化显示方框。这**不影响 analysis.md(主交付物)**的表格与结论。要修复:确保系统存在中文字体(如 C:/Windows/Fonts/msyh.ttc),脚本已自动尝试注册微软雅黑;无该字体时图表仅作占位,以 MD 为准。
Q3 · 金额变成空(NaN)或报错?
A:金额列混入非常规字符(全角括号、全角逗号、单元格内"元/万元"后缀)。脚本已处理半角逗号、括号负数 (123)→-123、"—/空"→NaN。若仍有 NaN,查 processing_log.txt 对应行,或导出时选"纯数值"格式。
Q4 · 单位错了(万元被当元,数值放大 10000 倍)? A:脚本按表头/页脚"单位:万元/千元"自动归一(万元×10000、千元×1000)。若导出无该标注,需先在导出端统一单位,或人工核对报告顶部"单位"字段是否与实际一致。
Q5 · 运行报 ModuleNotFoundError: No module named 'pandas'?
A:依赖未装。在 venv 内执行:
C:/Users/HP/.workbuddy/binaries/python/envs/yonyou/Scripts/pip.exe install pandas openpyxl matplotlib
Q6 · 超预算预警太多/太少?
A:调 --budget-threshold(如 0.9 提前预警、1.1 仅看明显超支);并结合期间进度判断是否为"预算透支"而非单纯超支。
Q7 · 借贷不平衡被大量误报? A:用友导出可能含未记账凭证、在途数据,或"合计/小计"行混入。脚本已剔除"合计/小计"行、容差 0.01 元。若仍大量不平,先在企业端确认凭证状态,必要时仅分析末级科目(无下级编码)。
Q8 · 多 sheet 工作簿只分析了第一个?
A:默认读 sheet 0。指定 --sheet "科目余额表" 或索引号,例如 --sheet 2。
Q9 · 合并报表内部抵销校验不准? A:纯导出数据无法完整校验。需有"抵销分录"sheet 且脚本能读取;否则报告中标注"未含抵销明细,不可作合规证据"。
Q10 · 真实导出的列名和文档不一样,识别不到?
A:脚本用别名映射(见 report_schemas.md),常见别名已覆盖。非常规列名请用 --dim 部门名 --value 金额列 显式指定,或先把列名改成标准名(如"科目编码""期末借方")。
Q11 · CSV 读不到/乱码? A:编码问题。导出时选 UTF-8 或 GBK;若已乱码,先用编辑器转码为 UTF-8 再跑。
Q12 · 输出文件在哪?
A:<out>/analysis.md(主报告)+ <out>/charts/*.png + <out>/processing_log.txt。默认 <out> = <input>_out。
注意事项
- 用友导出常含"单位:元/万元"混用,脚本以表头"单位"标注为准,缺省按"元"。
- 合并报表涉及内部抵销,纯导出数据无法完全校验,需在报告中标注"未经审计/未含抵销明细"。
- 药企 GxP 场景:报表若用于合规论证,须保留原始导出文件与处理日志(脚本会输出
processing_log.txt)。
Scan to join WeChat group