Имя: Пароль:
1C
 
Вариации на тему самого быстрого способа удаления строк из таблицы значений
0 12345
 
14.10.04
11:23
Есть такой конкурс. Кстати, mszus, слово "неправильно" пишеться слитно!

Это вариант TDV c очевидной оптимизацией.

           Воробей=МаксЗнач/2;
       Тз.Новаяколонка("Птичка");
       Тз.Заполнить(Воробей,,,"Птичка");
           Тз.ВыбратьСтроки();
       
       КонСтрока=Мин(ТЗ.НоваяКолонка("СЛУЖ_КОЛ"), 0);          ТЗ.ВыбратьСтроки();
       Пока ТЗ.ПолучитьСтроку()=1 Цикл
       
           Если ТЗ.К<Тз.Птичка Тогда
               КонСтрока=КонСтрока+1;
               ТЗ.СЛУЖ_КОЛ=1;
           КонецЕсли;
       КонецЦикла;                      
       Если (КонСтрока=0) ИЛИ (КонСтрока=ТЗ.КоличествоСтрок()) Тогда
           ТЗ.КоличествоСтрок(КонСтрока);
           ТЗ.УдалитьКолонку("СЛУЖ_КОЛ");
           Тз.УдалитьКолонку("Птичка");
       Иначе
           ТЗ.Сортировать("-СЛУЖ_КОЛ");
           ТЗ.УдалитьКолонку("СЛУЖ_КОЛ");
           ТЗ.Выгрузить(ТЗ_СЛУЖ,,КонСтрока);
           ТЗ=ТЗ_СЛУЖ;
           Тз.УдалитьКолонку("Птичка");
       КонецЕсли;

Если ту же идею, то есть замену вызова функции обращением к дополнительной колонке в таблице значений, применить к методу NS, то
будет еще быстрее (~10%).
1 Последний Будда
 
14.10.04
11:31
Осмелюсь утверждать, что есть еще более быстрый способ. Давайте здесь проведем конкурс?
2 Волшебник
 
14.10.04
11:39
(0) здесь пишется "пишется". Прежде чем корректировать других, научись сам.

См. также:
Какой самый быстрый метод удаление строк в ТЗ
3 12345
 
14.10.04
11:46
Да, ошибся. Но ошибаться все могут, например "метод удаление" или "метод удаления"? :)
4 12345
 
14.10.04
11:51
(1) Вероятнее всего, такой способ есть. И думаю, что число наборов нужно увеличить, включив заполнение колонки ТЗ.К случайными числами. У кого есть хороший алгоритм генерации СЧ?
5 Волшебник
 
14.10.04
11:53
6 Последний Будда
 
14.10.04
11:56
Предлагаю такой вариант конкурса: Удалить все строки ТЗ, значения любых ячеек которой не входят в список значений фильтра.
7 12345
 
14.10.04
12:17
(6) такая задача на практике не встречаеться, по-крайнем мере такое нарочно не придумаешь, тогда как (0) при непродуманном алгоритме бывает.
8 Рупор абсурда
 
14.10.04
12:23
(0) Кстати, 12345, слово "mszus", пишется "mszsuz" ...
Слово "пишеться", пишется "пишется" ...
9 NS
 
14.10.04
12:42
(0)Ты не оптимизировал удаление строк, а оптимизировал условие вхождения строки...
Неужели все такие идиоты, за несколько лет не догадались, а ты самый умный?
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.