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

如何在D365 FO项目中引用JS文件并从X++调用带参JS方法

Dynamics 365 Finance and Operations 中JavaScript文件的接入与调用方案

1. 将JavaScript文件以类DLL引用方式接入D365 FO项目

D365 FO中没有和.NET DLL完全一致的引用机制,但可以通过AOT资源系统实现类似的复用与引用效果,步骤如下:

  • 上传JavaScript文件为AOT资源
    1. 打开D365 FO开发环境的AOT > Resources节点,右键选择New > File,选中目标JavaScript文件完成上传。
    2. 给资源设置唯一名称(比如示例中的JavaScriptResource),将Type属性设为Text,Persist属性设为Yes,确保资源被持久化存储。
  • 在代码中引用资源
    通过SysResource类的方法获取资源节点及内容,扩展示例代码如下:
    internal final class JavaScriptTestJob
    {
        public static void main(Args _args)
        {
             ResourceNode textFileResourceNode = SysResource::getResourceNode(resourceStr(JavaScriptResource));
             // 获取JS文件的文本内容,用于后续注入到前端场景
             str jsContent = textFileResourceNode.AOTGetSource();
        } 
    }
    
    获取到的jsContent可注入到表单HTML控件、自定义Web页面等场景中复用。

2. 从X++代码调用带参数的JavaScript方法

根据使用场景不同,实现方式分为两种:

场景一:表单内HTML/Web控件调用JS方法

如果JS代码已加载到表单的HtmlControl中,可通过控件的executeScript方法直接调用:

  1. 先将JS资源注入到HTML控件(可在表单init方法中执行):
public void init()
{
    super();
    
    ResourceNode jsResourceNode = SysResource::getResourceNode(resourceStr(JavaScriptResource));
    str jsContent = jsResourceNode.AOTGetSource();
    // 假设表单上有一个名为HtmlControl_JS的Html控件
    HtmlControl_JS.setContent("<script>" + jsContent + "</script>");
}
  1. 调用带参数的JS方法(比如按钮点击事件中执行):
public void clicked()
{
    super();
    
    // 定义要传递的参数
    str userName = curUserId();
    int recordCount = 10;
    
    // 构造JS调用语句,注意字符串参数需加引号包裹
    str jsCall = strFmt("processData('%1', %2)", userName, recordCount);
    
    // 执行JS脚本
    HtmlControl_JS.executeScript(jsCall);
}

场景二:触发前端页面全局JS方法

如果要在后台逻辑中触发前端页面的全局JS方法,可通过FormRun的executeScript方法:

public void run()
{
    super();
    
    str param = "来自X++的触发参数";
    str jsCommand = strFmt("globalJSMethod('%1')", param);
    
    // 获取当前表单运行实例并执行JS
    element.executeScript(jsCommand);
}

注意事项

  • 参数传递时需注意类型格式:字符串必须用单/双引号包裹,数值、布尔值直接传递即可。
  • 确保目标JS方法在前端上下文已加载完成,避免出现undefined错误。
  • 如果是自定义Web资源页面,也可以通过X++生成带参数的URL,页面加载时读取URL参数自动调用JS方法。

内容的提问来源于stack exchange,提问作者arif hussain

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 04:30:25