Передача двухмерного массива в функцию API Лоцман на Python

Автор Matvey Kushakov, 09.04.21, 17:35:15

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Matvey Kushakov

Доброго времени суток!

Подскажите, пожалуйста, синтаксическую конструкцию для передачи двухмерного вариантного массива в функцию (см. скрин) средствами Python.
70.JPG
Делал такие и подобные варианты:

Во всех случаях на этой строке ловлю ошибку вида "array index out of bounds"...

teplinskiy

День добрый,
Цитата: Matvey Kushakov от 09.04.21, 17:35:15np.array
это NumPy?

двумерный массив везде, даже в python, должен выглядеть, например, так:
[[1.0, 2.0], [3.0, 4.0]]то есть в начале массива две скобки [[, а также и в конце две скобки ]]

в представленных вариантах вижу в конце только это:
], ]должно быть как минимум так:
],[id, name]]

Matvey Kushakov

Цитата: teplinskiy от 12.04.21, 07:15:03День добрый,это NumPy?
Да, пробовал его применить в порядке эксперимента.

Цитата: teplinskiy от 12.04.21, 07:15:03должно быть как минимум так:
],[id, name]]
Если я Вас правильно понял, то надо писать так?
api.RunMethod("RevokeRightsForObjects", ([[obj_id, user_name], []], ) )Такой вариант не прокатил, если что :|

Slaviation

Добрый день.
На такой вызов не ругается, но отрабатывает ли - не знаю :)
id = ["22", "33"]
simple_api.RunMethod("RevokeRightsForObjects", ((id,), ("Вася", "Петя")))

Matvey Kushakov

Цитата: Slaviation от 12.04.21, 12:35:09Добрый день.
На такой вызов не ругается, но отрабатывает ли - не знаю :)
id = ["22", "33"]
simple_api.RunMethod("RevokeRightsForObjects", ((id,), ("Вася", "Петя")))
Спасибо! Хоть в Вашем примере и неверная последовательность элементов массивов, я методом проб и ошибок навелосипедил рабочий код удаления всех директивных прав конкретного объекта:
obj_privelegies = simple_api.GetDataSet("GetInfoAboutVersionsPrivileges", (obj_id, ))    # получаем все директивные права на указанный объект
arr = []
while True:
    arr.append([obj_id, obj_privelegies.FieldValue("_NAME")])   # набиваем двумерный массив пар <ID объекта>-<имя пользователя>
   
    if obj_privelegies.Eof:
            break
       
    obj_privelegies.Next()
simple_api.RunMethod("RevokeRightsForObjects", ([arr, []))    # сносим директивные права согласно значениям из списка arr

Matvey Kushakov

Цитата: Matvey Kushakov от 12.04.21, 18:40:48simple_api.RunMethod("RevokeRightsForObjects", ([arr, []))    # сносим директивные права согласно значениям из списка arr
Пардон за опечатку. Конечно же должно быть:
simple_api.RunMethod("RevokeRightsForObjects", (arr, []))