|
цикл для каждого в обратном порядке |
☑ |
0
osuul
01.04.11
✎
00:34
|
Привет всем, помогите... в дереве значений убираю строки, но если нужные строки следуют одна за другой то цикл пропускает 2-ю строку, как сделать перебор строк в цикле в обратном порядке, это вроде должно решить вопрос..
вот сам цикл;
для Каждого Строка из ТабличноеПоле1.Строки цикл
Если строка.Дата < НачалоГода(текущаяДата()) тогда
ИндексСтроки = ТабличноеПоле1.Строки.индекс(строка);
ТабличноеПоле1.Строки.Удалить(ИндексСтроки);
КонецЕсли;
КонецЦикла;
так пропускает.. (
|
|
1
Птица
01.04.11
✎
00:37
|
Для сч = -количествострок+1 по 0 цикл индексстроки = - сч //и далее по тексту конеццикла
|
|
2
Armando
01.04.11
✎
00:40
|
Или так МассивСтрокДляУдаления = Новый Массив; для Каждого Строка из ТабличноеПоле1.Строки цикл Если строка.Дата < НачалоГода(текущаяДата()) тогда МассивСтрокДляУдаления.Добавить(Строка); КонецЕсли; КонецЦикла; Для Каждого СтрокаДляУдаления Из МассивСтрокДляУдаления Цикл ТабличноеПоле1.Строки.Удалить(СтрокаДляУдаления); КонецЦикла;
|
|
3
osuul
01.04.11
✎
00:43
|
(1) (2) спасибо огромное!!! оба способа работают, 1-перебором в обратном порядке, второй выгрузкой в массив! я правильно понял?
|
|
4
osuul
01.04.11
✎
00:55
|
а можно еще вопрос, объясните пожалуйста, что за "СтрокаДляУдаления", я не понимаю откуда берется эта переменная.. Для Каждого СтрокаДляУдаления Из МассивСтрокДляУдаления Цикл ТабличноеПоле1.Строки.Удалить(СтрокаДляУдаления); КонецЦикла;
|
|
5
Armando
01.04.11
✎
00:59
|
(4) элемент массива
|
|
6
zak555
01.04.11
✎
01:03
|
(2) зачем два прохода ?
|
|
7
osuul
01.04.11
✎
01:11
|
(5) получаеться "СтрокаДляУдаления" будет работать в любом массиве? а почему ее нет в СП?
|
|
8
zak555
01.04.11
✎
01:14
|
(7) это переменная (!)
|
|
9
zak555
01.04.11
✎
01:23
|
|
|
10
osuul
01.04.11
✎
01:54
|
(9) спасибо
|
|
11
НП
01.04.11
✎
02:22
|
i=Табл.Количество(); while i>0 do i=i-1; enddo
|
|
12
НП
01.04.11
✎
02:25
|
i=Табл.Количество(); while i>0 do if (Условие удаления) then Табл[i-1].Удалить(); endif; i=i-1; enddo
|
|