跳转至

使用可打印文档#

本页提供了其他分步信息,以完成一些常见的可打印文档方案。

创建物料文件#

本节介绍如何为物料创建简单文档。该示例将说明如何使用表达式和DEE操作来计算动态内容。

Info

下面的程序对每个对象类型都是类似的。唯一的区别是,对于物料,可以从物料详细信息页面、步骤视图和资源视图启动打印;对于所有其他对象类型,实际打印需要从可打印文档详细信息页面启动。

配置打印机类型#

  1. 将不同的打印机类型添加到名为打印机类型的查找表中。

  2. 配置智能表打印机类型打印机上下文。此表将不同的打印机类型映射到特定用户和计算机的特定打印机。

配置打印机类型打印机上下文

配置必要的DEE操作#

Info

这是一个可选步骤。建议仅在无法使用表达式或布局设计器的表达式编辑器获得相同结果的情况下使用DEE操作。

在此示例中,将使用一个简单的操作来读取物料的属性检验率,并将其与物料产品客户名称属性连接起来。客户名称与产品的非版本控制部分相关联。

创建DEE操作#

下面是一个DEE操作示例,称为PrintableDocumentGetInspectionRateAndCustomer

UseReference("Cmf.Foundation.BusinessObjects.dll", "Cmf.Foundation.BusinessObjects");
UseReference("Cmf.Navigo.BusinessObjects.dll", "Cmf.Navigo.BusinessObjects");
UseReference("Cmf.Foundation.BusinessOrchestration.dll", "");
UseReference("", "Cmf.Foundation.Common.Exceptions");
UseReference("", "Cmf.Foundation.Common");

Material mat = Input["AppliesToValue"] as Material;

Product prod = mat.Product;

//Load Attributes
mat.LoadAttributes(new Collection<String>() { "InspectionRate" });

prod.LoadAttributes();

Dictionary<String, Object> Output = new Dictionary<string, object>();

Output["Result"] = String.Format("{0}% - {1}",

mat.Attributes.ContainsKey("InspectionRate") ? mat.Attributes["InspectionRate"] : "",

prod.RelatedAttributes.ContainsKey("CustomerName") ? prod.RelatedAttributes["CustomerName"] : "");

return Output;

要使DEE操作可用于可打印文档,必须:

  1. 通过编辑通用表范围分类并创建条目可打印文档上下文项,定义DEE操作的范围分类

    定义范围分类

  2. 使用上面指定的代码创建DEE操作。

    Creating DEE Action

  3. 创建DEE操作(如上面带有源代码示例的操作)时,请将其分类设置为上一点中定义的值。

    Setting DEE Action Classification

  4. 创建一个范围为可打印文档上下文项规则对象,并引用在第1点创建的条目。

    创建可打印文档上下文项规则

创建可打印文档#

  1. 假设创建了更改集,请创建可打印文档,如下图所示。

    创建可打印文档对象

    设置可打印文档上下文 - 无规则

    设置可打印文档上下文 - 使用规则

    Info

    有关创建可打印文档对象的详细信息,请访问《用户指南》的创建可打印文档部分。

  2. 接下来,在布局设计器中编辑页面布局。您可以引用$AppliesToValue条目的任何属性,或者使用本例中使用的变量(主要数量设施名称测试标签)。请确保保存布局后再关闭布局编辑器。

    Editing the Page Layout

Info

有关如何创建和编辑页面布局的详细信息,请参见《用户指南》的可打印文档布局创建部分。

打印文档#

设置文档有效后,可以直接从可打印文档详细信息页面打印文档。

Printing the Printable Document

为了能够直接从物料(或者从步骤视图或资源视图)打印文档,必须在智能表物料可打印文档上下文中定义上下文。下图显示了一个示例:

Printing the Document from Material page

选择打印文档选项时,用户可以使用与文档上下文匹配的所有文档

打印Lot Traveler#

Lot Traveler是根据物料的后续步骤流程动态构建的。

Warning

Lot Traveler将打印物料当前步骤以及该区域所有后续非可选、非备选步骤

Warning

如果该区域的某个步骤没有定义Lot Traveler,系统将尝试使用智能表区域可打印文档上下文中的默认Lot Traveler文档。如果不存在默认文档,则Lot Traveler打印中将跳过该步骤

创建Lot Traveler#

适合在Lot Traveler中使用的可打印文档的创建过程与可打印文档的创建过程类似,如上所述,该文档必须是“Lot Traveler”类型。当可打印文档定义为“Lot Traveler”类型时,“适用于”属性将自动设置为“物料”。此外,还会自动创建三个数据上下文:步骤流程流程路径。由于Lot Traveler基于物料的动态信息,因此在运行期间,系统将为每个步骤提供这三个上下文的相应值。

将Lot Traveler与步骤关联起来#

每个步骤都可以有自己的Lot Traveler文档,或者每个步骤都可以有自己唯一的Lot Traveler文档。要将Lot Traveler与步骤关联起来,必须编辑步骤并设置步骤Lot Traveler属性。

为了方便起见,还可以在智能表区域可打印文档上下文中定义完整区域设施的Lot Traveler。下图显示了一个示例:

链接区域和可打印文档

要打印Lot Traveler(总是打印整个区域的Lot Traveler),只需在步骤视图、资源视图或物料详细信息页面中选择所需的物料,然后选择打印Lot Traveler

Print Lot Traveler

Info

默认情况下,它只为当前区域的所有当前和后续步骤打印Lot Traveler。也可以通过选择向导右侧的仅限当前步骤选项来打印当前步骤的Lot Traveler,或者通过选择向导右侧的“仅限所有设施”选项来打印所有设施的Lot Traveler。

Info

有关如何打印Lot Traveler或其他物料文档的详细信息,请参阅《用户指南》的打印物料文档部分。

其他信息#

在可打印文档中使用实体类型#

通过将所需的实体类型定义适用于属性,可以为任何实体类型创建可打印文档。实体详细信息页面上的打印按钮仅对物料对象显示,而要为给定物料打印的文档则使用智能表物料可打印文档上下文解析。对于所有其他实体类型,必须从可打印文档页面触发打印。

将动态变量链接到实体类型属性#

有两种可能的选项:

  1. 定义值为实体实例(对象)的上下文项,并在文档设计器中将布局字段值链接到该对象的所需属性 - 当上下文项的值为实体类型时,设计器将显示该实体类型的所有属性,以便可以使用任何属性。这也适用于适用于属性,但在这种情况下,它在设计器上显示为名为AppliesToValue的参数。

  2. 定义使用表达式提取所需属性值的上下文项。在这种情况下,将直接为设计器提供属性值,而不是提供具有所有不同属性的整个实体实例。相关表达式的格式如下:$(ParameterName).(PropertyName)[.(PropertyName)... 其中参数名称是包含实体实例的参数的名称(可能是另一个上下文项或$AppliesToValue特殊参数),而(属性名称)是所需属性的名称。

Info

如果适用于引用了一个物料对象,则可以通过创建表达式类型的上下文项并将源指定为$AppliesToValue.Facility.Name来动态获取设施名称。

将变量链接到实体类型属性#

对于属性,必须使用使用DEE操作计算的上下文项,因为属性必须事先加载才能使用。这将是一个非常简单的DEE操作,它只在所需的实体实例上执行LoadAttributes()(可能来自另一个上下文项或$AppliesToValue,因为DEE操作会接收所有已计算出来的值作为输入),然后返回所需属性的值。

字符串数组支持#

为了支持string[]类型,上下文项将被定义为String类型,值为集合标志必须设置为True。然后,提取属性值的DEE操作需要将属性值(将是List<String>)转换为Collection<String>

示例:

return new Collection<String>(attrvalue as List<String>);