v7 v8

编辑表单

概述

营销人员和操作员使用输入表单来创建、修改和预览记录。 Forms显示信息的可视化表示形式。

您可以创建和修改输入表单:

  • 您可以修改默认提供的出厂输入表单。 工厂输入表单基于工厂数据架构。
  • 您可以根据定义的数据架构创建自定义输入表单。

Forms是 xtk:form 类型。 您可以在中查看输入表单结构 xtk:form 架构。 要查看此架构,请选择 Administration > Configuration > Data schemas 从菜单中。 详细了解 窗体结构.

要访问输入表单,请选择 Administration> Configuration >Input forms 从菜单中:

要设计表单,请在XML编辑器中编辑XML内容:

阅读更多

要预览表单,请单击 Preview 选项卡:

表单类型

您可以创建不同类型的输入表单。 表单类型决定了用户浏览表单的方式:

  • 控制台屏幕

    这是默认表单类型。 该表单包含一个页面。

  • 内容管理

    使用此表单类型进行内容管理。 查看此 用例.

  • 向导

    此形式包含按特定顺序排序的多个浮动屏幕。 用户从一个屏幕导航到下一屏幕。 阅读更多

  • 图标框

    此表单包含多个页面。 要导航表单,用户需选择表单左侧的图标。

  • 笔记本

    此表单包含多个页面。 要导航表单,用户需选择表单顶部的选项卡。

  • 垂直窗格

    此窗体显示导航树。

  • 水平窗格

    此表单显示项目列表。

容器

在表单中,您可以将容器用于各种目的:

  • 在表单中组织内容
  • 定义对输入字段的访问权限
  • 在其他表单中嵌套表单

阅读更多

组织内容

使用容器组织表单中的内容:

  • 您可以将字段分组为多个部分。
  • 您可以将页面添加到多页面表单。

要插入容器,请使用 <container> 元素。 阅读更多

组字段

使用容器将输入字段分组到组织好的部分中。

要将节插入到表单中,请使用此元素: <container type="frame">. 或者,要添加章节标题,请使用 label 属性。

语法: <container type="frame" label="section_title"> […] </container>

在此示例中,容器定义 创建 部分,包括 Created byName 输入字段:

<form _cs="Coupons (nms)" entitySchema="xtk:form" img="xtk:form.png" label="Coupons"
      name="coupon" namespace="nms" type="default" xtkschema="xtk:form">
  <input xpath="@code"/>
  <input xpath="@type"/>
  <container label="Creation" type="frame">
    <input xpath="createdBy"/>
    <input xpath="createdBy/@name"/>
  </container>
</form>

将页面添加到多页表单

对于多页面表单,请使用容器创建表单页面。

此示例显示了 常规详细信息 表单页面:

<container img="ncm:book.png" label="General">
[…]
</container>
<container img="ncm:detail.png" label="Details">
[…]
</container>

定义对字段的访问权限

使用容器定义可见内容并定义对字段的访问权限。 您可以打开或关闭字段组。

嵌套表单

使用容器将表单嵌套在其他表单中。 阅读更多

对图像的引用

要查找图像,请选择 Administration > Configuration > Images 从菜单中。

要将图像与表单中的元素(例如图标)相关联,可以添加对图像的引用。 使用 img 属性,例如 <container> 元素。

语法: img="namespace:filename.extension"

此示例显示对 book.pngdetail.png 图像来自 ncm 命名空间:

<container img="ncm:book.png" label="General">
[…]
</container>
<container img="ncm:detail.png" label="Details">
[…]
</container>

这些图像用于用户单击以导航多页表单的图标:

创建简单表单

要创建表单,请执行以下步骤:

  1. 从菜单中,选择 Administration > Configuration > Input forms.

  2. 单击 New 按钮进行修改。

  3. 指定表单属性:

    • 指定表单名称和命名空间。

      表单名称和命名空间可以与相关数据架构匹配。 此示例显示了 cus:order 数据架构:

      <form entitySchema="xtk:form" img="xtk:form.png" label="Order" name="order" namespace="cus" type="iconbox" xtkschema="xtk:form">
        […]
      </form>
      

      或者,您也可以在以下位置显式指定数据模式: entity-schema 属性。

      <form entity-schema="cus:stockLine" entitySchema="xtk:form" img="xtk:form.png" label="Stock order" name="stockOrder" namespace="cus" xtkschema="xtk:form">
        […]
      </form>
      
    • 指定要在表单上显示的标签。

    • (可选)指定表单类型。 如果未指定表单类型,则默认使用控制台屏幕类型。

      如果您设计的是多页表单,则可以省略 <form> 元素,并在容器中指定类型。

  4. 单击 Save

  5. 插入表单元素。

    例如,要插入输入字段,请使用 <input> 元素。 设置 xpath 属性作为XPath表达式添加到字段引用。 阅读更多

    此示例显示基于 nms:recipient 架构。

    <input xpath="@firstName"/>
    <input xpath="@lastName"/>
    
  6. 如果表单基于特定的架构类型,则可以查找此架构的字段:

    1. 单击 Insert > Document fields.

    2. 选择字段并单击 OK.

  7. (可选)指定字段编辑器。

    默认字段编辑器与每个数据类型相关联:

    • 对于日期类型字段,表单会显示输入日历。
    • 对于枚举类型字段,表单会显示一个选择列表。

    您可以使用以下字段编辑器类型:

    字段编辑器 表单属性
    单选按钮 type="radiobutton"
    复选框 type="checkbox"
    编辑树 type="tree"

    详细了解 内存列表控件.

  8. (可选)定义对字段的访问权限:

    元素 属性 说明
    <input> read-only="true" 提供对字段的只读访问权限
    <container> type="visibleGroup" visibleIf="edit-expr" 有条件地显示一组字段
    <container> type="enabledGroup" enabledIf="edit-expr" 有条件地启用一组字段

    示例:

    <container type="enabledGroup" enabledIf="@gender=1">
      […]
    </container>
    <container type="enabledGroup" enabledIf="@gender=2">
      […]
    </container>
    
  9. (可选)使用容器将字段分组为多个部分。

    <container type="frame" label="Name">
       <input xpath="@firstName"/>
       <input xpath="@lastName"/>
    </container>
    <container type="frame" label="Contact details">
       <input xpath="@email"/>
       <input xpath="@phone"/>
    </container>
    

创建多页表单

您可以创建多页面表单。 还可以将表单嵌套在其他表单中。

创建 iconbox 表单

使用 iconbox 表单类型:在表单左侧显示图标,这些图标会将用户引导至表单中的不同页面。

要将现有表单的类型更改为 iconbox,请按照以下步骤操作:

  1. 更改 type 的属性 <form> 元素至 iconbox

    <form […] type="iconbox">
    
  2. 为每个表单页面设置一个容器:

    1. 添加 <container> 元素作为的子项 <form> 元素。

    2. 要定义图标的标签和图像,请使用 labelimg 属性。

      <form entitySchema="xtk:form" name="Service provider" namespace="nms" type="iconbox" xtkschema="xtk:form">
          <container img="xtk:properties.png" label="General">
              <input xpath="@label"/>
              <input xpath="@name"/>
              […]
          </container>
          <container img="nms:msgfolder.png" label="Details">
              <input xpath="@address"/>
              […]
          </container>
          <container img="nms:supplier.png" label="Services">
              […]
          </container>
      </form>
      

    或者,删除 type="frame" 现有属性中的 <container> 元素。

创建笔记本窗体

使用 notebook 表单类型:在表单顶部显示选项卡,这些选项卡会将用户引导至不同的页面。

要将现有表单的类型更改为 notebook,请按照以下步骤操作:

  1. 更改 type 的属性 <form> 元素至 notebook

    <form […] type="notebook">
    
  2. 为每个表单页面添加一个容器:

    1. 添加 <container> 元素作为的子项 <form> 元素。
    2. 要定义图标的标签和图像,请使用 labelimg 属性。
      <form entitySchema="xtk:form" name="Service provider" namespace="nms" type="notebook" xtkschema="xtk:form">
          <container label="General">
              <input xpath="@label"/>
              <input xpath="@name"/>
              […]
          </container>
          <container label="Details">
              <input xpath="@address"/>
              […]
          </container>
          <container label="Services">
              […]
          </container>
      </form>
    

    或者,删除 type="frame" 现有属性中的 <container> 元素。

嵌套表单

您可以将表单嵌套在其他表单中。 例如,可以在iconbox表单中嵌套笔记本表单。

嵌套级别控制导航。 用户可以向下钻取到子表单。

若要将表单嵌套在另一个表单中,请插入 <container> 元素并设置 type 表单类型的属性。 对于顶级表单,您可以在外部容器中或以下位置设置表单类型 <form> 元素。

示例

此示例显示了一个复杂的形式:

  • 顶级表单是iconbox表单。 此表单包含两个标记为的容器 常规详细信息.

    因此,外部表单会显示 常规详细信息 页面。 要访问这些页面,用户请单击表单左侧的图标。

  • 子表单是嵌套在 常规 容器。 该子表单包括两个标记有标签的容器 名称联系人.

<form _cs="Profile (nms)" entitySchema="xtk:form" img="xtk:form.png" label="Profile" name="profile" namespace="nms" xtkschema="xtk:form">
  <container type="iconbox">
    <container img="ncm:general.png" label="General">
      <container type="notebook">
        <container label="Name">
          <input xpath="@firstName"/>
          <input xpath="@lastName"/>
        </container>
        <container label="Contact">
          <input xpath="@email"/>
        </container>
      </container>
    </container>
    <container img="ncm:detail.png" label="Details">
      <input xpath="@birthDate"/>
    </container>
  </container>
</form>

因此, 常规 页显示 名称联系人 选项卡。

若要将表单嵌套在另一个表单中,请插入 <container> 元素并设置 type 表单类型的属性。 对于顶级表单,您可以在外部容器中或以下位置设置表单类型 <form> 元素。

示例

此示例显示了一个复杂的形式:

  • 顶级表单是iconbox表单。 此表单包含两个标记为的容器 常规详细信息.

    因此,外部表单会显示 常规详细信息 页面。 要访问这些页面,用户请单击表单左侧的图标。

  • 子表单是嵌套在 常规 容器。 该子表单包括两个标记有标签的容器 名称联系人.

<form _cs="Profile (nms)" entitySchema="xtk:form" img="xtk:form.png" label="Profile" name="profile" namespace="nms" xtkschema="xtk:form">
  <container type="iconbox">
    <container img="ncm:general.png" label="General">
      <container type="notebook">
        <container label="Name">
          <input xpath="@firstName"/>
          <input xpath="@lastName"/>
        </container>
        <container label="Contact">
          <input xpath="@email"/>
        </container>
      </container>
    </container>
    <container img="ncm:detail.png" label="Details">
      <input xpath="@birthDate"/>
    </container>
  </container>
</form>

因此, 常规 页显示 名称联系人 选项卡。

修改工厂输入表单

要修改出厂表单,请执行以下步骤:

  1. 修改工厂输入表单:

    1. 从菜单中,选择 Administration > Configuration > Input forms.
    2. 选择输入表单并对其进行修改。

    您可以扩展工厂数据架构,但无法扩展工厂输入表单。 我们建议您直接修改出厂输入表单,而无需重新创建它们。 在软件升级期间,工厂输入表单中的修改将与升级合并。 如果自动合并失败,您可以解决冲突。 阅读更多

    例如,如果您使用附加字段扩展工厂模式,则可以将此字段添加到相关的工厂表单。

验证表单

您可以在表单中包含验证控件。

授予对字段的只读访问权限

要授予对字段的只读访问权限,请使用 readOnly="true" 属性。 例如,您可能希望显示记录的主键,但具有只读访问权限。 阅读更多

在此示例中,主键(iRecipientId的) nms:recipient 架构以只读访问权限显示:

<value xpath="@iRecipientId" readOnly="true"/>

检查必填字段

您可以检查必需信息:

  • 使用 required="true" 必填字段的属性。
  • 使用 <leave> 节点,以检查这些字段并显示错误消息。

在此示例中,需要电子邮件地址,如果用户未提供此信息,则会显示错误消息:

<input xpath="@email" required="true"/>
<leave>
  <check expr="@email!=''">
    <error>The email address is required.</error>
  </check>
</leave>

详细了解 表达式字段表单上下文.

验证值

您可以使用JavaScript SOAP调用从控制台验证表单数据。 使用这些调用进行复杂验证,例如,根据授权值列表检查值。 阅读更多

  1. 在JS文件中创建验证函数。

    示例:

    function nms_recipient_checkValue(value)
    {
      logInfo("checking value " + value)
      if (…)
      {
        logError("Value " + value + " is not valid")
      }
      return 1
    }
    

    在此示例中,函数名为 checkValue. 此函数用于检查 recipient 中的数据类型 nms 命名空间。 将记录正在检查的值。 如果该值无效,则会记录一条错误消息。 如果该值有效,则返回值1。

    您可以使用返回的值来修改表单。

  2. 在表单中,添加 <soapCall> 元素到 <leave> 元素。

    在此示例中,使用SOAP调用来验证 @valueToCheck 字符串:

    <form name="recipient" (…)>
    (…)
      <leave>
        <soapCall name="checkValue" service="nms:recipient">
          <param exprIn="@valueToCheck" type="string"/>
        </soapCall>
      </leave>
    </form>
    

    在此示例中, checkValue 方法和 nms:recipient 使用的服务:

    • 服务是命名空间和数据类型。
    • 方法是函数名称。 该名称区分大小写。

    同步执行呼叫。

    将显示所有例外。 如果您使用 <leave> 元素,则在验证输入的信息之前,用户无法保存表单。

此示例说明如何从表单中进行服务调用:

<enter>
  <soapCall name="client" service="c4:ybClient">
    <param exprIn="@id" type="string"/>
    <param type="boolean" xpathOut="/tmp/@count"/>
  </soapCall>
</enter>

在此示例中,输入是一个ID,它是一个主键。 当用户填写此ID的表单时,将使用此ID作为输入参数进行SOAP调用。 输出是写入此字段的布尔值: /tmp/@count. 您可以在表单内使用此布尔值。 详细了解 表单上下文.

在此页面上