А интересно как вы удаляете строки из таблицы значений. #762137


#0 by Keyn
А интересно как вы удаляете строки из таблицы значений. Надеюсь что не так: ТаблицаЦен.Удалить(Индекс); (взял пример из хелпа) Работать конечно будет просто медленно. Когда вы удаляете так как в хелпе, то 1Ска удалит строку и сдвинет остальные строки "вверх". А это медленный процесс. Если у вас большая таблица значений и удалить нужно много строк, это может занять время, а ждать не хочется, поэтому можно воспользоватся хитростью. Добавляем в таблицу значений новую служебную колонку. В эту колонку каждому удаляемому значению ставим 1. Затем сортируем по этой колонке и все удаляемые значения окажутся в конце. (сортировка же делается быстро) Затем спокойно удаляем все начиная с конца, и в этом случае 1Ске не придется "сдвигать" строки. И такое удаление будет быстрым. Вот такой код у меня получился: писал код давно еще на заре выхода 8.0. и да  я знаю как пишется слово надо
#1 by Маратыч
А насколько быстрее, не замерялось? Чот терзают меня смутные сомнения, что весь этот комплект операций будет работать быстрее, чем некий "сдвиг" строк ТЗ в памяти при удалении через индекс.
#2 by Рэйв
у меня самый простой метод.Сначала нахожу все строки которые надо удалить и складываю их в список. Потом пробегаю список и Таб.Удалить(ЭлементСписка.Значение)
#3 by Рэйв
ну или если возможно одним условием, то получаю в массив через .НайтиСтроки
#4 by Keyn
конечно же замерялось. к сожалению не могу привести сейчас ссылку. но этот способ один из быстрых. есть и другие)
#5 by tank68
Можно не в запрос передать таблицу как переменную Ошибка = Ложь;     Текст = "Загрузка почтовых ящиков, указанных сотрудниками на ВнешняяТаблицаДанных.";
#6 by tank68
А в запросе соответственно с этой таблицей что угодно делать, в запросе это быстрее делается чем в цикле
#7 by Маратыч
Костылестроение 80 лвл...
#8 by tank68
Попробуй миллион строк перебрать в цикле и попробуй отобрать запросом я посмотрю как быстрее получиться
#9 by МимохожийОднако
важно для чего используется эта таблица значений потом. Может быть, в дальнейшем идёт перебор и достаточно поставить фильтр и продолжить для обработки. На просторах инета есть куча примеров. Я так и не понял, для чего создана ветка.
#10 by Маратыч
От постановки задачи зависит. Я вообще постараюсь не допустить миллиона строк в ТЗ еще на этапе получения этих данных.
#11 by Euguln
Забавно, а сортировка процесс на порядок сложнее, чем сдвиг строк. Об этом не задумывался?
#12 by SeraFim
Если есть возмножность отобрать все удаляемые строки через НайтиСтроки, то делаю через неё. В Противном случае - цикл в обратном направлении
#13 by User_Agronom
За год, наверное, уже 10я тема про удаление строк из ТЗ. Чаще бывает только про очистку ТЗ.
#14 by tank68
Ну вообще если не делать через такие вещи платформа сама начинает оптимизировать запрос и не всегда оптимально поэтому временные таблицы в запросе в большинстве случаев гораздо быстрее работает чем перебирать данные в цикле
#15 by Garykom
ну не умеют поиском пользоваться. поэтому и не знают что самый быстрый способ удаления строк, это создание новой ТЗ с переносом туда тех что не нужно удалять
#16 by tank68
Все надеяться что в новой версии что то новое не описанное ранее
#17 by Живой Ископаемый
#18 by strange2007
Не понимаю в чём спор. Проверить то можно минут за несколько. №1 (удаление без сортировок, пернебирая каждую строку). 10000 записей: 0,083600 100000 записей: 0,930294 №2 (сначала пометка удаляемых строк, потом сортировка и удаление): 10000 записей: 0,088318 100000 записей: 0,935507 База файловая, платформа 8.3.7
#19 by strange2007
+ Код выложить? Как его жёлтый плюсик обернуть?
#20 by Злопчинский
Восьмерочники открывают для себя клюшечные азы Прикольненько
#21 by zak555
ты 17 посмотри
#22 by strange2007
Смотрел. У автора был конкретный вопрос, тема уже более 3-х часов висит, вот я и сделал замер минут за 15 для автора
#23 by zak555
делай замер на
#24 by strange2007
Сам делай)))))) Я для сделал и выложил результаты замеров. Если надо что-то кому-то доказать или оптимизировать свой алгоритм, то пусть сам и замеряет скорость. Эх, теоретики...
#25 by Nirvana
Это в небольших таблицах значений сортировка делается быстро. А в огромных таблицах сортировка - чуть ли не самая медленная операция.
#26 by ifso
главное не озвучивай, что при сортировке строки сдвигаются, а то мало ли что ^^
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С