|
Удаление строк ТЗ | ☑ | ||
---|---|---|---|---|
0
povar
25.11.05
✎
08:20
|
К = 0;
Если ВыбПоставщик.Выбран() = 1 Тогда ТаблицаНом.ВыбратьСтроки(); Пока ТаблицаНом.ПолучитьСтроку() = 1 Цикл К = К+1; Если ТаблицаНом.Поставщик <> ВыбПоставщик Тогда ТаблицаНом.УдалитьСтроку(К); КонецЕсли; КонецЦикла; КонецЕсли; В отладчике смотрю, условие(ТаблицаНом.Поставщик <> ВыбПоставщик) не выполняется, а строку не удаляет |
|||
1
skunk
25.11.05
✎
08:24
|
бум... (из под стола)
а ты что думал, что потовему должно удалять? |
|||
2
Cheater
25.11.05
✎
08:25
|
Как будет выполняться - удалит ;)
|
|||
3
povar
25.11.05
✎
08:29
|
(1) я думал удалить строку в таблицезначений, которая не удовлетворяет условию :)
|
|||
4
povar
25.11.05
✎
08:40
|
(1,2) все понял, ступил не по децки :))
|
|||
5
Cheater
25.11.05
✎
08:41
|
(3) У тебя ТаблицаНом.Поставщик=Поставщик или нет?
|
|||
6
ZolotarevAA
25.11.05
✎
08:44
|
||||
7
skunk
25.11.05
✎
09:04
|
там не айда... вот от NS ...
//******************************************* function FilterNS(vtTab, Column, Value) Beg = ""; End = ""; vtTemp = createobject("valuetable"); Answer = createobject("valuetable"); vtTab.Unload(Answer); Answer.Sort(Column + "+"); if Answer.FindValue(Value, Beg, Column) > 0 then Answer.Sort(Column + "-"); Answer.FindValue(Value, End, Column); Answer.Unload(vtTemp, End, Answer.LinesCnt() - Beg + 1); Answer = vtTemp; else Answer.DeleteLines(); endif; return Answer; endfunction |
|||
8
skunk
25.11.05
✎
09:07
|
||||
9
ZolotarevAA
25.11.05
✎
09:11
|
(7) Бросил первую попавшуюся чтобы велосипед не изобретали.
|
|||
10
skunk
25.11.05
✎
09:12
|
(9)да ладно ... не напрягайся... ;)
|
|||
11
NS
25.11.05
✎
09:41
|
(7) это не мое.
|
|||
12
prochor
25.11.05
✎
09:46
|
ну а я делаю это так
Колво = ТЗ.количествоСтрок() Пока Колво > 0 Цикл Тз.ПолучитьСтрокуПоНОмеру(Колво); Если Тз.Поставщик <> ВыбПоставщик Тогда Тз.УдалитьСтроку(); КонецЕсли; Колво = Колво - 1; КонецЦикла; Работает быстро и безотказно! Просто в твоем примере при удалении строки происходит перестройка таблицы, и ТаблицаНом.ПолучитьСтроку() работает не совсем так, как ожидается, кажется, начинает опять с первой строки, уже не помню! |
|||
13
skunk
25.11.05
✎
09:47
|
(11)я увидал от тебя
|
|||
14
skunk
25.11.05
✎
09:47
|
(12)в этом тоже есть грабли...
|
|||
15
prochor
25.11.05
✎
09:48
|
(14)за два года не нашел ни одних
|
|||
16
skunk
25.11.05
✎
09:49
|
(15)просто везло... )))
|
|||
17
NS
25.11.05
✎
09:51
|
(13) В то же время, то же самое - вроде предлагали avb и IAm.
Если ТЗ большая (больше 2000 строк), то быстрее - одна сортировка + бинарный поиск... |
|||
18
skunk
25.11.05
✎
09:53
|
(17)у Алиске тоже не плохо... но твой(точнее этот)... не много шустрее... Алискен выигрывает только на очень больших ТЗ...
сейчас уже точно не помню... но когда появилась ветка, которую я написал в (8) ... тестировал |
|||
19
skunk
25.11.05
✎
09:53
|
интересно было... и алискин вроде еще порядок строк не корябает
|
|||
20
Deon
25.11.05
✎
09:55
|
(16) А какие грабли-то?
|
|||
21
skunk
25.11.05
✎
09:57
|
(20)внимательно посмотри на 12... и просто в уме поиграй им... для начала
|
|||
22
prochor
25.11.05
✎
09:59
|
начался разговор пикейных жилетов, я предложил реальный способ, который работает так же сносно на самых больших ТЗ, у меня были и по три-четыре тысячи.
А прав Чемберлен или не прав, есть ли жизнь на Марсе или нет, под пиво, да с воблой - хорошо! Но завтра, в субботу:)) |
|||
23
NS
25.11.05
✎
09:59
|
(19) Сортировка не корябает порядок строк ;-) Ежели грамотно к ней подойти...
Примеры (по условию порядок строк не должен менятся, хотя само условие задачи немного другое, но в методах также присутствует сортировка) http://1c.proclub.ru/modules/mydownloads/personal.php?cid=110&lid=1419 |
|||
24
Deon
25.11.05
✎
10:05
|
(21) Поиграл, долго думал, понял, что в коде не хватает одной ";" :) Приведи пример когда не будет работать.
|
|||
25
prochor
25.11.05
✎
10:23
|
(24) извини, писал по памяти и торопился:))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |