设计电子报告格式以对 Excel 中生成的文档进行分页
本文说明系统管理员或电子报告功能顾问角色的用户如何配置电子报告 (ER) 格式以在 Microsoft Excel 中生成出站文档并管理文档分页。
在此示例中,您将修改 Microsoft 提供的电子报告格式,该格式用于在生成内部统计声明时打印控制报表。 此报表可让您观察报告的内部统计交易。 您的修改将让您能够管理生成的控制报表的分页。
本文中的过程可以在 DEMF 公司完成。 无需进行编码。 在开始之前,请下载并保存以下文件。
说明 | 文件名 |
---|---|
报表模板 1 | ERIntrastatReportDemo1.xlsx |
报表模板 2 | ERIntrastatReportDemo2.xlsx |
配置 ER 框架
按照配置电子报告框架中的步骤设置最低限度的电子报告参数集。 在开始使用电子报告框架设计标准电子报告格式的自定义版本之前,您必须完成此设置。
导入标准电子报告格式配置
按照导入标准电子报告格式配置中的步骤将标准电子报告配置添加到您当前的 Dynamics 365 Finance 实例。 导入内部统计报表格式配置的 1.9 版本。 基础内部统计模型配置的基础版本 1 会自动从存储库导入。
自定义标准 ER 格式
创建自定义电子报告格式
在此场景中,您是 Litware, Inc. 的代表,该公司当前被选为可用的电子报告配置提供商。 您必须使用内部统计报表配置作为基础来创建新的电子报告格式配置。
- 转到组织管理>电子申报>配置。
- 在配置页的左侧窗格的配置树中,展开内部统计模型,选择内部统计报表。 Litware, Inc. 将把此 ER 格式配置的版本 1.9 用作自定义版本的基础。
- 选择创建配置,以打开下拉对话框。 可使用此对话框创建自定义付款格式的新配置。
- 在新建字段组中,选择从以下名称派生: 内部统计报表, Microsoft 选项。
- 在名称字段中,输入内部统计报表 Litware。
- 选择创建配置创建新格式。
将创建内部统计报表 Litware 电子报告格式配置的版本 1.9.1。 此版本的状态为草稿,可以编辑。 自定义 ER 格式的当前内容与 Microsoft 提供的格式的内容匹配。
让自定义格式可运行
已创建自定义格式的第一个版本,并且其状态为操作,您可以针对测试用途运行该格式。 若要运行此报表,请使用引用自定义 ER 格式的付款方式处理供应商付款。 默认情况下,从应用程序调用 ER 格式时,仅考虑状态为已完成或已共享的版本。 此行为有助于避免使用未完成设计的 ER 格式。 但是,对于测试运行,可以强制应用程序使用状态为草稿的 ER 格式版本。 因此,如果需要进行任何修改,可以调整当前格式版本。 有关详细信息,请参阅适用性。
要使用 ER 格式的草稿版本,必须显式标记 ER 格式。
转到组织管理>电子申报>配置。
在配置页操作窗格中配置选项卡的高级设置组中,选择用户参数。
在使用参数对话框中,将运行设置选项设置为是,然后选择确定。
根据需要,选择编辑以使当前页面可供编辑。
在左侧窗格的配置树中,选择内部统计报表 Litware。
将运行草稿选项设置为是,然后选择保存。
设置外贸参数使用自定义电子报告格式
按照以下步骤配置外贸参数,以便您可以使用自定义格式。
- 转到税务>设置>外贸>外贸参数。
- 在外贸参数页面的电子报告快速选项卡上,在文件格式映射字段中,选择内部统计报表 Litware。
- 在报表格式映射字段中,选择内部统计报表 Litware。
- 选择保存。
配置自定义格式以使用下载的报表模板
查看第一个下载的 Excel 模板
在 Excel 桌面应用程序中,打开您先前下载的 ERIntrastatReportDemo1.xlsx 模板文件。
验证模板是否包含命名范围以在生成的文档中创建报表页眉、报表详细信息和报表页脚部分。
替换当前的自定义电子报告格式的 Excel 模板
必须将新 Excel 模板添加到自定义电子报告格式。
- 转到组织管理>电子申报>配置。
- 在配置页的左侧窗格的配置树中,展开内部统计模型>内部统计报表,然后选择内部统计报表 Litware 配置。
- 选择设计器。
- 在格式设计器页的操作窗格上,选择显示详细信息。
- 确保已选择内部统计: Excel 根格式组件,然后,在操作窗格上,在导入选项卡上的导入组中,选择从 Excel 更新。
- 在从 Excel 更新对话框中,选择更新模板。
- 在打开对话框中,浏览到并选择您之前下载的 ERIntrastatReportDemo1.xlsx 文件,然后选择打开。
- 选择确定。
- 选择保存。
更改数据绑定以在生成的报表上显示物料描述
- 在格式设计器页中,选择映射选项卡。
- 展开内部统计>报表行,选择商品代码组件。
- 选择编辑公式。
- 将绑定公式从
@.CommodityCode
更改为CONCATENATE(@.CommodityCode, " ", @.ProductName)
。 - 选择保存。
生成内部统计申报控制报表
首先,确保您在内部统计页面上有用于报告的内部统计交易。
然后使用自定义电子报告格式生成内部统计申报的控制报表。
转到纳税>申报>外贸>内部统计。
在内部统计页面上的操作窗格上,选择输出>报表。
在内部统计报表对话框中,按照以下步骤运行报表:
- 设置开始日期和结束日期字段以将特定内部统计交易包括到报表中。
- 将生成文件选项设置为否。
- 将生成报表选项设置为是。
- 选择确定。
下载并保存生成的文档。
在 Excel 中打开文档,进行查看。
配置自定义格式以对生成的文档进行分页
查看第二个下载的 Excel 模板
在 Excel 中,打开您先前下载的 ERIntrastatReportDemo2.xlsx 模板文件。
将此模板与 ERIntrastatReportDemo1.xlsx 模板进行比较,验证它是否包含几个新的 Excel 名称以在生成的文档中创建和填充特定于页面的部分:
- ReportPageHeader 范围已添加以创建页眉。
- ReportPageFooter 范围已添加以创建页脚。
- ReportPageFooter_PageLines 单元格已配置为显示每页的交易数。
- ReportPageFooter_PageAmount 单元格已配置为显示每页的交易总金额。
- ReportPageFooter_PageWeight 单元格已配置为显示每页的交易总重量。
- ReportPageFooter_RunningCounterLines 单元格已配置为显示从报表开头一直到当前页面的正在运行的交易计数器。
- ReportPageFooter_RunningTotalAmount 单元格已配置为显示从报表开头一直到当前页面正在运行的所有交易的金额累计总和。
- ReportPageFooter_RunningTotalWeight 单元格已配置为显示从报表开头一直到当前页面的交易的重量累计总和。
此模板的 CommodityCode 单元格已配置为包装单元格文本。 由于交易详细信息行被配置为自动适应行高度,所以当 CommodityCode 单元格中的文本换行时,整行的高度必须自动改变。
重复替换当前的自定义电子报告格式的 Excel 模板
按照本文的替换当前的自定义电子报告格式的 Excel 模板一节中的步骤操作。 但是,在步骤 7 中,选择 ERIntrastatReportDemo2.xlsx 文件。
在格式设计器页上,展开内部统计。
命名已添加到可编辑电子报告格式的范围格式组件,以将结构与应用的 Excel 模板的结构同步:
- 选择与 Excel 名称 ReportPageHeader 关联的范围组件。
- 在格式选项卡上,在名称字段中输入报表页面页眉。
- 选择与 Excel 名称 ReportPageFooter 关联的范围组件。
- 在格式选项卡上,在名称字段中输入报表页面页脚。
选择保存。
更改格式结构以实现文档分页
在格式设计器页上,在左窗格中的格式树中,选择内部统计根组件。
选择添加。
在添加对话框中,在组件的 Excel 组中选择页面组件。
在组件属性对话框的名称字段中,输入报表页。 然后选择确定。
要在每个生成的页面上使用报表页面页眉组件作为页眉,请执行以下步骤:
- 选择报表页面页眉组件,然后选择剪切。
- 选择报表页组件,然后选择粘贴。
- 展开报表页。
- 要强制页面组件考虑将此范围用于页眉,选择报表页面页眉,然后,在格式选项卡上,在复制方向字段中,选择无复制。
要对生成的文档进行分页以考虑报表行上的内容,请执行以下步骤:
- 选择报表行组件,然后选择剪切。
- 选择报表页组件,然后选择粘贴。
要在报表行之后但在最后一页页脚之前包含报表页脚,请执行以下步骤:
- 选择报表页脚组件,然后选择剪切。
- 选择报表页组件,然后选择粘贴。
要在每个生成的页面上使用报表页面页脚组件作为页脚,请执行以下步骤:
- 选择报表页面页脚组件,然后选择剪切。
- 选择报表页组件,然后选择粘贴。
- 要强制页面组件考虑将此范围用于页脚,选择报表页面页脚,然后,在格式选项卡上,在复制方向字段中,选择无复制。
添加数据源以计算页脚总计
您必须配置新数据源以计算页面总计、正在运行的计数器和累计总和值,并将它们显示在页脚部分。 为此,我们建议您使用数据集合数据源。
在格式设计器页中,选择映射选项卡。
选择添加根,然后按照以下步骤操作:
- 在添加数据源对话框中,在常规部分,选择空容器。
- 在“空容器”数据源属性对话框中,在名称字段中输入总计。
- 选择确定。
选择总计数据源,选择添加,然后按照以下步骤操作:
- 在添加数据源对话框中,在常规部分,选择空容器。
- 在“空容器”数据源属性对话框中,在名称字段中输入页面。
- 选择确定。
再次选择添加,然后按照以下步骤操作:
- 在添加数据源对话框中,在常规部分,选择空容器。
- 在“空容器”数据源属性对话框中,在名称字段中输入累计。
- 选择确定。
选择 Total.Page 数据源,选择添加,然后按照以下步骤操作:
- 在添加数据源对话框中,在功能部分,选择数据收集。
- 在“数据集合”数据源属性对话框中,在名称字段中输入金额。
- 在物料类型字段中,选择实际。
- 将收集所有值选项设置为是。
- 选择确定。
再次选择添加,然后按照以下步骤操作:
- 在添加数据源对话框中,在功能部分,选择数据收集。
- 在“数据集合”数据源属性对话框中,在名称字段中输入重量。
- 在物料类型字段中,选择实际。
- 将收集所有值选项设置为是。
- 选择确定。
选择 Total.Running 数据源,选择添加,然后按照以下步骤操作:
- 在添加数据源对话框中,在功能部分,选择数据收集。
- 在“数据集合”数据源属性对话框中,在名称字段中输入金额。
- 在物料类型字段中,选择实际。
- 将收集所有值字段设置为是。
- 选择确定。
再次选择添加,然后按照以下步骤操作:
- 在添加数据源对话框中,在功能部分,选择数据收集。
- 在“数据集合”数据源属性对话框中,在名称字段中输入重量。
- 在物料类型字段中,选择实际。
- 将收集所有值字段设置为是。
- 选择确定。
再次选择添加,然后按照以下步骤操作:
- 在添加数据源对话框中,在功能部分,选择数据收集。
- 在“数据集合”数据源属性对话框中,在名称字段中输入行。
- 在物料类型字段中,选择整数。
- 将收集所有值字段设置为是。
- 选择确定。
选择保存。
添加数据源以控制页脚可见性
如果您计划控制页脚可见性,且不打算将页脚包含在包含交易的最终页面上,配置一个新数据源来计算所需的运行计数器。
- 在格式设计器页中,选择映射选项卡。
- 选择 Total.Running 数据源,选择添加。
- 在添加数据源对话框中,在功能部分,选择数据收集。
- 在“数据集合”数据源属性对话框中,在名称字段中输入行 2。
- 在物料类型字段中,选择整数。
- 将收集所有值选项设置为是。
- 选择确定。
- 选择保存。
配置绑定以收集总计值
在格式设计器页上,在格式树中,展开报表行组件,选择嵌套发票值组件。
选择编辑公式。
将绑定公式从
NUMBERVALUE(NUMBERFORMAT(@.InvoiceValue, "F"&TEXT(model.Parameters.IntrastatAmountDecimals)), ".", "")
更改为Total.Page.Amount.Collect(NUMBERVALUE(NUMBERFORMAT(@.InvoiceValue, "F"&TEXT(model.Parameters.IntrastatAmountDecimals)), ".", ""))
。注释
除了将每个迭代交易的金额值放在 Excel 单元格中外,此绑定还会收集数据集合 Total.Page.Amount 数据源中的值。
选择嵌套重量组件。
选择编辑公式。
将绑定公式从
@.'$RoundedWeight'
更改为Total.Page.Weight.Collect(@.'$RoundedWeight')
。注释
除了将每个迭代交易的重量值放在 Excel 单元格中外,此绑定还会收集 Total.Page.Weight 数据源中的值。
配置绑定以填充页脚总计
在格式设计器页上的格式树中,展开报表页面页脚组件,选择引用 Excel ReportPageFooter_PageAmount 单元格的嵌套范围组件,然后按照以下步骤操作:
- 在右侧窗格中的数据源树中,选择 Total.Page.Amount.Sum() 项。
- 选择绑定。
- 选择编辑公式。
- 将公式更新为
Total.Page.Amount.Sum(false)
。
注释
您必须将此函数的参数指定为 False 以保留当前页面的收集数据,因为需要这些数据来计算金额累计总和、每页总行数以及正在运行的行计数器。
在格式树中,选择引用 Excel ReportPageFooter_PageWeight 单元格的嵌套范围组件,然后执行以下步骤:
- 在右侧窗格中的数据源树中,选择 Total.Page.Weight.Sum() 项。
- 选择绑定。
- 选择编辑公式。
- 将公式更新为
Total.Page.Weight.Sum(false)
。
配置绑定以填充页面的累计总和
在格式设计器页上的格式树中,展开报表页面页脚组件,选择引用 Excel ReportPageFooter_RunningTotalAmount 单元格的嵌套范围组件,然后按照以下步骤操作:
- 在右侧窗格中的数据源树中,选择 Total.Running.Amount.Collect() 项。
- 选择绑定。
- 选择编辑公式。
- 将公式更新为
Total.Running.Amount.Sum(false)+Total.Running.Amount.Collect(Total.Page.Amount.Sum(true))
。
注释
Total.Running.Amount.Sum(false)
操作数返回先前收集的金额累计总和。Total.Running.Amount.Collect(Total.Page.Amount.Sum(true))
操作数返回当前页面的总金额。 您必须将第二个操作数的嵌套函数的参数指定为 True 以在将此值放入Total.Running.Amount
累计总和集合时立即重置Total.Page.Amount
数据集合。 指定的参数必须从 0(零)值开始收集下一页的总计。Total.Running.Amount.Sum(false)
函数将被调用以在当前页面的 Excel ReportPageFooter_RunningTotalAmount 单元格中输入金额累计总和。在格式树中,选择引用 Excel ReportPageFooter_RunningTotalWeight 单元格的嵌套范围组件,然后执行以下步骤:
- 在右侧窗格中的数据源树中,选择 Total.Running.Weight.Collect() 项。
- 选择绑定。
- 选择编辑公式。
- 将公式更新为
Total.Running.Weight.Sum(false)+Total.Running.Weight.Collect(Total.Page.Weight.Sum(true))
。
配置绑定以填充页面正在运行的计数器
在格式设计器页上的格式树中,展开报表页面页脚组件,选择引用 Excel ReportPageFooter_RunningCounterLines 单元格的嵌套范围组件。
选择编辑公式。
添加公式
Total.Running.Lines.Collect(COUNT(Total.Page.Amount.Result))
。注释
此公式返回整个报表的收集的金额值的数量。 此数字等于当前时刻已经迭代的交易数。 同时,公式将在 Total.Running.Lines 集合中收集返回值。
配置绑定以填充页面的页脚计数器
在格式设计器页上的格式树中,展开报表页面页脚组件,选择引用 Excel ReportPageFooter_PageLines 单元格的嵌套范围组件。
选择编辑公式。
添加公式
COUNT(Total.Page.Amount.Result)-Total.Running.Lines.Sum(false)
。注释
此公式将当前页面上的交易数量计算为整个报表的 Total.Page.Amount.Result 中收集的交易数与在此阶段 Total.Running.Lines.Sum 中存储的交易数量之间的差值。 由于当前页面的交易数存储在范围组件绑定中的 Total.Running.Lines 中,该组件引用 Excel ReportPageFooter_RunningCounterLines 单元格,因此当前页面上的交易数尚未包括在内。 因此,此差值等于当前页面上的交易数。
配置组件可见性
您可以在生成的文档的特定页面上更改页眉和页脚的可见性以隐藏以下元素:
- 第一个页面的页眉,因为报表页眉已经包含列标题
- 没有最后一页可能发生的交易的任何页面的页眉
- 没有最后一页可能发生的交易的任何页面的页脚
要更改可见性,更新报表页面页眉和报表页面页脚组件的已启用属性。
在格式设计器页上,在格式树中,展开报表页面组件,选择嵌套报表页面页眉组件,然后按照以下步骤操作:
为已启用字段选择编辑。
在公式设计器页面的公式字段中,输入以下表达式:
AND(
COUNT(Total.Page.Amount.Result)<>0,
COUNT(Total.Page.Amount.Result)<>COUNT(model.CommodityRecord)
)
在格式树中,选择嵌套报表页面页脚组件,然后按照以下步骤操作:
为已启用字段选择编辑。
在公式设计器页面的公式字段中,输入以下表达式:
(
COUNT(Total.Page.Amount.Result)-Total.Running.Lines2.Sum(false)+
0*Total.Running.Lines2.Collect(COUNT(Total.Page.Amount.Result))
)<>0
注释
COUNT(Total.Page.Amount.Result)-Total.Running.Lines2.Sum(false)
结构用于计算当前页面上的交易数量。0*Total.Running.Lines2.Collect(COUNT(Total.Page.Amount.Result)
结构用于将当前页面上的交易数添加到集合中,以正确处理下一个页面页脚的可见性。Total.Running.Lines
集合不能在这里重用,因为基础组件的已启用属性在处理嵌套组件的绑定后处理。 当处理已启用属性时,Total.Running.Lines
集合已经增加了当前页面上的交易数。选择保存。
生成内部统计申报控制报表(已更新)
请确保您在内部统计页面上有 24 个交易。 重复本文生成内部统计申报控制报表一节中的步骤生成和查看控制报表。
所有交易都显示在第一个页面上。 页面总计和计数器等于报表总计和计数器。 页面页眉范围将在第一个页面上隐藏,因为报表页眉已经包含列标题。 页面页眉和页脚将在第二个页面上隐藏,因为该页面不包含任何交易。
通过将物料编号代码从 D00006 更改为 L0010,更新内部统计页面上的两个交易。 请注意,新商品的产品名称有源立体声扬声器对比原始商品的产品名称标准扬声器长。 这种情况会强制在生成的文档的相应单元格中自动换行。 现在必须更新文档分页以及与页面相关的合计和盘点。 重复生成内部统计申报控制报表一节中的步骤生成和查看控制报表。
现在,交易显示在两个页面上,已正确计算了页面总计和计数器。 页面页眉范围已在第一个页面上正确隐藏,在第二个页面上可见。 页面页脚在两个页面上都可见,因为它们包含交易。
常见问题解答
有什么方法可以识别页面格式组件何时处理最终页面?
页面组件不公开有关已处理页面数和生成的文档中的总页数的信息。 不过,您可以配置电子报告公式来识别最终页面。 下面是一个示例:
- 使用报表页面组件计算已处理的交易总数。 您可以使用公式
COUNT(Total.Page.Amount.Result)
进行此计算。 - 根据为报表行组件配置的
model.CommodityRecord
绑定计算必须处理的交易总数。 您可以使用公式COUNT(model.CommodityRecord)
进行此计算。 - 比较两个数字来识别最后一个页面。 当两个值相等时,将生成最后一个页面。