营销人员和操作员使用输入表单来创建、修改和预览记录。 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 by 和 Name 输入字段:
<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.png
和 detail.png
图像来自 ncm
命名空间:
<container img="ncm:book.png" label="General">
[…]
</container>
<container img="ncm:detail.png" label="Details">
[…]
</container>
这些图像用于用户单击以导航多页表单的图标:
要创建表单,请执行以下步骤:
从菜单中,选择 Administration > Configuration > Input forms.
单击 New 按钮进行标记。
指定表单属性:
指定表单名称和命名空间。
表单名称和命名空间可以与相关数据架构匹配。 此示例显示了 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>
元素,并在容器中指定类型。
单击 Save。
插入表单元素。
例如,要插入输入字段,请使用 <input>
元素。 设置 xpath
作为XPath表达式的字段引用的属性。 阅读更多。
此示例显示基于 nms:recipient
架构。
<input xpath="@firstName"/>
<input xpath="@lastName"/>
如果表单基于特定的架构类型,则可以查找此架构的字段:
单击 Insert > Document fields.
选择字段并单击 OK.
(可选)指定字段编辑器。
默认字段编辑器与每种数据类型相关联:
您可以使用以下字段编辑器类型:
字段编辑器 | 表单属性 |
---|---|
单选按钮 | type="radiobutton" |
复选框 | type="checkbox" |
编辑树 | type="tree" |
详细了解 内存列表控件.
(可选)定义对字段的访问权限:
元素 | 属性 | 说明 |
---|---|---|
<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>
(可选)使用容器将字段分组为多个部分。
<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
,请按照以下步骤操作:
更改 type
的属性 <form>
元素至 iconbox
:
<form […] type="iconbox">
为每个表单页面设置一个容器:
添加 <container>
元素作为的子项 <form>
元素。
要定义图标的标签和图像,请使用 label
和 img
属性。
<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
,请按照以下步骤操作:
更改 type
的属性 <form>
元素至 notebook
:
<form […] type="notebook">
为每个表单页面添加一个容器:
<container>
元素作为的子项 <form>
元素。label
和 img
属性。 <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>
因此, 常规 外窗体的页面显示 名称 和 联系人 选项卡。
要修改出厂表单,请执行以下步骤:
修改工厂输入表单:
您可以扩展工厂数据架构,但不能扩展工厂输入表单。 我们建议您直接修改出厂输入表单,而无需重新创建它们。 在软件升级期间,工厂输入表单中的修改将与升级合并。 如果自动合并失败,您可以解决冲突。 阅读更多。
例如,如果使用附加字段扩展工厂模式,则可以将此字段添加到相关的工厂表单。
您可以在表单中包含验证控件。
要授予对字段的只读访问权限,请使用 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调用从控制台验证表单数据。 使用这些调用进行复杂验证,例如,根据授权值列表检查值。 阅读更多。
在JS文件中创建验证函数。
示例:
function nms_recipient_checkValue(value)
{
logInfo("checking value " + value)
if (…)
{
logError("Value " + value + " is not valid")
}
return 1
}
在此示例中,函数名为 checkValue
. 此函数用于检查 recipient
中的数据类型 nms
命名空间。 将记录正在检查的值。 如果该值无效,则会记录一条错误消息。 如果该值有效,则返回值1。
您可以使用返回值修改表单。
在表单中,添加 <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
. 您可以在表单内使用此布尔值。 详细了解 表单上下文.