Имя: Пароль:
1C
1С v8
Итератор для значения не определен
0 Vvvvv
 
21.07.14
15:12
Написал код, для изменения пароля пользователя ИБ

Пользователи = ПользователиИнформационнойБазы.ПолучитьПользователей();
    Для Каждого П из Пользователи Цикл
        Если Найти(ВРЕГ(П.Имя),"АДМИНИСТРАТОР") > 0 Тогда
            П.Пароль = "12345";
            П.Записать();
            Сообщить("У пользователя: " + СокрЛП(П.Имя) + " изменен пароль");
        КонецЕсли;
    КонецЦикла;

У меня две обработки, в одной он работает, а в другой нет.
Пишет ошибку: "Итератор для значения не определен"

Что это за ошибка?
1 GROOVY
 
21.07.14
15:14
Данный метод доступен пользователям, имеющим административные права.
2 Wobland
 
21.07.14
15:14
а это когда не определён итератор значения для. хня какая-то от ПолучитьПользователей() получается
3 Vvvvv
 
21.07.14
15:15
(1) я под администратором
4 Wobland
 
21.07.14
15:15
(3) ты это платформе расскажи
5 Fish
 
21.07.14
15:16
(3) В отладчике твои "пользователи" чему равно?
6 anatoly
 
21.07.14
15:19
в какой именно строке ошибка то?
7 Vvvvv
 
21.07.14
15:20
ошибка в этой строке
Для Каждого П из Пользователи Цикл
8 Fish
 
21.07.14
15:21
(6) Так это из текста ошибки понятно :))
9 Fish
 
21.07.14
15:22
(7) Так чему равно "Пользователи"?
10 Vvvvv
 
21.07.14
15:24
(9)Значение - пустое
Тип - СправочникСсылка.Пользователи
11 Wobland
 
21.07.14
15:25
(10) можешь не благодарить
12 Vvvvv
 
21.07.14
15:27
(11) а в чем ответ?
13 Один С
 
21.07.14
15:28
воттак будет работать..

Пользователи = ПользователиИнформационнойБазы.ПолучитьПользователей();
Если Пользователи.Количество()>0 Тогда
    Для Каждого П из Пользователи Цикл
        Если Найти(ВРЕГ(П.Имя),"АДМИНИСТРАТОР") > 0 Тогда
            П.Пароль = "12345";
            П.Записать();
            Сообщить("У пользователя: " + СокрЛП(П.Имя) + " изменен пароль");
        КонецЕсли;
    КонецЦикла;
КонецЕсли;
14 Fish
 
21.07.14
15:29
(13) У ТС так тоже не заработает. См. (10)
15 Wobland
 
21.07.14
15:29
(12) в том, что получается (2). возможно из-за (1)
16 Wobland
 
21.07.14
15:30
+(15) но скорей всего ты просто врёшь
17 Fish
 
21.07.14
15:31
(10) А теперь читаем СП и много думаем:

"ПолучитьПользователей (GetUsers)
Синтаксис:

ПолучитьПользователей()
Возвращаемое значение:

Тип: Массив. "
18 Vvvvv
 
21.07.14
15:32
(13) метод объекта не обнаружен (Количество)
19 le_
 
21.07.14
15:32
(10) А так: Пользователи_ = ПользователиИнформационнойБазы.ПолучитьПользователей();
    Для Каждого П из Пользователи_ Цикл
//...

?
20 anatoly
 
21.07.14
15:35
(18) если (10) то правильнее:
Если НЕ Пользователи.Пустая()
21 Vvvvv
 
21.07.14
15:37
(19) а так работает
В чем прикол?
Только изменили "Пользователи", на "Пользователи_"
22 Fish
 
21.07.14
15:38
(21) Прикол в том, что у тебя видимо есть реквизит с именем Пользователи и типом СправочникСсылка.Пользователи
23 le_
 
21.07.14
15:40
24 vde69
 
21.07.14
15:42
(22) скорее общий модуль "Пользователи"
25 Один С
 
21.07.14
15:43
(19) Бинго! В этом туре побеждает le_ ! Продолжаем заседание телепатов..
26 Fish
 
21.07.14
15:43
(24) См. (10)
27 Infsams654
 
21.07.14
15:48
(26) не, прав (24). Мало того, если был еще реквизит Пользователи ?
Короче, 1С во видимости переменных - совсем хромой
28 MUXACb
 
21.07.14
16:00
В ЗУП "Пользователи" - общий модуль
29 Fish
 
21.07.14
16:48
(27) (28) Сразу видно не читатели. Читаем (10) по слогам и отвечаем на вопрос: какой может быть тип у общего модуля? :))
30 Maxus43
 
21.07.14
17:28
я вот для переменных в коде часто юзаю мПользователи и прочие, как указание что это переменная модуля, в типовых тоже так делают. Не надо лишней путанницы
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший