我正在开发一个自动化脚本,并得到了下一个错误:
BMXAA7837E -发生错误,阻止了BAX_ISSUEGL启动点的BAX_ISSUEGL脚本运行。TypeError: getMboSet():预期2-4个args;在第5行获得1条更多信息
我使用的是jython 2.5.2,MAXIMO 7.6.0.9。自动化是一个对象启动点的自动化。
有人知道我为什么会犯错吗?
自动化脚本:
from psdi.mbo import Mbo
from psdi.mbo import MboConstants
#Get object
issueCI = Mbo.getMboSet("ISSUECURRENTITEM")
#Get Storeloc and Accounts
storeloc=issueCI.getString("STORELOC");
debitacct=issueCI.getString("GLDEBITACCT");
if debitacct[0:4] != storeloc:
errorgroup= "Credit Error";
errorkey= "CreditError";发布于 2020-04-30 14:26:14
第5行的问题是,您已经将Mbo大写了--这意味着您指的是导入的类psdi.mbo.Mbo。但是,启动点将向脚本传递一个名为mbo的隐式变量,而mbo将是( Mbo的子类)的一个实例。
Python方法是类中的函数,它们将self作为第一个参数。因此,在mbo.getMboSet("RELATIONSHIPNAME")中,Python将在内部转换该getMboSet(mbo, "RELATIONSHIPNAME")。通过引用类而不是类的实例,实际上忽略了这个self参数。这就是为什么您被告知,当getMboSet()的JavaDocs for Mbo.getMboSet()显示使用1、2或3个参数的方法的重载时,Mbo.getMboSet()需要"2-4参数“。
FYI:对于您粘贴的代码,一旦在第5行将Mbo更改为mbo,则不需要任何from ... import行。只有在直接引用类的情况下才需要这些类,就像第5行错误地做的那样。
https://stackoverflow.com/questions/61514145
复制相似问题