mcpField
P
platform-report-generate

platform-report-generate

github.com/forcedotcom数据与数据库1.1k3.0k 次安装1 天前更新
代码仓库

关于 platform-report-generate

帮助 Salesforce 项目生成 Lightning Reports 元数据的技能,面向需要以源文件定义报表的开发者。它涵盖报表格式、列名、筛选器、文件夹结构及部署前检查,并要求通过 MCP 工具核实有效列名。

主要功能

  1. 01按需求选择报表格式
  2. 02查询报表类型的有效列名
  3. 03生成报表及文件夹元数据
  4. 04配置筛选器、分组与图表
  5. 05按检查清单验证元数据

适用场景

  1. 01创建按阶段汇总的 Opportunity 报表
  2. 02配置带日期范围筛选的报表
  3. 03生成矩阵报表或多对象联接报表

MCP 相关

工作流要求调用 `get_metadata_type_sections` 或 `get_metadata_type_context` MCP 工具,以确认报表类型对应的有效平台列名。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/forcedotcom/sf-skills --skill platform-report-generate

安装后在 Claude Code 中输入/platform-report-generate确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

examples/
AccountsCreatedThisYear.report-meta.xml
OpportunitiesByStageAndQuarter.report-meta.xml
OpportunitiesByStageReport.report-meta.xml
TabularOpportunitiesReport.report-meta.xml
references/
chart-types.md
column-names.md
date-intervals.md
errors-and-troubleshooting.md
filter-operations.md
verification-checklist.md

详细介绍

概述

Lightning 报表定义了 Salesforce 数据的查询、分组、筛选和显示方式。每个报表都是一个单独的 .report-meta.xml 文件,位于项目源目录下的 reports/<FolderName>/ 中(在 sfdx-project.json → packageDirectories[].path 中查看源目录根路径)。

关键规则(请先阅读)

最容易导致部署失败的因素——生成任何报表前,请先检查以下内容:

  1. 分组字段出现在列中——<groupingsDown> 或 <groupingsAcross> 中的字段绝不能同时出现在 <columns> 中
  2. 列名称错误——列名称因报表类型而异。务必调用 MCP 工具进行验证(参见 references/column-names.md)
  3. 范围错误——LeadList 使用 org,而不是 organization
  4. 筛选列的点号表示法——筛选器 <column> 值使用扁平名称(INDUSTRY、TYPE),而不是点号表示法(ACCOUNT.INDUSTRY 无效)
  5. 多值选项列表筛选器——使用一个 <criteriaItems>,并以逗号分隔 <value>(例如 Technology,Financial Services)。不要使用 booleanFilter 将内容拆分为多个 criteriaItems
规则 1:格式决定必需元素
格式<groupingsDown><groupingsAcross><block>
Tabular不允许不允许否
Summary至少 1 个(最多 3 个)不允许否
Matrix至少 1 个(最多 3 个)至少 1 个(最多 3 个)否
Joined顶层不允许顶层不允许至少 2 个(最多 5 个)
规则 2:使用平台列名称

报表元数据使用平台报表列名称,而不是原始 API 字段名称。**务必调用 get_metadata_type_sections 或 get_metadata_type_context,以确认有效列名称。**各报表类型的常见映射请参见 references/column-names.md。

规则 3:必须使用有效的报表类型

<reportType> 必须是标准 API 名称(例如 Opportunity、AccountList、CaseList、LeadList、AccountContactRole),或已部署的自定义报表类型开发者名称。

规则 4–5:图表和汇总字段需要 Summary/Matrix

图表和 <aggregateTypes>(Sum、Average 等)仅适用于 Summary 和 Matrix 报表。

规则 6–8:限制
  • 每个报表最多 3 个交叉筛选器,每个筛选器最多包含 5 个条件项
  • <filterLogic> 必须按顺序引用所有筛选器(例如 1 AND (2 OR 3))
  • Joined 报表:包含 2–5 个区块,每个区块的格式必须为 Summary 或 Matrix(不能是 Tabular)
规则 9:文件夹结构

报表必须位于包含对应文件夹元数据文件的文件夹中:

<sourceDir>/reports/<FolderName>/<ReportName>.report-meta.xml
<sourceDir>/reports/<FolderName>-meta.xml

根据 sfdx-project.json 确定 <sourceDir>(通常为 force-app/main/default,但可进行配置)。

规则 10–11:日期列和范围
  • 日期列使用平台名称(CLOSE_DATE,而不是 CloseDate)
  • LeadList 的范围为 org;Opportunity/AccountList/CaseList 使用 organization
规则 12–13:描述和分组
  • <description> 最多 255 个字符
  • 分组字段不得出现在 <columns> 中——否则部署会自动失败
规则 14:文件夹元数据必须包含 <sharedTo>
<?xml version="1.0" encoding="UTF-8"?>
<ReportFolder xmlns="http://soap.sforce.com/2006/04/metadata">
    <folderShares>
        <accessLevel>Manage</accessLevel>
        <sharedTo>AllInternalUsers</sharedTo>
        <sharedToType>Group</sharedToType>
    </folderShares>
    <name>My Report Folder</name>
</ReportFolder>
规则 15:仅使用有效的日期间隔

“本季度”使用 INTERVAL_CURRENT,“今年”使用 INTERVAL_CURY,“最近 30 天”使用 INTERVAL_LAST30。不要使用 INTERVAL_CURQ——它无效。完整列表请参见 references/date-intervals.md。

顶层元素

元素必需说明
<name>是报告名称(最多 40 个字符)
<reportType>是报告类型 API 名称
<format>是Tabular、Summary、Matrix 或 Joined
<scope>建议organization(LeadList 可使用 org)
<columns>是字段列 — 每列包含 <field> 和可选的 <aggregateTypes>
<filter>否包含 <criteriaItems>,其中含有 <column>、<operator>、<value>
<groupingsDown>有条件行分组:<field>、<dateGranularity>、<sortOrder>
<groupingsAcross>有条件列分组(仅限 Matrix)
<timeFrameFilter>建议<dateColumn>、<interval>,以及可选的 <startDate>/<endDate>
<chart>否请参阅 references/chart-types.md
<buckets>否分桶字段定义
<crossFilters>否跨对象筛选(with/without)
<showDetails>建议true/false
<showGrandTotal>建议true/false
<showSubTotals>建议true/false
<description>建议业务用途(最多 255 个字符)
<block>有条件Joined 格式区块

筛选语法

<filter>
    <criteriaItems>
        <column>STAGE_NAME</column>
        <operator>equals</operator>
        <value>Closed Won</value>
    </criteriaItems>
</filter>

多值选项列表: 使用一个 criteriaItem,并以逗号分隔多个值:

<criteriaItems>
    <column>INDUSTRY</column>
    <operator>equals</operator>
    <value>Technology,Financial Services</value>
</criteriaItems>

常见运算符:equals、notEqual、lessThan、greaterThan、contains、startsWith、includes、excludes、isBlank、notBlank。完整列表请参阅 references/filter-operations.md。

生成工作流

  1. 收集需求 — 对象、字段、分组、筛选条件和图表需求
  2. 确定格式 — 无分组 → Tabular;有行分组 → Summary;有行和列分组 → Matrix;多个对象 → Joined
  3. 确定列名称 — 调用 get_metadata_type_sections MCP 工具,获取此报告类型的有效平台列名称
  4. 编写元数据 — 从 examples/ 中最接近的示例开始并进行调整
  5. 创建文件夹 — 生成文件夹目录和包含 <folderShares> 的 <FolderName>-meta.xml
  6. 验证 — 按照 references/verification-checklist.md 进行检查

参考文件索引

文件阅读时机
references/column-names.md步骤 3 — 各报告类型的列名称映射
references/date-intervals.md设置 timeFrameFilter 间隔时
references/chart-types.md添加图表时 — 全部 17 种类型和 legendPosition 规则
references/filter-operations.md构建筛选条件时 — 完整的运算符参考
references/verification-checklist.md步骤 6 — 部署前验证
references/errors-and-troubleshooting.md字段缺失或部署失败时
examples/TabularOpportunitiesReport.report-meta.xmlTabular 报告模板
examples/OpportunitiesByStageReport.report-meta.xml带图表的 Summary 报告
examples/OpportunitiesByStageAndQuarter.report-meta.xmlMatrix 报告模板
examples/AccountsCreatedThisYear.report-meta.xml带时间范围的筛选报告

评论

支持 Markdown