|
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 Цикл Если <Условие> Тогда ТЗ.УдалитьСтроку(); ТЗ.ВыбратьСтроки(); КонецЕсли; КонецЦикла; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |