products页面出现多选框后,能够直接将勾选的products删除吗?而不用跳转到flow再删除。例如将勾选的products传给flow
在标准的「Opportunity Products」(机会产品) 相关列表上,Salesforce 并不直接支持多选后一次性删除的功能。如果你想要在“同一页面”直接勾选然后删除,而不跳转到单独的 Flow 界面,通常需要借助自定义开发的方式来实现。下面给你几种可行的思路:
1. 使用自定义 Lightning Web Component (LWC) 或 Aura Component
这是目前在 Lightning 环境下最灵活、体验最好的做法:
-
创建一个自定义的 LWC / Aura 组件
- 组件中查询并显示与当前 Opportunity 相关的 OpportunityLineItem(产品)列表。
- 在列表中提供可多选的复选框 (Checkbox) 列。
- 有一个“删除所选产品 (Delete Selected Products)”按钮。
-
Apex Controller
- 在该组件对应的 Apex 类中,写一个
@AuraEnabled
方法,接收被勾选的产品 Id 列表 (List<Id>)。 - 在方法内执行
delete [SELECT Id FROM OpportunityLineItem WHERE Id IN :selectedIds];
,实现批量删除。 - 也可以使用
Database.delete(selectedIds, allOrNone)
做更灵活的错误处理。
- 在该组件对应的 Apex 类中,写一个
-
前端交互逻辑
- 用户在组件里勾选若干条产品,点击 “Delete” 按钮后,调用 Apex 方法删除这些记录。
- 删除成功后,前端刷新列表数据,页面不会跳转。
-
嵌入到 Opportunity 页面
- 打开 Lightning App Builder(或在对象管理中编辑 Record Page),将自定义组件拖放到 Opportunity 的记录页面布局中,或者替换掉原生的 Related List 视图。
优点:
- 体验好,用户无需跳转到 Flow 界面,也无需点击多次确认。
- 可以完全自定义 UI/逻辑,比如加一个“全选”功能、批量编辑功能等。
缺点:
- 需要开发技能(LWC/Apex),代码维护成本略高。
2. 在 Lightning Record Page 内 嵌入 Flow (不另开弹窗/新界面)
如果你还是想用 Flow,但又不想跳转到新的页面,可以在 Lightning Record Page 上直接嵌入 Screen Flow,让它显示在同一页面里:
- 创建好 Screen Flow,包括数据获取、Data Table 勾选、删除等逻辑。
- 在 Flow 中使用 Data Table 组件(如果支持多选) 或者使用第三方组件,供用户勾选。
- 到 Lightning App Builder,编辑该 Opportunity 的 Record Page,把 “Flow” 标准组件拖出来,选择你想要展示的 Screen Flow。
- 保存并激活页面后,用户在访问 Opportunity 时,就能在同一页面看到这个 Flow UI,直接勾选并删除。
优点:
- 利用 Flow 的可视化配置,代码量较少。
- 不需要跳转到新页面或弹窗,操作比较直观。
缺点:
- 如果你想让它像标准 Related List 那样显示,UI 可能需要一定的配置或是借助 Data Table 组件。
- 目前官方的 Flow Data Table 组件功能有限,若是批量操作或界面美观性有较高要求,可能需要社区/第三方组件或自定义 LWC for Flow Screen。
3. Classic 环境下的 JavaScript List Button(不太适合 Lightning)
如果你在 Classic 环境,可以通过 JavaScript List Button 的方式,在 Opportunity Products 列表勾选后,直接批量删除 (不会跳到 Flow),大致步骤:
- 在 Opportunity 对象上创建一个自定义 List Button,类型:OnClick JavaScript。
- 调用
sforce.connection.deleteIds()
或自定义 Apex Web Service 去删除选中的 OpportunityLineItem 记录。 - 在 Page Layout 的 Related List 设置中,把这个自定义 List Button 添加进去。
但是:
- 这种 JavaScript 按钮在 Lightning 中已不受官方推荐,也无法直接在 Lightning 的相关列表中使用。
- 若你要在 Lightning 界面上用,得做兼容性或其他转换(Lightning Unsupported)。因此不建议在 Lightning 做这种方式。
4. 小结与建议
-
最佳实践:
- 在 Lightning 中使用自定义 LWC (或 Aura):UI 灵活、体验好,直接在页面上多选删除,无需跳转。
- 如果不会写 LWC/Apex,可用 Screen Flow + Lightning App Builder 嵌入,也能做到不离开当前页面,但会是在 Flow 内部点击“下一步/删除”之类的操作。
-
不建议直接修改“标准的 Opportunity Products 相关列表”来显示 Checkbox 并执行删除,因为 Salesforce 原生不支持此功能,需要定制化。而定制化最直接的方法就是自定义组件或嵌入式 Flow来替代标准相关列表。
总之,如果你的目标是**“在当前产品列表界面,直接勾选并删除”**,最干净可控的方式还是——自定义一个 LWC 组件 (或者 Aura / 嵌入式 Flow),从而实现批量选择和删除的功能,并且保持在同一页面里进行交互。