需求背景:
需要在销售出库的套打上获取每一行物料的毛重和净重信息
由于是简单的需求,我们就采用Python的方式来实现
效果图:
以下是示例代码和截图
其中以下代码段是让python2支持中文
reload(sys)
sys.setdefaultencoding('utf-8')
使用用法
示例代码
#-*- coding: utf-8 -*-
import clr
clr.AddReference("System")
clr.AddReference("System.Core")
clr.AddReference("Kingdee.BOS")
clr.AddReference("Kingdee.BOS.Core")
clr.AddReference("Kingdee.BOS.DataEntity")
clr.AddReference("Kingdee.BOS.ServiceHelper")
import sys
from System import *
from System.Collections.Generic import *
from System.Threading import *
from Kingdee.BOS.Log import *
from Kingdee.BOS.Core.Log import *
from Kingdee.BOS.Core import *
from Kingdee.BOS.Core.DynamicForm import *
from Kingdee.BOS.KDThread import *
from Kingdee.BOS.DataEntity import *
from Kingdee.BOS.Orm.DataEntity import *
from Kingdee.BOS.ServiceHelper import *
from Kingdee.BOS.Core.Metadata import SelectorItemInfo ##字段选择实体类
from Kingdee.BOS.Core.SqlBuilder import QueryBuilderParemeter ##查询参数实体类
#修改默认编码为utf8
reload(sys)
sys.setdefaultencoding('utf-8')
def OnPrepareNotePrintData(e):
if e.DataSourceId.Equals("FEntity", StringComparison.OrdinalIgnoreCase):
_MEMO=''
_FGROSSWEIGHT=''
_FNETWEIGHT=''
_FUNITNAME=''
_count = e.DataObjects.Count
entity = this.Model.BillBusinessInfo.GetEntity("FEntity")
dot = e.DataObjects[0].DynamicObjectType
dot.RegisterSimpleProperty("F_V_MEMO", str)
for i in range(0,_count):
obj = DynamicObject(dot)
for p in e.DataObjects[i].DynamicObjectType.Properties:
obj[p] = e.DataObjects[i][p]
_MEMO=this.Model.GetEntityDataObject(entity, i)["Note"]
sql="select FGROSSWEIGHT,FNETWEIGHT,b.FNAME from T_BD_MATERIALBASE as a left join T_BD_UNIT_L as b on b.FUNITID=a.FWEIGHTUNITID where FMATERIALID="+str(this.Model.GetEntityDataObject(entity, i)["MaterialID"]['id'])
PriceListObj = DBServiceHelper.ExecuteDynamicObject(this.Context, sql)
if PriceListObj.Count ==1:
_FGROSSWEIGHT=float(PriceListObj[0]['FGROSSWEIGHT'])
_FNETWEIGHT=float(PriceListObj[0]['FNETWEIGHT'])
_FUNITNAME=PriceListObj[0]['FNAME']
obj["F_V_MEMO"]=_MEMO+'\n毛重:'+str(_FGROSSWEIGHT)+' '+_FUNITNAME+'\n净重:'+str(_FNETWEIGHT)+' '+_FUNITNAME
e.DataObjects[i] = obj[/i][/i][/i]
推荐阅读