推迟执行电子报告格式的序列元素
概述
您可以使用电子报告 (ER) 框架的工序设计器,以配置用于生成文本格式出站文档的 ER 解决方案的格式组件。 配置的格式组件的层次结构由各种类型的格式元素组成。 这些格式元素用于在运行时用所需的信息填充生成的文档。 默认情况下,当您运行 ER 格式时,格式元素的运行顺序与它们在格式层次结构中的显示顺序相同:从上到下一个接一个。 但是,在设计时,您可以更改已配置格式组件的任何序列元素的执行顺序。
通过对已配置格式的序列格式元素打开推迟执行选项,可以推迟(延迟)执行该元素。 在这种情况下,该元素只有在其父元素的所有其他元素都已运行后才能运行。
若要了解有关此功能的详细信息,请完成本文中的示例。
限制
仅针对为 ER 格式(用于生成文本格式的出站文档)配置的序列元素支持推迟执行选项。
推迟执行选项不适用于已配置为最大长度受限制的修整序列的序列。
示例:推迟执行 ER 格式的序列元素
以下步骤说明了具有系统管理员或电子报告职能顾问角色的用户如何配置一个 ER 格式,以包含执行顺序与格式层次结构中的执行顺序不同的序列元素。
这些步骤可以在 USMF公司内的 Microsoft Dynamics 365 Finance 中执行。
先决条件
若要完成本示例,您必须能够用以下角色之一访问 USMF 公司的 Finance:
- 电子申报功能顾问
- 系统管理员
如果您尚未完成推迟执行 ER 格式的 XML 元素一文中的示例,请下载示例 ER 解决方案的以下配置。
内容描述 | 文件名 |
---|---|
ER 数据模型配置 | Model to learn deferred elements.version.1.xml |
ER 模型映射配置 | Mapping to learn deferred elements.version.1.1.xml |
在开始之前,您还必须下载并保存示例 ER 解决方案的以下配置。
内容描述 | 文件名 |
---|---|
ER 格式配置 | Format to learn deferred sequences.version.1.1.xml |
导入示例 ER 配置
转到组织管理>工作区>电子申报。
选择申报配置。
在配置页面上,如果用于了解推迟的元素的模型配置在配置树中不可用,请导入 ER 数据模型配置:
- 选择交换,然后选择从 XML 文件加载。
- 选择浏览,找到并选择 Model to learn deferred elements.1.xml 文件,然后选择确定。
如果用于了解推迟的元素的映射配置在配置树中不可用,请导入 ER 模型映射配置:
- 选择交换,然后选择从 XML 文件加载。
- 选择浏览,找到并选择 Mapping to learn deferred elements.1.1.xml 文件,然后选择确定。
导入 ER 格式配置:
- 选择交换,然后选择从 XML 文件加载。
- 选择浏览,找到并选择 Format to learn deferred sequences.1.1.xml 文件,然后选择确定。
在配置树中,展开用于了解推迟的元素的模型。
在配置树中查看导入的 ER 配置的列表。
启用配置提供程序
转到组织管理>工作区>电子申报。
在本地化配置页上的配置提供程序部分中,确保列出了示例公司 Litware, Inc. (
http://www.litware.com
) 的配置提供程序,并将其标记为活动状态。 如果未列出此配置提供程序,或者未将其标记为活动状态,请按照创建一个配置提供程序,并标记其为活动状态一文中的步骤操作。
查看导入的模型映射
查看 ER 模型映射组件的设置,该组件配置为根据请求来访问税收交易记录并公开访问的数据。
转到组织管理>工作区>电子申报。
选择申报配置。
在配置页上的配置树中,展开用于了解推迟的元素的模型。
选择用于了解推迟的元素的映射配置。
选择设计器来打开映射列表。
选择设计器查看映射详细信息。
选择显示详细信息。
查看配置为访问税收交易记录的数据源:
表记录类型的交易记录数据源被配置为访问 TaxTrans 应用程序表的记录。
计算字段类型的凭证数据源被配置为返回所需的凭证代码(INV-10000349 和 INV-10000350)作为记录列表。
计算字段类型的已筛选数据源被配置为从交易记录数据源中仅选择所需凭证的税收交易记录。
为已筛选数据源添加了计算字段类型的 $TaxAmount 字段,以显示具有相反符号的税收值。
分组依据类型的已分组数据源被配置为将已筛选数据源的已筛选税收交易记录分组。
已分组数据源的 TotalSum 聚合字段被配置为针对该数据源的所有已筛选税收交易记录汇总已筛选数据源的 $TaxAmount 字段值。
查看配置的数据源如何绑定到数据模型,以及它们如何公开访问的数据以使其以 ER 格式可用:
- 已筛选数据源已绑定到数据模型的 Data.List 字段。
- 已筛选数据源的 $TaxAmount 字段已绑定到数据模型的 Data.List.Value 字段。
- 已分组数据源的 TotalSum 字段已绑定到数据模型的 Data.Summary.Total 字段。
关闭模型映射设计器和模型映射页面。
查看导入的格式
在配置页面上的配置树中,选择用于了解延迟序列的格式配置。
选择设计器查看格式详细信息。
选择显示详细信息。
查看 ER 格式组件的设置,这些设置被配置为以文本格式生成出站文档,其中包括税收交易记录的详细信息:
报表\行序列格式元素被配置为用嵌套序列元素(标题、记录和汇总)生成的单个行填充出站文档。
报表\行\标题序列格式元素被配置为用单个标题行填充出站文档,以显示处理的开始日期和时间。
报表\行\记录序列格式元素被配置为用显示各项税收交易记录详细信息的单行填充出站文档。 这些税收交易记录以分号分隔。
报表\行\汇总序列格式元素被配置为用包括已处理税收交易记录中税收值总计的单个汇总行填充的出站文档。
在映射选项卡上,查看以下详细信息:
- 报表\行\标题元素不必绑定到数据源即可在出站文档中生成单行。
- Prefix1 元素生成 P1 符号以表明添加的行是报表标题行。
- ExecutionDateTime 元素会生成标题行的添加日期和时间(包括毫秒)。
- 报表\行\记录元素已绑定到 model.Data.List 列表,以为绑定列表中的每条记录生成一行。
- Prefix2 元素生成 P2 符号以表明添加的行适用于税收交易记录明细。
- TaxAmount 元素已绑定到 model.Data.List.Value(在相对路径视图中显示为 @.Value)以生成当前税收交易记录的税收值。
- RunningTotal 元素是税收值累计总额的占位符。 当前,此元素没有输出,因为没有为其配置绑定或默认值。
- ExecutionDateTime 元素生成在此报表中处理当前交易时的日期和时间(包括毫秒)。
- 报表\行\汇总元素不必绑定到数据源即可在出站文档中生成单行。
- Prefix3 元素生成 P3 符号以表明添加的行包含总税收值。
- TotalTaxAmount 元素已绑定到 model.Data.Summary.Total 以生成已处理税收交易记录的税收值总和。
- ExecutionDateTime 元素会生成汇总行的添加日期和时间(包括毫秒)。
运行导入的格式
在格式设计器页上,选择运行。
下载 Web 浏览器提供的文件,然后将其打开以进行检查。
请注意,汇总行 22 显示了已处理交易记录的税收值总和。 由于该格式已配置为使用 model.Data.Summary.Total 绑定返回此总和,所以通过调用使用模型映射的 GroupBy 类型的已分组数据源 TotalSum 汇总计算了此总和。 为了计算此汇总,模型映射会在已筛选数据源中选择的所有交易记录上迭代。 通过比较第 21 行和第 22 行的执行时间,可以确定计算总和用了 10 毫秒 (ms)。 通过比较第 2 行和第 21 行的执行时间,可以确定生成所有交易记录行用了 7 ms。 因此,总共需要 17 ms。
修改格式,以便根据生成的输出来求和
如果交易记录量远大于当前示例中的交易记录量,则求和时间可能会增加并导致性能问题。 通过更改格式设置,可以帮助防止这些性能问题。 因为您访问税收值以将其包括在生成的报表中,所以您可以重复使用此信息来求税收值总计。 有关更多信息,请参见配置格式以进行计数和求和。
在格式设计师页面上的格式选项卡上,选择格式树中的报表文件元素。
将收集输出详细信息选项设置为是。 现在,您可以使用现有报表的内容作为数据源来配置此格式,该数据源可以通过使用数据收集类别中的内置 ER 函数来访问。
在映射选项卡上,选择报表\行序列元素。
将收集的数据密钥名称表达式配置为
WsColumn
。将收集的数据密钥值表达式配置为
WsRow
。选择报表\行\记录\TaxAmount数字元素。
将收集的数据密钥名称表达式配置为
SummingAmountKey
。您可以考虑使用此设置来实现虚拟工作表,其中单元格 A1 的值将附加来自每个已处理税收交易记录的税额值。
选择报表\行\记录\RunningTotal 数字元素,然后选择编辑公式。
使用内置 SUMIF ER 函数配置
SUMIF(SummingAmountKey, WsColumn, WsRow)
表达式。选择保存。
关闭公式设计器页。
选择保存,然后选择运行。
下载并查看 Web 浏览器提供的文件。
第 21 行包含使用生成的输出作为数据源为所有已处理交易记录计算的税值累计总和。 此数据源从报表的开头开始,一直持续到最后一个税收交易记录。 第 22 行包含使用 GroupBy 类型数据源在模型映射中计算的所有已处理交易记录的税值总和。 请注意,这些值相等。 因此,可以使用基于输出的求和来代替 GroupBy。 通过比较第 2 行和第 21 行的执行时间,可以确定生成所有交易记录行和总和用了 9 ms。 因此,就生成明细行和税值总和而言,修改后的格式大约比原始格式快两倍。
选择报表\行\汇总\TotalTaxAmount 数字元素,然后选择编辑公式。
输入
SUMIF(SummingAmountKey, WsColumn, WsRow)
表达式而不是现有表达式。选择保存,然后选择运行。
下载并查看 Web 浏览器提供的文件。
请注意,最后一个交易记录明细行上的税收值累计总和现在等于汇总行上的总和。
将基于输出的总和的值放在报表标题中
例如,如果您必须在报表的标题中显示税值总和,则可以修改格式。
在格式设计器页面的格式选项卡上,选择报表\行\汇总序列元素。
选择上移。
选择保存,然后选择运行。
下载并查看 Web 浏览器提供的文件。
请注意,汇总行 2 上的税收值总和现在等于 0(零),因为此总和现在是基于生成的输出计算的。 生成第 2 行时,生成的输出尚不包含具有交易记录明细的行。 您可以配置此格式以延迟执行报表\行\汇总序列元素,直到已经为所有税收交易记录运行了报表\行\记录序列元素为止。
推迟执行汇总序列,以便使用计算出的总和
在格式设计器页面的格式选项卡上,选择报表\行\汇总序列元素。
将推迟执行选项设置为是。
选择保存,然后选择运行。
下载并查看 Web 浏览器提供的文件。
报表\行\汇总序列元素现在仅在其父元素报表\行下嵌套的所有其他项目运行之后才运行。 因此,它在针对 model.Data.List 数据源的所有税收交易记录运行报表\行\记录序列元素后运行。 第 1、2 和 3 行以及最后第 22 行的执行时间揭示了这一事实。