|
v7: Вопросы из дворницкой. Как техничнее удалить некоторые строки из ТЗ ? | ☑ | ||
---|---|---|---|---|
0
raykom
29.08.14
✎
11:48
|
Есть ТЗ в ней есть колонка - число.
Вот надо как то быстро и технично грохнуть все строки, в которых этот реквизит = 0. Как правильно ? Первое, что приходит - цикл. Только там как то надо строку переставлять чето, не ? Подкиньте мысль. Спасибо. |
|||
1
_fvadim
29.08.14
✎
11:49
|
воспользуйся поиском. пожалуйста.
|
|||
2
H A D G E H O G s
29.08.14
✎
11:50
|
Массив=ТЗ.НайтиСтроки();
Для Каждого ЭлементМассива ТЗ.Удалить(ЭлементМассива); |
|||
3
raykom
29.08.14
✎
11:53
|
(1)Это очень просто для меня.
(2)Бляэто очень сложно :DDD Чуток разверни. И потом, это же клюшки. |
|||
4
Aceforg
29.08.14
✎
11:55
|
А ТС 9 лет на форуме
|
|||
5
raykom
29.08.14
✎
11:56
|
(2)Ну не важно, понял я или нет, что за коварный план ты мне предлагаешь, но это всеравно - цикл. Строки то передвигать не надо ?
(4)Это констатация или одобрение ? Или может вообще, зависть о_О ... |
|||
6
Ёпрст
29.08.14
✎
11:56
|
ну если клюшки, то через выгрузить
|
|||
7
пипец
29.08.14
✎
11:56
|
обратным циклом
|
|||
8
Ёпрст
29.08.14
✎
11:58
|
(0) в этих строках, этот реквизит может быть <0 ? или нет ?
|
|||
9
Chum
29.08.14
✎
12:00
|
Пятница?
(5) варианты: 1. сортирнуть, найти первую строку с 0, пройтись циклом. 2. см (2) там сразу готовый отбор и удаление строк без лишних перескоков. это типа в 8-ке реализовано 3. запрос написать, всосать тз, выгрузить |
|||
10
raykom
29.08.14
✎
12:00
|
(6)ЧТо ? Перед этим идти циклом и выгружать только нужные строки ?
(7)На вскидку не помню как ... Таблицу отсортировать ? (8)Не может. Или 1 или 0 |
|||
11
raykom
29.08.14
✎
12:02
|
(9)>1. сортирнуть, найти первую строку с 0, пройтись циклом.
По остаткам ? Вариант ... 2. Так клюшки же ... 3. Да ну ... Нервный срыв будет. Чревато запоем. |
|||
12
raykom
29.08.14
✎
12:03
|
Вот (2) и (9) 2.
Это таки как ? Заинтриговали. Или это для восьмерки по ошибке сюда приплели ? |
|||
13
anatoly
29.08.14
✎
12:05
|
(7) +1
|
|||
14
Ёпрст
29.08.14
✎
12:05
|
(10)
ТЗ.Сортировать("ТвояКолонка-"); стр=""; Если ТЗ.НайтиЗначение(0,стр,"ТвояКолонка")=1 Тогда ТЗ.Выгрузить(ТЗ,1,ст-1); КлнецЕсли; |
|||
15
пипец
29.08.14
✎
12:05
|
(11) перебор через минус при получить строку
|
|||
16
ildary
29.08.14
✎
12:06
|
Функция ОтобратьТЗ( ТЗ2 )
Перем ТЗ_СЛУЖ; КонСтрока = Мин( ТЗ2.НоваяКолонка( "СЛУЖ_КОЛ" ), 0 ); // (примечание mszsuz: вот такая "оптимизация" началась, ради "красоты" ...) ТЗ2.ВыбратьСтроки(); Пока ТЗ2.ПолучитьСтроку()=1 Цикл Если УсловиеВыполняется( ТЗ2 ) = 1 Тогда КонСтрока = КонСтрока + 1; ТЗ2.СЛУЖ_КОЛ = 1; КонецЕсли; КонецЦикла; Если ( КонСтрока = 0 ) ИЛИ ( КонСтрока = ТЗ2.КоличествоСтрок() ) Тогда ТЗ2.КоличествоСтрок( КонСтрока ); ТЗ2.УдалитьКолонку( "СЛУЖ_КОЛ" ); Иначе ТЗ2.Сортировать( "-СЛУЖ_КОЛ" ); ТЗ2.УдалитьКолонку( "СЛУЖ_КОЛ" ); ТЗ2.Выгрузить( ТЗ_СЛУЖ,, КонСтрока ); ТЗ2 = ТЗ_СЛУЖ; КонецЕсли; КонецФункции //ОтобратьТЗ вот рекордсмен по скорости отбора. Остается в УсловиеВыполняется() прописать сравнение и все. |
|||
17
Ёпрст
29.08.14
✎
12:06
|
ну или так (только это дольше):
стр=""; Пока ТЗ.НайтиЗначение(0,стр,"ТвояКолонка")=1 Цикл ТЗ.УдалитьСтроку(стр); стр=""; КонецЦикла |
|||
18
Ёпрст
29.08.14
✎
12:08
|
Ну или так
Для к = -ТЗ.КоличествоСтрок() по -1 Цикл ТЗ.ПолучиьСтрокуПоНомеру(-к); Ежели ТЗ.Чтото=КомуТо Тогда ТЗ.УдалитьСтроку(-к); КонецЕжели КонецЦикла и т.д.. |
|||
19
Ёпрст
29.08.14
✎
12:08
|
в общем, быстрее всего в (14)
|
|||
20
raykom
29.08.14
✎
12:16
|
Парни, спасибо. Достаточно информации.
(19)Соглашусь, пожалуй. (16)Нуу есть пожалуй смысл ... Много чего сразу в переменные запоминается. Но практика подсказывает, что чем меньше кода - тем быстее ))) Ну, почти всегад ... |
|||
21
raykom
29.08.14
✎
12:17
|
Вопрос закрыт. Дворницкая закрыта.
|
|||
22
DCKiller
29.08.14
✎
12:19
|
ИМХО, (17) - самый красивый способ :)
|
|||
23
raykom
29.08.14
✎
12:21
|
(22)Да, лаконично.
(14)>ТЗ.Выгрузить(ТЗ,1,ст-1); ст-1 имелось в виду стр-1 ? |
|||
24
raykom
29.08.14
✎
12:24
|
(14)Все работает отлично. Благодарствуем из дворницкой :D
|
|||
25
Ёпрст
29.08.14
✎
12:28
|
(23) ага
|
|||
26
Ёпрст
29.08.14
✎
12:29
|
только, нужно еще условие = что стр <>1, а то мот там во всей табличке "нули".. и тогда просто ТЗ.УдалитьСтроки()
|
|||
27
ildary
29.08.14
✎
12:51
|
(20) метод, что я привел в (16) - самый универсальный: сегодня надо фильтровать по 1, завтра - по 0, послезавтра - по долгу больше 100 тыщ. Главное - что возвращает УсловиеВыполняется().
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |