如何在Siebel中根据其他字段值将日期字段更新为Null
我之前在Siebel项目里也碰到过一模一样的情况,用「On Field Update Set」配置后完全没生效,折腾了好一阵才找到几个靠谱的排查和解决方向:
修正Null值的配置语法
Siebel的「On Field Update Set」里,设置Null值不能直接用空字符串"",得明确写NULL。你可以把配置改成这样试试:"ACS Tax Exemption", "Tax Exemption Expiry Date", "NULL", "[ACS Tax Exemption] = 'N'"另外要注意:条件里的字段名称得是后台真实的字段名,而不是前端显示名——比如「ACS Tax Exemption」如果是带空格的显示名,后台字段名可能是
ACSTaxExemption(无空格),去Siebel Tools里核对一下,字段名错了条件肯定不触发。检查日期字段的可空属性
先去Siebel Tools里看「Tax Exemption Expiry Date」字段的「Nullable」属性是不是设为Yes。如果这个属性是No,系统根本不允许把这个字段设为Null,这时候得先修改字段属性(记得改完要重新编译SRF)。确认触发时机是否符合预期
「On Field Update Set」只有当「ACS Tax Exemption」字段的值发生变化时才会触发。如果这个字段本来就是N,不会执行更新逻辑。要是需要在记录加载时也判断并设置Null,可以搭配「Post Default Value」或者业务组件的User Property来补全逻辑。用后台脚本兜底(最稳妥的方案)
如果UI级别的配置始终没效果,直接写业务组件脚本肯定能解决问题。比如写一段Siebel eScript,挂在业务组件的FieldWrite事件上:function BusComp_FieldWrite(FieldName) { if (FieldName === "ACS Tax Exemption") { const taxStatus = this.GetFieldValue("ACS Tax Exemption"); if (taxStatus === "N") { this.SetFieldValue("Tax Exemption Expiry Date", null); } } return ContinueOperation; }这样每次「ACS Tax Exemption」被改成
N时,日期字段都会被强制设为Null,不会有遗漏。
内容的提问来源于stack exchange,提问作者UmamaheswaraReddy Ambati

