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

Salesforce开发:Opportunity按钮触发指定Apex方法的实现问题

解决Opportunity页面按钮触发Apex方法的步骤

一、创建Opportunity详情页按钮

  • 进入Setup,搜索Object Manager,找到Opportunity对象
  • 点击Buttons, Links, and Actions,再点击New Button or Link
  • 按以下配置填写:
    • 标签:自定义按钮名称(比如「创建关联位置」)
    • 显示类型:选择Detail Page Button(确保在Opportunity详情页显示)
    • 行为:选择Execute JavaScript
    • 内容源:选择OnClick JavaScript
  • 把修正后的JS代码粘贴到文本框,点击保存

二、确保Apex类满足调用要求

你的CreateLocationInRadius类中的createLocation方法必须符合以下条件:

  • 用public或global修饰
  • 加上@RemoteAction注解(支持JS远程调用)
  • 方法为static类型,参数匹配传入的Opportunity ID

示例Apex代码:

public class CreateLocationInRadius {
    @RemoteAction
    public static void createLocation(Id oppId) {
        // 这里编写你的业务逻辑,比如根据Opportunity ID创建关联记录
        Opportunity targetOpp = [SELECT Id, AccountId FROM Opportunity WHERE Id = :oppId LIMIT 1];
        // 假设Location__c是自定义对象,示例创建逻辑
        Location__c newLoc = new Location__c(
            Name = targetOpp.Name + ' 关联位置',
            Opportunity__c = oppId,
            Account__c = targetOpp.AccountId
        );
        insert newLoc;
    }
}

三、修正JavaScript调用代码

你之前使用的API版本过旧,且缺少回调逻辑,替换为以下代码(使用最新API版本):

{!REQUIRESCRIPT("/soap/ajax/59.0/connection.js")}
{!REQUIRESCRIPT("/soap/ajax/59.0/apex.js")}

sforce.apex.execute(
    "CreateLocationInRadius",
    "createLocation",
    {
        oppId: "{!Opportunity.Id}"
    },
    function(result, event) {
        if (event.status) {
            alert('操作成功!');
            window.location.reload(); // 刷新页面更新数据
        } else {
            alert('操作失败:' + event.message);
        }
    }
);

四、将按钮添加到页面布局

  • 返回Opportunity对象的Page Layouts,编辑正在使用的布局
  • 在布局编辑器中找到Buttons区域,将刚创建的按钮拖到Detail Page Buttons的显示区域
  • 保存布局后,刷新Opportunity详情页即可看到按钮

五、常见问题排查

  • 确认Apex方法是static且带有@RemoteAction注解
  • 检查API版本,尽量使用50.0以上的最新版本,避免兼容问题
  • 确保当前用户拥有该Apex类的执行权限(在Profiles或Permission Sets中配置)
  • 点击按钮时打开浏览器控制台(F12),查看报错信息定位问题

内容的提问来源于stack exchange,提问作者Junaid Ahmad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 03:43:16