新增物料快速勾选辅助属性二开处理
一、【需求问题】
随着系统的使用和业务的调整,早期的添加的辅助属性不适用了,由于历史数据的原因,系统只能将其禁用而不能删除,继续添加新的辅助属性满足当前业务需求。这样的情况就导致系统有几十个辅助属性,而系统需要的辅助属性只是当前业务使用的特定几个,新增物料时,业务人员勾选对应辅助属性时,工作量比较大,还容易出错。
想要实现:物料"基本"页签添加复选框字段,勾选该复选框时启用默认的几个辅助属性
二、【功能分析】
1、物料辅助属性单据体数据为插件动态绑定,无法在BOS中配置实现
2、辅助属性的标识需要结合BOS后台元数据才能获取
3、从1、2分析只能通过二开表单插件去处理
【实现】
1、控制物料处于"新增"或者"暂存"状态时,可进行编辑处理
2、通过"附属属性维度数据",FormId:BD_FLEXSITEMDETAILV_EXTEND,找到对应辅助属性的字段标识
3、扩展复选框字段,勾选触发值更新,二开表单插件,值更新触发辅助属性勾选赋值
import clr clr.AddReference("System") clr.AddReference("Kingdee.BOS.Core") clr.AddReference("Kingdee.BOS.DataEntity") from System import * from System import StringComparison from System.Collections.Generic import * from Kingdee.BOS.Core.Bill.PlugIn import * from Kingdee.BOS.Core.DynamicForm.PlugIn.Args import * from Kingdee.BOS.Core.Metadata.EntityElement import * from Kingdee.BOS.Orm.DataEntity import * def SetAuxProperty(enable): auxPtyEntity = this.View.BusinessInfo.GetEntity("FEntityAuxPty") auxPty = this.View.Model.GetEntityDataObject(auxPtyEntity) index = 0 auxlist = ["100001","100004"] # 需要快速勾选的辅助属性, "附属属性维度数据",FormId:BD_FLEXSITEMDETAILV_EXTEND,找到对应辅助属性的字段标识 for aux in auxPty: auxPropertyId_Id = Convert.ToString(aux["AuxPropertyId_Id"]) if enable == True: if auxPropertyId_Id in auxlist: auxPty[index]["IsEnable1"] = True else: auxPty[index]["IsEnable1"] = False else: auxPty[index]["IsEnable1"] = False index = index + 1 this.View.UpdateView("FEntityAuxPty") def DataChanged(e): if e.Key.Equals("FCHECKBOX", StringComparison.OrdinalIgnoreCase): documentStatus = this.View.Model.GetValue("FDocumentStatus") if documentStatus == "Z" or documentStatus == "A": enableAux = Convert.ToBoolean(e.NewValue) this.View.ShowMessage(str(enableAux)) SetAuxProperty(enableAux)
想问下这个代码里面的复选框(启用辅助属性)的标识是哪个,
新增物料快速勾选辅助属性二开处理
一、【需求问题】随着系统的使用和业务的调整,早期的添加的辅助属性不适用了,由于历史数据的原因,系统只能将其禁用而不能删除,继续添加...
点击下载文档
本文2024-09-16 19:04:41发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-26247.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章