我真的需要帮助,我似乎找不到答案。我想要做的是在数据从xml进入系统时,PRNUM将被查询到PRLINE对象(它是PR的子对象),这样我就可以得到CONTRACTNUM字段,但是我似乎无法从它得到一个值。我总是得到一个非类型的错误,因为它是空的。
from psdi.server import MXServer
def beforeMboData(ctx):
mbo = ctx.getMbo()
struc = ctx.getData()
prlineSet = MXServer.getMXServer().getMboSet('PRLINE', ctx.getUserInfo())
prlineSet.setWhere("PRNUM = '"+struc.getCurrentData('PRNUM')+"'")
prLine = prlineSet.moveFirst()
contractSet = MXServer.getMXServer().getMboSet('CONTRACT', ctx.getUserInfo())
contractSet.setWhere("CONTRACTNUM = '"+prLine.getString('CONTRACTNUM')+"'")
contractRec = contractSet.moveFirst()
struc.setCurrentData('CONTRACTID',contractRec.getInt('CONTRACTID'))xml如下所示:
<max:PR action='AddChange'>
<max:PRNUM>SMPL</max:PRNUM>
<max:SITEID>BEDFORD</max:SITEID>
<max:VENDOR>JOHNS</max:VENDOR>
<max:PRLINE action='AddChange'>
<max:PRLINENUM>1</max:PRLINENUM>
<max:ITEMNUM>01231</max:ITEMNUM>
<!-- I forgot the other fields here -->
<max:CONTRACTNUM>X1C1</max:CONTRACTNUM>
<max:CONTRACTID></max:CONTRACTID>
</max:PRLINE>
</max:PR>CONTRACTID字段仅用于测试,因为我试图查看是否将检索某些数据,并将很快将其删除。我对此很陌生,我也不知道如何使用自动化脚本将ChildObject数据从xml获取到xml,以使其变得更容易。我在谷歌上找不到像这样的东西。
发布于 2018-03-28 10:25:35
因此,经过大量的试验和错误,下面是有效的方法
from psdi.server import MXServer
def beforeCreateMboSet(ctx):
mbo = ctx.getMbo()
struc = ctx.getData()
try:
contractSet = MXServer.getMXServer().getMboSet('CONTRACT', ctx.getUserInfo())
prLine = struc.getChildrenData('PRLINE')
prCount = len(prLine)
count = 0
while count < prCount:
struc.setAsCurrent(prLine,count)
contractNum = struc.getCurrentData('CONTRACTNUM')
contractSet.setWhere("CONTRACTNUM = '"+contractNum+"'")
contractRec = contractSet.moveFirst()
struc.setCurrentData('CONTRACTID',contractRec.getString('CONTRACTID'))
count += 1
finally:
contractSet.close()发布于 2018-03-11 06:02:51
你的公关已经在系统里了吗?这看起来像一个即将到来的PR被添加到系统中。如果是这样的话,那么数据还没有在数据库中。由于您从MXServer获得了一组数据(这通常不是所希望的方法),这意味着您将数据从数据库中提取出来(在数据库中它还不存在),并且是在一个新的事务中,而不是在传入消息中。
此外,我忘记了集成类可以使用哪些钩子/方法,但是beforeMboData似乎是不适合您的需求的。这听起来像是(虽然我不记得这是否是真的,并且现在无法查找),这个钩子在将数据加载到MBO对象之前运行。
https://stackoverflow.com/questions/49204979
复制相似问题