|
v7: Цикл по строка ТЗ и удаление строк |
☑ |
0
norbi
07.10.11
✎
12:21
|
Перебираю в цикле строки ТЗ. Нужно удалять строки со значением реквизита не совпадающем с заданным. Проблема в том, что при удалении строки в цикле проверяются не все строки. Я так понял это из-за того что после удаления строки смещаются и по методу ПолучитьСтроку() выбирается не следующая после удаленной строка, а строка через одну после удаленной. Подскажите как с этим бороться, пожалуйста.
|
|
1
Alex S D
07.10.11
✎
12:21
|
перебирай с конца
|
|
2
catena
07.10.11
✎
12:22
|
(0)Это баян, тут даже была темка по поиску оптимального алгоритма. Ищи.
|
|
3
PR
07.10.11
✎
12:22
|
(0) И мы поздравляем 1 000 000 посетителя МиСты, задавшего этот вопрос! :))
|
|
4
НЕА123
07.10.11
✎
12:24
|
(0)
ооо!!!
я видел форум, посвященный сабжу. было больше сотни алгоритмов.
|
|
5
vinogradъ
07.10.11
✎
12:26
|
(0)
tv.SelectLines();
while tv.GetLine() = 1 do
while (условие) and (tv.LineNum <> 0) do
tv.deleteLine();
enddo;
enddo;
|
|
6
norbi
07.10.11
✎
12:27
|
Сори, нашел тему, вопрос снят.
|
|
7
Ненавижу 1С
гуру
07.10.11
✎
12:28
|
(4) целый форум, посвященный этой проблеме?
|
|
8
Ахиллес
07.10.11
✎
12:28
|
(0)Уже даже издеваться над тобой сил нету. Так уже надоели с этим вопросом.
|
|
9
Rie
07.10.11
✎
12:29
|
(7) Был где-то конкурс на эту тему. ЕМНИП, на "синьоре", но могу и ошибиться.
|
|
10
1Сергей
07.10.11
✎
12:31
|
ТЗ.ВыбратьСтроки();
фл=ТЗ.ПолучитьСтроку();
Пока фл=1 Цикл
Если <Условие> Тогда
фл=?(ТЗ.НомерСтроки=ТЗ.КоличествоСтрок(),0,1);
ТЗ.УдалитьСтроку();
Иначе
фл=ТЗ.ПолучитьСтроку();
КонецЕсли;
КонецЦикла;
|
|
11
Сияющий Асинхраль
07.10.11
✎
12:44
|
Вместо
Если Условие Тогда
ТЗ.УдалитьСтроку();
КонецЕсли;
Используй
Пока Условие Цикл
ТЗ.УдалитьСтроку();
КонецЦикла;
И будет тебе счастье...
|
|
12
НЕА123
07.10.11
✎
13:29
|
(7)
да. на скорость удаления.
причем самые быстрые - очень извращенные.
|
|
13
НЕА123
07.10.11
✎
13:38
|
|
|
14
Эльниньо
07.10.11
✎
14:04
|
(5) Нечего мой алгоритм на вражеский язык переводить.
|
|
15
Joshim
07.10.11
✎
14:33
|
или так:
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку() = 1 Цикл
Если <Условие> Тогда
ТЗ.УдалитьСтроку();
ТЗ.ВыбратьСтроки();
КонецЕсли;
КонецЦикла;
|
|