Actual 怎么用规则模板方法在多币种预算中处理外币账户
【免费下载链接】actualA local-first personal finance app项目地址: https://gitcode.com/GitHub_Trending/ac/actual
Actual Budget 本身是币种无关的,目前还不原生支持多币种:一个预算文件里只有一个记账货币。如果你有一个外币账户(比如预算用 USD 记账,但手里有个 AUD 账户),官方文档给出的过渡方案是「规则模板方法」(Rule Action Templating):为外币账户建两条规则,用固定汇率把该账户里录入的外币金额换算成预算货币,并在备注里留下原始金额和所用汇率。本文按 多币种文档 的实际步骤走一遍完整流程,前提是你已经装好 Actual 并建好了预算文件。
先确认前提:模板功能是实验特性,且已标记弃用
规则模板属于实验性功能,官方文档有两点需要先说明:
- 实验特性不一定包含在最新稳定版里,实验特性文档 建议启用前定期备份预算数据,并提示可使用
nightly镜像获取最新实现。 - 规则模板文档 顶部已标注该功能deprecated:从 26.6.0 版本(2026-06-01 发布,见 releases.md)起,规则模板被弃用,未来版本会移除,新规则建议改用 Rule formulae(覆盖相同用例,Excel 风格语法)。本文按标题所述仍走模板方法,已有模板规则的用户请按文档提示迁移到公式。
理解下面这个细节对读懂规则内容很关键:模板里的amount变量以「分」为单位存储(152表示 15200),所以模板里用{{ div amount 100 }}把它换算回元,参见规则模板的变量说明。
第一步:启用 Rule action templating
- 在侧边栏打开Settings -> Show advanced settings -> Experimental features。
- 点击I understand the risks, show experimental features确认风险提示(这一步对应 实验特性文档 中「需要同意声明后才能看到可用特性」的说明)。
- 点击Rule action templating启用。
第二步:创建外币账户(可选但推荐)
为外币币种建一个独立账户。以下两种做法都不是必须,但文档建议这样做,方便将来原生多币种支持上线后平滑迁移:
- 在账户备注中加一条
#currency:XXX,其中 XXX 是 ISO 4217 定义的三位币种代码(如 EUR、USD、AUD); - 或者在账户名称里用括号标注币种,例如
Australian Cash (AUD)。
第三步:创建两条规则
每个外币账户需要创建两条规则,都通过侧边栏More -> Rules进入 Rules 页面,点击右下角Create new rule。两条规则的区别在于处理「已有备注」和「没有备注」的交易:规则一会在原有备注后追加换算信息,规则二负责给空备注的交易写入换算信息。
规则 1:处理已有备注的交易
在规则编辑弹窗中:
- Stage of rule选Post(post 阶段的规则总在 pre/default 阶段规则之后运行,见 规则文档)。
- Conditions设为if
Allof these conditions match,包含三个条件:Accountis,选择你的外币账户;notesis not设置为 nothing;notesdoes not containFX rate:。
- 在Then apply these actions:下操作:
先添加一条set notes类型的动作(动作类型必须是 set notes 或 set amount,模板切换按钮才会出现);
点击动作左侧、-/+ 符号右侧的 Template 切换按钮,把这一行切到模板模式;
set notes内容填:
{{ fixed (div amount 100) 2 }} XXX (FX rate: FX_RATE) • {{ notes }}其中
XXX替换为你的币种代码(与账户标注一致),FX_RATE替换为你要用的固定汇率数值。文档示例:1 AUD = 0.65 USD 时填0.65。点击+号新增一行动作,同样点击这一行的 Template 切换按钮;
set amount填:
{{ fixed (mul amount FX_RATE) 0 }}FX_RATE填同一个汇率。
- 点击Save保存。
规则 2:处理无备注的交易
同样从 Rules 页面新建规则:
- Stage of rule选Post;
- Conditions设为if
Allof these conditions match,包含两个条件:Accountis,选择同一个外币账户;notesis设置为 nothing。
- 动作部分:
添加set notes动作并点击 Template 切换按钮,内容填:
{{ fixed (div amount 100) 2 }} XXX (FX rate: FX_RATE)币种代码与汇率和规则 1 保持一致(注意这里末尾没有
• {{ notes }},因为匹配的是空备注交易);点击+新增一行并切换 Template 模式,set amount填:
{{ fixed (mul amount FX_RATE) 0 }}
- 点击Save。
保存后,规则编辑界面底部会列出当前匹配条件的交易,可以先看一眼确认条件写得对不对(这是 规则文档 中编辑规则界面自带的反馈方式)。
第四步:录入交易并应用换算
- 在外币账户里按外币金额录入交易(比如预算货币是 USD、账户是 AUD,就在 Payment 或 Deposit 列直接填 AUD 金额)。
- 打开 Rules 页面,点击该账户的两条规则中的一条。界面底部会列出这条规则可以应用的交易:
- 如果没看到想换算的交易,点 cancel,改用这个账户的另一条规则(有备注的交易走规则 1,无备注的走规则 2);
- 勾选要换算的交易,点击Apply actions;
- 动作应用完成后点 cancel 退出规则编辑(你只是手动应用动作,不需要改规则本身)。
- 回到外币账户查看:交易金额应已换算为预算货币,备注里留下原始外币金额和所用汇率,例如
100.00 AUD (FX rate: 0.65) • 原备注(具体数值以你录入的金额和汇率为准,上面仅为按模板输出格式说明)。
限制与下一步
- 汇率是规则里写死的固定值,汇率变动后需要手动改规则里的
FX_RATE再重新应用;文档没有提供自动获取汇率的机制。 - 规则模板已被官方弃用且未来会移除,规则模板文档 建议把现有模板规则迁移到 Rule formulae。公式模式下 Set 动作通过输入框右侧的ƒ按钮切换公式模式,且模板(
</>)与公式互斥:启用一个会关闭另一个。 - 该功能属于实验特性,可能不在最新稳定版中可用,实验特性文档 建议使用
nightly镜像获取最新实现,并在启用实验特性时保持定期备份。
【免费下载链接】actualA local-first personal finance app项目地址: https://gitcode.com/GitHub_Trending/ac/actual
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考