如何实现检验单使用决策表体满足某些特定条件的数据拼接显示到检验单单据头字段

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

如何实现检验单使用决策表体满足某些特定条件的数据拼接显示到检验单单据头字段

需求描述:在检验单使用决策表体增加了单选辅助资料字段,在检验单单据头增加了多行文本字段,当使用决策表体使用决策为工废或者料废时,将使用决策表体的使用决策、数量以及单选辅助资料值拼接显示在单据头字段上。

解决方案:由于是多个字段的拼接显示因此无法通过配置实体服务规则实现,需要二开python表单插件实现,在点击保存时将数据拼接显示在单据头字段,具体逻辑如下:

1、 检验单单据头增加多行文本类型字段

2、检验单使用决策表体增加单选辅助资料字段

3、注册python表单插件,在保存前将数据拼接显示到单据头字段上

4、实现效果如下

5、示例代码如下:

import clr

clr.AddReference('System')

clr.AddReference('System.Data')

clr.AddReference('Kingdee.BOS')

clr.AddReference('Kingdee.BOS.Core')

clr.AddReference('Kingdee.BOS.DataEntity')

clr.AddReference('Kingdee.K3.BD.ServiceHelper')

clr.AddReference('Kingdee.BOS.ServiceHelper')

clr.AddReference('Kingdee.BOS.Business.DynamicForm')

clr.AddReference('Kingdee.BOS.DataEntity')

clr.AddReference('Kingdee.BOS.Contracts')

 

from Kingdee.BOS.Contracts import *

from Kingdee.BOS import *

from Kingdee.BOS.Core import *

from Kingdee.BOS.Core.DynamicForm.PlugIn import *

from Kingdee.BOS.Core.Bill import*

from Kingdee.BOS.Orm.DataEntity import*

from Kingdee.K3.BD.ServiceHelper import*

from Kingdee.BOS.ServiceHelper import*

from System import *

from System.Collections import *

from System.Collections.Generic import *

from Kingdee.BOS.Core.DynamicForm.PlugIn import *

def BeforeDoOperation(e):

    if(str(e.Operation.FormOperation.Operation)=="Save"):

       entity = this.View.BusinessInfo.GetEntryEntity("FEntity")

       entryRows = this.View.Model.GetEntityDataObject(entity)

       descrition=""    

       for entry in entryRows:

           unitObj = entry["UnitId"]

           precision=0

                        #有单位时,严格按单位精度显示

           if (unitObj  is not None):

              precision = unitObj["Precision"]                       

           policyEntrys=entry["PolicyDetail"]       

           for policyEntry in policyEntrys:

              finalstr=""

              qty=policyEntry["PolicyQty"]#决策数量

              finalQty=round(qty,precision)         

              policy=policyEntry["UsePolicy"]

              if(policy !="H" and policy !="I"):

                  continue #使用决策不为工废和料废不处理

              fzzl=policyEntry["FAssistant"]

              policyname=""

              fzzlname=""

              if (policy=="H"):

                  policyname="工废"

              if (policy=="I") :

                  policyname="料废"          

              if(fzzl is not None):

                  fzzlname=fzzl["FDataValue"][2052]

              finalstr=policyname+"/"+str(finalQty)+"/"+fzzlname

              descrition=descrition+"\r"+finalstr

    this.View.Model.SetValue("FRemarks",descrition)


说明(1)注意新加字段的绑定实体属性,代码中用到的都是实体属性名,只有单据头多行文本字段赋值是用的字段标识:

      (2)由于python对于合格要求比较严格,因此使用Tab键按如上截图调整代码缩进,尽量不要使用空格键,以防缩进不一致;


如何实现检验单使用决策表体满足某些特定条件的数据拼接显示到检验单单据头字段

需求描述:在检验单使用决策表体增加了单选辅助资料字段,在检验单单据头增加了多行文本字段,当使用决策表体使用决策为工废或者料废时,将...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息