为何ReqLineItem.SupplierPartNumber有效性条件被忽略?如何使其正常触发?
解决Ariba行项目字段有效性规则实时触发问题
我之前在配置Ariba采购申请的行项目校验时,碰到过完全一样的情况——字段的有效性规则只在提交或查看审批流时才报错,行项目编辑时根本不生效,点击OK还能直接返回表头保存。你的问题核心是当前配置只绑定了文档级的校验时机,没有指定行项目编辑/保存时的触发条件。
问题原因分析
默认情况下,Ariba的<validity>规则如果没有显式指定<trigger>,只会在整个采购申请文档的全局校验阶段(比如提交、触发审批流)运行,而行项目的弹窗编辑属于局部操作,不会触发全局校验,所以你的规则没生效。
调整后的配置方案
只需要给你的有效性规则添加两个<trigger>标签,指定在行项目字段变更和保存时触发校验:
<inClass name="ariba.purchasing.core.ReqLineItem"> <inField name="SupplierPartNumber"> <validity combine="and"> <context enclosingDocument="ariba.purchasing.core.Requisition"/> <!-- 新增:字段值变化时立即触发校验 --> <trigger value="OnFieldChange"/> <!-- 新增:点击行项目OK按钮保存时触发校验 --> <trigger value="OnSaveLine"/> <condition expression="false"> <parameter name="Message" value="Temporarily, this validity is always NOT valid."/> </condition> </validity> </inField> </inClass>
配置说明
OnFieldChange:当用户在SupplierPartNumber字段输入/修改内容时,实时触发有效性校验,错误信息会立即显示在字段下方,提示用户修正OnSaveLine:当用户点击行项目弹窗的OK按钮时,强制触发行级校验,如果规则不满足,会阻止弹窗关闭,确保无效的行项目无法保存到表头
额外提示
如果你需要更严格的校验,还可以添加<trigger value="OnLoad"/>,这样在行项目弹窗加载完成后就会立即触发校验,适合需要在打开编辑弹窗时就提示错误的场景。
调整后,行项目编辑阶段就能正常触发你的有效性规则,不会再出现点击OK后跳过校验的情况,和提交/审批流阶段的校验逻辑保持一致。
内容的提问来源于stack exchange,提问作者miroxlav
相关产品推荐
相关产品推荐

