即时库存锁库校验预计解锁日期为必录
【客户需求】: 即时库存锁库里需要设置锁库天数、预计解锁日期、到期解锁起始日为必录字段,在BOS里设置了必录,保存时没有检查。保存按钮是一个空操作不能设置校验规则
【需求分析】:
1、选择锁库物料,加载解锁界面时,系统默认会填写"到期解锁起始日"为当前日期,锁库天数、预计解锁日期为空,填写"预计解锁日期",自动计算"锁库天数",BOS中针对"预计解锁日期"设置为必录
2、保存操作的点击事件为空,未配置任何服务和操作,相关的保存和校验逻辑都写在动态表单的插件中,无法干预
3、相关插件未对"预计解锁日期"是否录入做校验
【实现方案】:针对上面3点的分析,尝试以下扩展方案
1、方案1(方案不可行)、保存按钮点击事件挂载"空操作",在操作上添加字段必录的校验规则,测试发现可以校验字段是否必录,但是无法终止按钮事件的继续执行。
2、方案2(方案不可行)、使用Python插件,重写BarItemClick事件,在插件中校验字段是否必录,校验不通过设置e.Cancel = True或者抛出异常,依然无法终止按钮事件的继续执行。
3、方案3(方案可行)、使用Python插件,重写BarItemClick事件,新增点击按钮,隐藏原有的保存按钮,插件中校验字段是否必录,校验不通过则弹出提示信息,校验通过则触发原有"保存"按钮的执行事件。
import clr clr.AddReference("System") clr.AddReference("Kingdee.BOS") clr.AddReference("Kingdee.BOS.Core") clr.AddReference("Kingdee.BOS.DataEntity") from System import * from System import StringComparison from Kingdee.BOS.Core.DynamicForm import * from Kingdee.BOS.Core.Metadata.FieldElement import * from Kingdee.BOS.Core.DynamicForm.PlugIn.Args import * from Kingdee.BOS.Core.Metadata import * from Kingdee.BOS.Orm.DataEntity import * def BarItemClick(e): if e.BarItemKey.Equals("TBTEST", StringComparison.OrdinalIgnoreCase): subEntity = this.View.BillBusinessInfo.GetEntity("FEntity") subEntityList = this.View.Model.GetEntityDataObject(subEntity) flag = 0 if subEntityList.Count > 0: for item in subEntityList: seq = Convert.ToInt32(item["Seq"]) subMaterial = item["MaterialId"] releaseDate = item["ReleaseDate"] # 预计解锁时间 if releaseDate is None: errMes = "(第" + str(seq) + "行物料【" + str(subMaterial["Name"]) + "】的预计解锁时间不能为空\r\n" this.View.ShowErrMessage(errMes) flag = 1 if flag == 0: this.View.GetMainMenu().ItemClick("tbSave"); this.View.SendDynamicFormAction(this.View);
【实现效果】
【参考】
即时库存锁库校验预计解锁日期为必录
【客户需求】: 即时库存锁库里需要设置锁库天数、预计解锁日期、到期解锁起始日为必录字段,在BOS里设置了必录,保存时没有检查。保存按...
点击下载文档
本文2024-09-16 19:07:07发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-26519.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章