客户场景:
供应商是分配类型,但是以统一社会信用代码作为唯一判断依据
在保存时做了组合校验唯一,在组织为1的情况下,这个校验是生效的
问题:分配的时候,其他组织就会报统一社会信用代码重复
对于这样的问题:大家肯定是说,那我在那条校验规则上加个前提:即如果使用组织内码为1的,我就参与校验,其他组织不参与校验。当时我加的条件是FUseOrgId.FNumber='100',但是会报错。报错的原因我也找到了,因为你是校验的基本页签的统一社会信用代码,这个基本实体内是不包含这个UseOrgId的属性的。(这个可能需要总部的老师看下,为啥会报这种错)。于是乎,我就只能在基本页签上新增一个组织字段,默认值选1,但是引来了第二个问题,我给这个组织设置的默认值不生效。查看论坛,说组织字段只能引用当前组织,不可使用指定值。通过实体服务规则也没成功。最后没办法,只能写插件了,正好在学习python,就试着用python来写一下这个简单的小功能。
直接上图
就简单的几句话,判断下创建组织是否有值,如果没有值,那我新增的组织就不赋值。如果有值并且内码是1,我就给新增的组织赋值1.
源码如下:
#引入clr运行库
import clr
#添加对cloud插件开发的常用组件的引用
clr.AddReference('Kingdee.BOS')
clr.AddReference('Kingdee.BOS.Core')
from Kingdee.BOS.Core import *
def OnLoad(e):
createorg = str(this.Model.GetValue("FCreateOrgId")['Id']) if (this.Model.GetValue("FCreateOrgId") <>None) else "0";
if createorg =="1" : this.Model.SetValue("F_TD_OrgId","1");
PS :注意缩进。
另外,对于那些被分配组织有权限增加供应商的,需要在创建组织上配个值更新,即把创建组织的值赋给新增的组织。
所以这么一个小功能 总共做了4部分工作:1.新增组织字段 2.修改校验规则 3.编写python脚本 4.配置字段值更新
推荐阅读
您的鼓励与嘉奖将成为创作者们前进的动力,如果觉得本文还不错,可以给予作者创作打赏哦!
请选择打赏金币数 *