You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JS实现Microsoft D365中book到reader实体的价格字段自动映射

实现D365 Reader实体Lookup选Book后自动填充Price的JavaScript方案

前置确认项

  • 提前记录3个核心配置的实际逻辑名(可从Power Apps解决方案的实体字段列表中查询):
    • Reader实体上关联Book的Lookup字段逻辑名,示例为crxxx_bookid
    • Book实体上价格字段的逻辑名,示例为crxxx_price
    • Reader实体上待填充的价格字段逻辑名,示例为crxxx_readerprice
  • Book实体的逻辑名,自定义实体示例为crxxx_book

完整实现代码

// 表单OnLoad入口函数
function onReaderFormLoad(executionContext) {
    const formContext = executionContext.getFormContext();
    // 给Book Lookup字段绑定值变更触发事件
    formContext.getAttribute("此处替换为Reader上Book lookup的字段逻辑名").addOnChange(onBookSelected);
}

// Book Lookup选中值变更时触发的逻辑
function onBookSelected(executionContext) {
    const formContext = executionContext.getFormContext();
    // 获取选中的Book记录
    const selectedBook = formContext.getAttribute("此处替换为Reader上Book lookup的字段逻辑名").getValue();
    
    // 未选中任何记录时清空价格字段
    if (!selectedBook || selectedBook.length === 0) {
        formContext.getAttribute("此处替换为Reader上价格字段的逻辑名").setValue(null);
        return;
    }

    // 清洗选中记录的GUID
    const bookId = selectedBook[0].id.replace(/[{}]/g, "");
    // 调用D365 WebAPI查询Book的价格字段
    Xrm.WebApi.retrieveRecord("此处替换为Book实体的逻辑名", bookId, "?$select=此处替换为Book上价格字段的逻辑名").then(
        function (res) {
            // 赋值到Reader的价格字段
            formContext.getAttribute("此处替换为Reader上价格字段的逻辑名").setValue(res["此处替换为Book上价格字段的逻辑名"]);
        },
        function (err) {
            console.error("获取书籍价格失败:", err.message);
        }
    )
}

提示:如果Book的价格是货币类型,无需额外转换格式,D365 WebAPI会直接返回可直接赋值的数值格式。

部署步骤

  1. 把修改完占位符的代码保存为.js文件,在D365中新建类型为脚本(JScript)的Web资源,上传该文件后保存
  2. 打开Reader实体的主表单编辑器,将刚才上传的Web资源添加到表单的「表单库」中
  3. 配置表单的OnLoad事件:调用函数名填onReaderFormLoad,必须勾选「传递执行上下文作为第一个参数」
  4. 保存所有表单修改,发布自定义后即可生效

常见校验点

  • 确认操作用户有Book实体的读取权限,否则WebAPI调用会返回403错误
  • 如果赋值不生效,可打开浏览器控制台查看是否有逻辑名拼写错误的报错
  • 多币种场景下可根据需求扩展代码,同步填充币种字段

内容的提问来源于stack exchange,提问作者vithika jha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 09:06:05