Имя: Пароль:
1C
1С v8
как сравнить индекс элемента массива с переменной в цикле?
0 violachiz
 
19.06.13
17:16
как сравнить индекс элемента массива с переменной в цикле?
Для Каждого i Из массив Цикл
    Если i = переменная Тогда
   Объект.Строка = "тысяча2";    
   КонецЕсли;
1 zhig75
 
19.06.13
17:18
КонецЦикла;
2 violachiz
 
19.06.13
17:19
с концомЦикла норм
3 salvator
 
19.06.13
17:20
Переменную-счетчик прикрути для получения индекса массива
4 violachiz
 
19.06.13
17:22
примерчик какой-нибудь?
5 mikecool
 
19.06.13
17:22
(0) ты определись - что и с чем  ты хочешь сравнить...
6 violachiz
 
19.06.13
17:24
хочу сравнить число с индексом массива в цикле
7 mikecool
 
19.06.13
17:25
(6) точно не со значением?
8 banco
 
19.06.13
17:26
(0) так цикл делай Для Цикл, а не Для Каждого Цикл
9 Fenrik
 
19.06.13
17:27
(0) Нафига тут вообще цикл. Сравни переменную с границами массива.
10 violachiz
 
19.06.13
17:28
точно. у меня есть переменная числом нужно сравнить её с индексом массива, а значение это массива вывести
11 salvator
 
19.06.13
17:30
(10) Открой для себя метод Получить()
12 Csar
 
19.06.13
17:32
Для индекс По Массив.ВГраница Цикл
   Если индекс = Переменная Тогда
       Значение = Массив[индекс];
   КонецЕсли;
КонецЦикла;
13 Csar
 
19.06.13
17:33
(12) поправка
Для индекс = 0 По Массив.ВГраница-1 Цикл
   Если индекс = Переменная Тогда
       Значение = Массив[индекс];
   КонецЕсли;
КонецЦикла;
14 salvator
 
19.06.13
17:35
(13) По Массив.ВГраница-1 - минус 1 не надо
15 User_Agronom
 
19.06.13
17:37
(11) И сразу же закрой))
Массивы в 1С начинаются нумероваться с 0 и до Массив.Количество() -1.
Собственно, если переменная в этих границах - тогда есть
16 Csar
 
19.06.13
17:38
(14) согласен
(0) Если надо через цикл Для Каждого, то вот:
Индекс = 0;
Для каждого ЭлМассива Из Массив Цикл
   Если Индекс = Переменная Тогда
       Значение = ЭлМассива;
   КонецЕсли;
   Индекс = Индекс + 1;
КонецЦикла;
17 Csar
 
19.06.13
17:39
(15) я полагаю, что речь идет о равенстве определенному индексу масссива, а не вхождение в рамки от 0-го индекса, по ВГраница().
18 User_Agronom
 
19.06.13
17:40
Если (переменная >=0) И (переменная <=Массив.Количество()-1) тогда
Сообщить("Можно обратиться к элементу Массив[переменная]")
иначе
Сообщить("Нет элемента с таким номером в массиве")
КонецЕсли
19 salvator
 
19.06.13
17:40
(15) Через попытку-исключение это легко решается безо всяких циклов
20 User_Agronom
 
19.06.13
17:40
(17) Если в границы входит = значит есть равенство некоторому индексу
21 Ахиллес
 
19.06.13
17:41
-Есть ли у вас план, мистер Фикс?
-О, да, у меня есть план, мистер Фикс. Вштыривает не по детски.
22 User_Agronom
 
19.06.13
17:41
(19) Это гораздо правильнее. Потому как неизвестно какого типа переменная, и не дробная ли она
23 Csar
 
19.06.13
17:42
(20) ТС видимо говорит о равенстве не некоторому, а конкретному. Типа если индекс равен 10, то к значение приписать "оп!"
24 User_Agronom
 
19.06.13
17:43
Попытка
Массив[переменная] = Массив[переменная]+"оп";
Исключение
КонецПопытки;

(23) Или я что-то недопонял?
25 salvator
 
19.06.13
17:45
(24) Одному ТС известно, что он хочет сделать, когда наткнется на элемент массива
26 Csar
 
19.06.13
17:47
(24) да, в идеальном случае так, но истинный план не был озвучен, и я полагаю задача стоит более интересная, чем просто присвоить элементу с определенным индексом что-либо.
(25) именно
27 salvator
 
19.06.13
17:48
Но судя по (10) ему надо
Попытка
 А = Массив.Получить(Переменная);
 Сообщить("Нашли: "+А);
Исключение
 Сообщить("Нет такого");
КонецПопытки;
28 Csar
 
19.06.13
17:49
Беседа нескольких людей. А ТС куда то пропал.
29 User_Agronom
 
19.06.13
17:52
У ТС закончился рабочий день))
30 Шапокляк
 
19.06.13
18:10
ТС, видать, решил замедлить выполнение программы. Для этого он создал массив из 100500 элементов и крутит их  перебор в цикле.