Я получил TypeError: getMboSet (): ожидается 2-4 аргумента; получил 1 в <script>при использовании скрипта автоматизации MAXIMO - PullRequest
0 голосов
/ 30 апреля 2020

Я разрабатываю сценарий автоматизации и получаю следующую ошибку:

BMXAA7837E - Произошла ошибка, из-за которой не удалось запустить сценарий BAX_ISSUEGL для точки запуска BAX_ISSUEGL. TypeError: getMboSet (): ожидается 2-4 аргумента; получил 1 в строке номер 5 Подробнее

Я использую 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";

1 Ответ

0 голосов
/ 30 апреля 2020

Проблема со строкой 5 состоит в том, что вы набрали Mbo с заглавной буквы - это означает, что вы ссылаетесь на импортированный класс psdi.mbo.Mbo. Но точка запуска передаст в сценарий неявную переменную с именем mbo, и mbo будет экземпляром (подклассом) Mbo.

Python методов - функций в классах, и они принимают self в качестве первого параметра. Итак, в mbo.getMboSet("RELATIONSHIPNAME"), Python собирается внутренне преобразовать это getMboSet(mbo, "RELATIONSHIPNAME"). Ссылаясь на класс вместо экземпляра класса, вы фактически пропускали этот параметр self. И именно поэтому вам сказали, что getMboSet() ожидал "2-4 аргумента", когда JavaDocs для Mbo.getMboSet() показывают перегрузки этого метода, которые принимают 1, 2 или 3 аргумента.

К вашему сведению: Код, который вы вставили, после того, как вы измените Mbo на mbo в строке 5, вам не понадобится ни одна из ваших строк from ... import. Они нужны только в том случае, если вы напрямую ссылаетесь на классы, как это делала строка 5 по ошибке.

...