Имя: Пароль:
1C
1С v8
Проблема с циклом "Для каждого из"
0 KizerSoze
 
27.10.13
19:38
Здравствуйте,
Столкнулся с неприятной ситуацией:
Если в цикле удалять строки, то удаляется половина.
Пример кода

Для каждого Стз из Тз цикл
    Тз.УдалитьСтроку(Стз);
КонецЦикла;

Если записей 10, то удаляются 1,3,5,7,9.
Хотелось бы решить задачу именно данным типом цикла ("для х=0 по Тз.Количество()-1 цикл" - не подходит, Тз.Скопировать(отбор)-тоже не годиться).
1 Ork
 
27.10.13
19:45
(0) Вот это вот :
Для каждого Стз из Тз цикл
    Тз.УдалитьСтроку(Стз);
КонецЦикла;

замена стандартной Тз.Очистить()? Или что имелось ввиду?
2 MaSSimo
 
27.10.13
19:47
Для каждого Стз из Тз цикл также не подойдет по той же причине как и для х=0 по Тз.Количество()-1 цикл
3 DirecTwiX
 
27.10.13
19:48
Сначала их в массив добавь -.-
4 KizerSoze
 
27.10.13
19:51
Имеется ввиду, что в цикле мне может понадобится удалить, например, 1, 4, 5, 6 элементы, но в цикле 5-ый элемент не удалится.
Мне нужно, чтобы после удаления элемента с индексом Х, анализировался элемент с индексом Х+1 (относительно изначальной ТЗ).
5 MaSSimo
 
27.10.13
19:51
(3) , для чего в массив?
6 DirecTwiX
 
27.10.13
19:52
(5) Чтобы потом по массив с помощью "Для каждого" пробежаться :)
7 Julia_Fialka
 
27.10.13
19:56
(0) Когда Вы удаляете первую строку из ТЗ, строка, бывшая до удаления второй, становится первой - т.е. сбиваются индексы всех строк.
Попробуйте так:
Колво = Тз.Количество();
для х=0 по Колво-1 цикл
...
8 MaSSimo
 
27.10.13
19:57
(4) прибавляй к индексу по единицы после каждого удаления, не?
9 MaSSimo
 
27.10.13
19:58
(8) т.е. отнимай...)
10 Souvenire
 
27.10.13
19:58
> "для х=0 по Тз.Количество()-1 цикл" - не подходит"
скуяли?
11 Ork
 
27.10.13
19:58
Поддержу тов. DirecTwiX. Если очень уж принципиально "Для каждого ИЗ" нужно сначала выбрать нужные строки в массив.
12 Ork
 
27.10.13
20:01
(10) Оно так со времен 7.7 поскольку полный аналог
Для х = 1 По Тз.Количество()
а оно не работает.
13 KizerSoze
 
27.10.13
20:06
(11) Я эти способы знаю, мне хотелось все сделать через используемый цикл (для каждого из). Видимо, он не подходит для решения задачи. Придется кучу кода "Для каждого из" переписывать на "Для х=0 по...".
Всем спасибо.
14 Souvenire
 
27.10.13
20:08
(12) с конца начинай.
15 DirecTwiX
 
27.10.13
20:25
(13) Не переписывай. Просто счетчик добавь в цикл и с ним удаляй
16 Ork
 
27.10.13
20:30
(15) Нифига. После каждого удаления счетчик нужно уменьшить на единичку. Плюс проверку на остаток строк в ТЗ.
17 DirecTwiX
 
27.10.13
20:39
(16) Да, чего-то я глупость сказал)