在第一节中,我们介绍了账户基本信息、期初余额、会计期间和会计借贷的基本概念。
- 【管理会计】入门1-账户余额与期初余额 2025/6
注:本文正在修改中,可能存在瑕疵,请批判地浏览。这是 XILEJUN 之前不能抵达的全新领域。
一、上节回顾
- 账户余额:账户在特定时点的资金总额,反映资产、负债或权益状况。
- 期初余额:会计期间开始时的账户余额,为财务记录提供起点。
- 会计期间:财务记录的时间范围,通常以财年或月为单位。
- 会计科目:分类管理财务信息,银行账户归为资产类(如银行存款)或负债类(如短期借款)。
- 会计借贷:余额分为借方(资产正余额或负债负余额)和贷方(负债正余额或资产负余额)。
二、余额变化的基本概念与记录方式
1. 余额变化的定义
余额变化(Balance Change)是指在会计期间内,因交易(如收入、支出、转账等)导致账户余额的增减。
余额变化记录企业资金流动,是会计核算的核心。
2. 记录方式
企业可通过以下两种方式管理余额变化,分别代表不同的观察视角和数据粒度:
2.1 每日余额快照 BalanceRowDay
- 定义:每天记录账户在特定时点(通常24点)的借贷余额,形成余额快照。
- 实现方式:从银行每日提供的余额数据(如邮件通知)获取并记录。
- 优点:
- 简单易用:每日一次记录,数据量小,易于初学者理解。
- 趋势分析:便于生成日、月余额趋势图,适合管理会计。
- 低维护成本:无需处理交易细节,减少复杂性。
- 缺点:
- 缺乏细节:无法反映日内多次交易的明细(如收入、支出来源)。
- 审计局限:不适合需要详细对账的财务会计场景。
- 数据依赖:依赖银行提供准确余额,异常数据可能影响记录。
2.2 详细余额变化 BalanceChange(简称 Balance)
- 定义:记录每次交易引起的余额变动,详细追踪交易金额及业务关联。
- 实现方式:通过业务系统(如应收、应付、收入)集成,记录每笔交易的影响。
- 优点:
- 高精度:记录每笔交易的金额,便于追溯资金流向。
- 审计支持:支持生成日记账、分类账,满足财务会计和审计需求。
- 业务关联:可与业务数据(如应收账款)关联,反映交易背景。
- 缺点:
- 复杂性高:数据量大,需与业务系统集成,维护成本高。
- 技术要求:需设计外键关联,确保数据一致性。
- 处理成本:记录和处理每笔交易需更多资源。
3、两种记录的差异
- 记录粒度:
- BalanceRowDay是粗粒度的每日汇总,记录账户在一天结束时的借贷余额状态,适合管理层快速概览。
- Balance是细粒度的交易级记录,捕捉每笔交易的余额变化,适合详细核算和审计。
- 关联性:BalanceRowDay的每日余额可以通过Balance表中的交易记录汇总计算:例如,公户1月2日余额(BalanceRowDay)应等于期初余额加上Balance表中当日的Amount总和。
每日余额(BalanceRowDay.DebitAmount/CreditAmount) = 期初余额(OpeningBalance) + ∑Balance.Amount
- 借贷金额设计差异:
- BalanceRowDay:分开DebitAmount和CreditAmount,直接反映会计科目的借贷余额(如资产类账户的借方余额、负债类账户的贷方余额)。这种设计便于与会计科目余额表对齐,适合统计分析和报表生成(如资产负债表)。
- Balance:使用单一Amount字段,正值表示借方影响(余额增加),负值表示贷方影响(余额减少)。这种设计简化了交易记录,聚焦余额变化本身,不受业务行为的具体借贷方向限制,适合与多样化的业务表(如应收、应付)关联。

- 差异的原因:
- BalanceRowDay面向管理会计,强调科目级汇总,借贷分开更符合会计报表的结构;
- Balance面向财务会计,关注交易级明细,单一金额字段更灵活,适应不同业务行为的余额影响(如客户付款增加余额、供应商支付减少余额)。
三、实现方式:vizwise公司的余额变化管理
以“vizwise”公司为例,设计以下数据 table 记录余额变化,基于现有账户(公司人民币公户、公司人民币信用卡、法人人民币储蓄卡)。
1. BalanceRowDay 表:每日余额快照
- 从银行每日24点邮件获取账户余额,记录借方或贷方余额,或者每晚根据实时余额登记一遍。
- 适合生成月度余额汇总或趋势分析。
表结构:
| 字段名 | 数据类型 | 描述 |
|---|---|---|
| ID | INT | 记录唯一标识,主键 |
| AccountId | INT | 关联账户ID,外键 |
| AccountingYearId | INT | 关联会计年度ID,外键 |
| AccountingYearPeriodId | INT | 关联会计期间ID,外键 |
| BalanceDate | DATE | 余额记录日期 |
| DebitAmount | DECIMAL(15,2) | 当日借方余额 |
| CreditAmount | DECIMAL(15,2) | 当日贷方余额 |
示例数据 (2025年1月1日-1月2日):
| ID | AccountId | AccountingYearId | AccountingYearPeriodId | BalanceDate | DebitAmount | CreditAmount |
|---|---|---|---|---|---|---|
| 1 | 1 | 2025 | 6 | 2025-01-01 | 100000.00 | 0.00 |
| 2 | 1 | 2025 | 6 | 2025-01-02 | 120000.00 | 0.00 |
| 3 | 2 | 2025 | 6 | 2025-01-01 | 0.00 | 0.00 |
| 4 | 2 | 2025 | 6 | 2025-01-02 | 0.00 | 5000.00 |
| 5 | 3 | 2025 | 6 | 2025-01-01 | 50000.00 | 0.00 |
实现要点:
- 数据来源:解析银行邮件,自动更新每日余额。
- 校验:确保DebitAmount和CreditAmount互斥,符合账户科目性质(公户为借方,信用卡为贷方)。
- 用途:生成月度余额折线图或汇总表,分析资金趋势。
在笔者的分析中,可以把多个账户的每日借贷变化,绘制为如下的现金流量可视化。

2. Balance 表:详细余额变化
- 记录每笔交易引起的余额变化,反映账户余额变动。
- 通过ID与业务表(如应收账款、应付账款)关联,业务表包含BalanceId外键。
- 支持日记账、分类账和审计。
表结构:
| 字段名 | 数据类型 | 描述 |
|---|---|---|
| ID | INT | 余额变化记录唯一标识,主键 |
| AccountId | INT | 关联账户ID,外键 |
| AccountingYearId | INT | 关联会计年度ID,外键 |
| AccountingYearPeriodId | INT | 关联会计期间ID,外键 |
| TransactionDate | DATETIME | 交易发生时间 |
| Amount | DECIMAL(15,2) | 交易金额(正为借方,负为贷方) |
余额表是最为详细的余额变动记录(BalanceChange),每一笔记录都不是独立的,而是由于应收、应付等业务行为出发的。所以,Balance 表的细节其实隐藏在其他数据表中。
XILEJUN:从这个角度看,Balance 表中的 TransactionDate 其实是冗余的,这个字段应该在其他各个业务系统只是。
四、实践:账户的期初、借贷和结转金额
利用OpeningBalance、BalanceRowDay和Balance表,分析每个账户的期初余额、期间借方金额、期间贷方金额和实时结转金额,以完成余额管理流程。
1. 分析目标
- 期初余额:从OpeningBalance表获取会计期间开始时的借方和贷方余额。
- 期间借方金额:从BalanceRowDay表汇总DebitAmount,反映期间内账户的借方余额。
期间借方金额:从Balance表汇总期间内正Amount(借方交易,如收入)。- 期间贷方金额:从BalanceRowDay表汇总CreditAmount,反映期间内账户的贷方余额。
期间贷方金额:从Balance表汇总期间内负Amount(贷方交易,如支出)。- 实时结转金额:通过BalanceRowDay计算期间余额变化,结合OpeningBalance得出期末余额,并与Balance表验证一致性。
2. 数据表支持
- OpeningBalance 表(调整后):
- 字段:ID, AccountId, AccountingYearId, DebitAmount, CreditAmount。示例数据 (2025年,AccountId=1):

- BalanceRowDay 表:

说明:
- BalanceRowDay展示公户2025年1月至6月的月末余额快照。
- 每月余额反映当月交易后的借方余额(资产类账户,借方为主)。
- AccountingYearPeriodId仅用于标识月份,但分析聚焦年度汇总。
3. 分析方法
使用SQL查询汇总数据,以2025年1月1日-1月2日、账户1(公司人民币公户)
…… 忽略 SQL
3.1 Tableau 实现
通过多个数据表关联,获得期初金额和 借贷变化。

而后,使用 Desktop 构建期初、借贷金额和结转金额。

四、可能引发银行卡金额变化的业务行为
银行卡账户(公司人民币公户、公司人民币信用卡、法人人民币储蓄卡)的余额变化通常由以下业务行为触发:
1. 应收账款(Accounts Receivable)
- 业务行为:客户支付货款或服务费用,导致资金流入公司公户。
- 影响:增加公户余额(借方增加)。
- 示例:客户A支付20,000元货款至公户。
- 相关表:Receivable(应收账款表),记录客户欠款和付款明细。
以应收业务表 ( AccountReceivable表)为例,它的数据表中有一个 BalanceId 外键字段,用于关联该事实交易对科目余额的影响。
| 字段名 | 数据类型 | 描述 |
|---|---|---|
| ID | INT | 应收账款记录唯一标识,主键 |
| BalanceId | INT | 关联Balance表ID,外键 |
| Customer | VARCHAR(50) | 客户名称 |
| Amount | DECIMAL(15,2) | 应收金额 |
实现要点:
- 数据来源:从业务系统(如ERP)获取交易记录,记录交易金额。
- 关联机制:业务表(如Receivable、Payable)通过BalanceId关联Balance.ID。
- 校验:通过公式验证期末余额:
期末余额 = 期初余额(OpeningBalance) + ∑Amount - 用途:生成日记账、分类账或科目余额表,支持审计。
2. 应付账款(Accounts Payable)
- 业务行为:公司支付供应商货款或服务费用,导致资金流出公户或信用卡。
- 影响:减少公户余额(贷方增加)或增加信用卡欠款(贷方增加)。
- 示例:公司通过信用卡支付供应商B 5,000元采购款。
- 相关表:Payable(应付账款表),记录供应商账单和付款明细。
3. 资金转账(Bank Transfer)
- 业务行为:账户间转账,如法人储蓄卡转账至公户,或公户还信用卡欠款。
- 影响:转出账户余额减少(贷方增加),转入账户余额增加(借方增加)。
- 示例:法人储蓄卡转10,000元至公户。
- 相关表:Transfer(转账表),记录账户间资金转移。
4. 费用支付(Expense Payment)
- 业务行为:公司支付日常运营费用,如租金、水电费、工资等。
- 影响:减少公户余额(贷方增加)或增加信用卡欠款(贷方增加)。
- 示例:公司通过公户支付1月租金8,000元。
- 相关表:Expense(费用表),记录费用支付明细。
5. 贷款或还款(Loan or Repayment)
- 业务行为:公司从银行贷款存入公户,或偿还贷款/信用卡欠款。
- 影响:贷款增加公户余额(借方增加),还款减少公户余额(贷方增加)或减少信用卡欠款(借方增加)。
- 示例:公司偿还信用卡欠款5,000元;或收到银行贷款50,000元。
- 相关表:Loan(贷款表),记录贷款和还款明细。
五、总结与后续计划
通过BalanceRowDay和Balance表,vizwise公司实现了余额变化的每日快照和详细交易记录。BalanceRowDay以借贷金额记录每日余额,适合管理会计;Balance以单一金额字段记录交易,适合财务会计和审计。
后续方向:
- 细化业务表(如Receivable、Payable)结构。
- 设计SQL查询,生成余额趋势图或科目余额表。
- 讨论异常处理(如银行余额数据错误)。