Python 小试---给基础资料赋值原创
金蝶云社区-蒋斌
蒋斌
13人赞赏了该文章 4,965次浏览 未经作者许可,禁止转载编辑于2019年09月20日 17:41:00

客户场景:

  1. 供应商是分配类型,但是以统一社会信用代码作为唯一判断依据

  2. 在保存时做了组合校验唯一,在组织为1的情况下,这个校验是生效的

问题:分配的时候,其他组织就会报统一社会信用代码重复


对于这样的问题:大家肯定是说,那我在那条校验规则上加个前提:即如果使用组织内码为1的,我就参与校验,其他组织不参与校验。当时我加的条件是FUseOrgId.FNumber='100',但是会报错。报错的原因我也找到了,因为你是校验的基本页签的统一社会信用代码,这个基本实体内是不包含这个UseOrgId的属性的。(这个可能需要总部的老师看下,为啥会报这种错)。于是乎,我就只能在基本页签上新增一个组织字段,默认值选1,但是引来了第二个问题,我给这个组织设置的默认值不生效。查看论坛,说组织字段只能引用当前组织,不可使用指定值。通过实体服务规则也没成功。最后没办法,只能写插件了,正好在学习python,就试着用python来写一下这个简单的小功能。


直接上图

image.png


就简单的几句话,判断下创建组织是否有值,如果没有值,那我新增的组织就不赋值。如果有值并且内码是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.配置字段值更新


图标赞 13
13人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!

您的鼓励与嘉奖将成为创作者们前进的动力,如果觉得本文还不错,可以给予作者创作打赏哦!

请选择打赏金币数 *

10金币20金币30金币40金币50金币60金币
可用金币: 0