数据校验对于一个业务系统来说那是太重要了,没有数据校验的业务系统,很可能数据都是乱七八糟的。《E6企业应用软件可视化开发平台》(下面简称“开发平台”)除了每个字段都有类型校验,格式校验,甚至正则表单式校验之外,还提供了单据之间的关联校验。
每一个单据(主/子表)都可以设置多个关联校验规则,每个校验规则都可以设置“匹配条件”,只有满足匹配条件的才会执行校验规则。下面举一个例子加以说明,假设我们有个“合同管理”表单:
1、合同管理需要关联某个客户;
2、表单中的合同类型有“主合同”和“附加合同”两个选项;
3、同一个客户只能有一个主合同,其他的合同都只能是附加合同。
如下图:
这种情况怎么进行校验呢?打开开发平台,双击进入“合同管理”表单设计页面,点击表单属性“校验规则”右侧的按钮,如下图所示:
在弹出的“表单校验规则”窗口中,由于一个表单可以有多个校验规则,所以点击左下角的“添加规则”添加具体的校验规则:
弹出“表单校验规则编辑”页面,如下图:
目标单据:由于我们的校验需求是“同一个客户只能有一个主合同,其他的合同都只能是附加合同”,所以选择目标单据也为“合同管理”;
匹配条件:由于我们是校验同一个客户不能有多个“主合同”,那么我们设置匹配条件“现值.合同类型 等于 主合同”即可。下面会对“现值”、“目标表单字段”、“旧值”等进行说明;
表单校验规则:由于是校验同一个客户是否已经存在了“主合同”,那么显然:
a、目标的记录ID不能等于当前保存的记录ID;
b、目标和现值的客户ID外键(__FK_Customer_)必须相同;
c、目标的合同类型要等于“主合同”。
左下角选择“不满足“表单校验规则”则继续保存”。这里“不满足”的意思是,根据“表单校验规则”中的条件,查询不到记录,则表示以前这个客户不存在“主合同”。
下面对这些术语进行说明:
匹配条件:提交保存时先校验匹配条件,只有满足匹配条件才会执行“表单校验规则”。
源表单字段:可选择表单上的所有字段,这些字段分为“现值”和“旧值”。“现值”表示当前提交保存的字段值,“旧值”表示同一条记录修改保存前的字段值。比如原来合同日期为“2023-09-01”,但是如果修改为“2023-09-10”,则“2023-09-01”为“旧值”,“2023-09-10”就为“现值”。
比较:比较选项包括如下图所示,其他都很容易理解,这里就介绍“包含/不包含”,“属于/不属于”,“为空/不为空”。
包含/不包含:使用SQL的LIKE查询,比如客户名称为“深圳市汉合软件技术有限公司”那么下面的设置就就表示“匹配成功”,因为“深圳市汉合软件技术有限公司”包含了“汉合软件”。“不包含”同理。
属于/不属于:使用SQL的IN/NOT IN查询,所以您的值需要“英文状态”的逗号分隔,比如“张三,李四,王五”这样的;
为空/不为空:使用SQL的 IS NULL / IS NOT NULL查询。表示字段是否是NULL。
目标值类型:表示“值”的类型。
源表单现值:则“值”只能选择源表单的“现值.XXXX”,表示当前正在提交保存的XXXX字段的值;
源表单旧值:则“值”只能选择源表单的“旧值.XXXX”,表示XXXX字段保存前的值;
具体的值:则可以输入任意字符串;
脚本:E6脚本,比如Today()表示今天,Now()表示当前时间(精确到秒),UserID()表示当前登录用户ID等等。更多脚本请看《脚本》;
空值:不填,则表示使用SQL的IS NULL查询。
比如“模板值类型”选择了“源表单现值”,则“值”只能选择不能输入,如下图:
表单校验规则:这里“源值类型”、“比较”、“目标值类型”等选项和上述的“匹配条件”中的一致,所以不再重复叙述,您可以根据实际的校验需要进行设置。
满足“表单校验规则”则继续保存:表示根据“表单校验规则”中的条件从“目标单据”记录中找到匹配的数据则继续保存当前表单;
不满足“表单校验规则”则继续保存:表示根据“表单校验规则”中的条件从“目标单据”记录中找不到匹配的数据则继续保存当前表单,比如上面的例子,只有同一个客户不存在已经签订的“主合同”才能继续保存一个主合同。
发布后:如下图,由于我们同一个客户已经存在“主合同”了,所以新增加的主合同则不能保存。
我们看到上面的提示信息是“当前客户已经存在主合同,不能再签约主合同”这个信息可以在“表单校验规则”窗口,添加规则后,双击如下图字段进行修改。
完结!