Skip to content
Donghai's Blog
Go back

Dynamics 365货币字段

深入了解 Dynamics 365 货币字段

本文通过一个简单但完整的实验,来梳理 Dynamics CRM 中的货币字段(Currency Field)是如何工作的,以及它在多币种场景下是什么样的表现

Table of contents

Open Table of contents

前言

在本文的实验环境中:

基本概念

Dynamics 365 中,货币(Currency)是一种特殊的字段类型,它用于存储与金额相关的数据,还有一个容易被忽略但重要的点是:当你在实体中创建一个“货币字段”时,系统实际上会在后台自动创建 4 个字段

以我在 Invoice Detail 实体中新建的 Amount 货币字段为例,系统在后台生成了以下字段:

  1. gdh_amount —> 存储实际输入的货币值
  2. gdh_amount_Base —> 存储根据汇率换算后的基础货币金额

此外,还会自动关联两个字段:

Invoice Detail实体新添的Amount货币字段

开始实验

Step 1. 新建币种(Currency)

打开 Power Platform 管理中心 —> 选择 “环境” —> 进入 “设置” —> 选择 “币种”

新建币种-01

在弹出的页面,新添币种

新建币种-02

我添加了两个币种:人民币和日元,新建的信息如下:

货币名称货币代码货币符号汇率货币精度
US DollarUSD$1.00002
RMBCNY7.25002
JPYJPYJPY ¥147.63002

TIP

(1) 汇率更新时,Dynamics 365 不会重新计算所有货币字段

(2) 汇率由系统管理员设定

Step 2. 添加实验数据:多币种金额如何换算?

Invoice Detail 中,分别创建了3条记录,使用不同币种填写 Amount 字段:

No.CurrencyAmountAmount(Base)Exchange Rate
SASD-00001260JPYJPY ¥ 1,000.00$6.77147.6300000000
SASD-00001259US Dollar$1,000.00$1,000.001.0000000000
SASD-00001258RMB¥ 1,000.00$137.937.2500000000

新建实验数据

打开 Invoice 记录可以清楚看到,当币种是 “基础货币(USD)” 时,AmountAmount(Base) 完全一致,当币种不是 “基础货币” 时,系统会根据:Amount(Base) = Amount ÷ Exchange Rate 自动完成换算,无需任何自定义逻辑或插件

Step 3. 货币字段 + 汇总(Rollup)会发生什么?

接下来我在 Invoice 实体中新建一个货币类型的汇总字段:Example - Total Amount,该字段用于汇总当前 Invoice 下所有 Invoice Detail 的金额

新建货币汇总字段

汇总字段的配置规则如下:

字段汇总规则

汇总结果:

汇总结果

最终你会发现,系统并不是直接 “把不同币种的 Amount 相加”,实际执行逻辑是:

  1. 将子表金额统一转换为 Base 金额
  2. 汇总 Amount(Base)
  3. 再根据当前 Invoice 的 “币种(Currency)” 和 “汇率(Exchange Rate)” ,换算为显示金额,

也就是说,汇总字段的计算核心,永远围绕 Amount(Base) 展开

TIP

Dynamics 365 中的汇总字段是定时计算的,可在系统作业中设置频率,最快每 1 小时计算一次,也可以在字段旁点击“小键盘”图标,手动触发 重新计算

重新计算


Share this post on:

Previous Post
Dynamics 365消息提醒(In-App Notification)
Next Post
AstroPaper 5.0(译)
BlogsClub Meo Forever Blog