【问题标题】:Approval / Reject functionality on custom buttons of object对象的自定义按钮上的批准/拒绝功能
【发布时间】:2011-10-03 18:57:44
【问题描述】:

我正在尝试在对象中的自定义按钮上实现批准和拒绝按钮的功能。

我有 2 个问题

  1. 我们可以从自定义按钮调用 apex 方法吗?
  2. 我们如何模拟 apex 类中的批准/拒绝功能?

谢谢

【问题讨论】:

    标签: salesforce apex-code


    【解决方案1】:

    1) 您需要创建一个 VF 页面来完成您需要的工作并将重定向回您希望用户所在的任何位置。此处描述:http://sfdc.arrowpointe.com/2009/01/08/invoke-apex-from-a-custom-button-using-a-visualforce-page/

    2) 看看这个例子的第二部分(req2 部分):http://www.salesforce.com/us/developer/docs/apexcode/index_Left.htm#CSHID=apex_process_example.htm|StartTopic=Content%2Fapex_process_example.htm|SkinName=webhelp。 然后,您可能希望从ProcessInstanceWorkitem 表中查询它,而不是从result 中获取newWorkItemIds.get(0) 值

    希望这可以帮助您继续前进

    【讨论】:

    • 我不确定我是否理解您的意思是从 ProcessInstanceWorkitem 查询
    • 在示例中,正在批准的 WorkitemId(使用 req2 变量)取自示例启动批准流程时。您的代码中可能不是这种情况。我假设已经启动了一个审批流程,而您只想批准下一步。因此,您希望在数据层中找到 WorkItemId。您可以通过从 ProcessInstanceWorkitem 查询来做到这一点。像这样的东西应该给你你所追求的 id:[Select id From ProcessInstanceWorkitem where ProcessInstance.TargetObjectId=:idOfObjectToApprove];
    【解决方案2】:

    选项 1:Apex 代码(http://blog.jeffdouglas.com/2010/01/04/automating-salesforce-approval-processes-with-apex-triggers/)

    以下顶级代码可用于提交记录以供批准

    // create the new approval request to submit
    Approval.ProcessSubmitRequest req = new Approval.ProcessSubmitRequest();
    req.setComments('Submitted for approval. Please approve.');
    req.setObjectId(Trigger.new[i].Id);
    // submit the approval request for processing
    Approval.ProcessResult result = Approval.process(req);
    // display if the reqeust was successful
    System.debug('Submitted for approval successfully: '+result.isSuccess());
    

    选项 2:点击 JS (http://jamesrsullivan.com/salesforcecom-start-and-approval-process-from)

    导航至:设置 > 自定义 > 机会 > 按钮和链接 按“新建”按钮并使用以下详细信息: 标签: 批准 名称:批准 显示类型:详情页按钮 行为:执行 JavaScript OnClick JavaScript:

    if ((Modal.confirm && Modal.confirm('一旦你提交这条记录 批准,您可能无法对其进行编辑或从 审批流程取决于您的设置。继续?')) || (!Modal.confirm && window.confirm('一旦您提交此记录 批准,您可能无法对其进行编辑或从 审批流程取决于您的设置。继续?'))) navigateToUrl('/p/process/Submit?id={!Opportunity.Id}&retURL=%2F{!Opportunity.Id}');

    将 Opportunity 替换为您的对象 API 名称。

    【讨论】:

    • 感谢您的信息。我可以提交以供批准,我想做的一件事是允许经理通过按钮批准提交的记录。我有一个提交记录以供批准的 VF 页面。我希望经理查看记录,然后批准或拒绝它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-23
    • 2015-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多