#0
by Keyn
А интересно как вы удаляете строки из таблицы значений. Надеюсь что не так: ТаблицаЦен.Удалить(Индекс); (взял пример из хелпа) Работать конечно будет просто медленно. Когда вы удаляете так как в хелпе, то 1Ска удалит строку и сдвинет остальные строки "вверх". А это медленный процесс. Если у вас большая таблица значений и удалить нужно много строк, это может занять время, а ждать не хочется, поэтому можно воспользоватся хитростью. Добавляем в таблицу значений новую служебную колонку. В эту колонку каждому удаляемому значению ставим 1. Затем сортируем по этой колонке и все удаляемые значения окажутся в конце. (сортировка же делается быстро) Затем спокойно удаляем все начиная с конца, и в этом случае 1Ске не придется "сдвигать" строки. И такое удаление будет быстрым. Вот такой код у меня получился: писал код давно еще на заре выхода 8.0. и да я знаю как пишется слово надо
#1
by Маратыч
А насколько быстрее, не замерялось? Чот терзают меня смутные сомнения, что весь этот комплект операций будет работать быстрее, чем некий "сдвиг" строк ТЗ в памяти при удалении через индекс.
#2
by Рэйв
у меня самый простой метод.Сначала нахожу все строки которые надо удалить и складываю их в список. Потом пробегаю список и Таб.Удалить(ЭлементСписка.Значение)
#4
by Keyn
конечно же замерялось. к сожалению не могу привести сейчас ссылку. но этот способ один из быстрых. есть и другие)
#5
by tank68
Можно не в запрос передать таблицу как переменную Ошибка = Ложь; Текст = "Загрузка почтовых ящиков, указанных сотрудниками на ВнешняяТаблицаДанных.";
#6
by tank68
А в запросе соответственно с этой таблицей что угодно делать, в запросе это быстрее делается чем в цикле
#8
by tank68
Попробуй миллион строк перебрать в цикле и попробуй отобрать запросом я посмотрю как быстрее получиться
#9
by МимохожийОднако
важно для чего используется эта таблица значений потом. Может быть, в дальнейшем идёт перебор и достаточно поставить фильтр и продолжить для обработки. На просторах инета есть куча примеров. Я так и не понял, для чего создана ветка.
#10
by Маратыч
От постановки задачи зависит. Я вообще постараюсь не допустить миллиона строк в ТЗ еще на этапе получения этих данных.
#11
by Euguln
Забавно, а сортировка процесс на порядок сложнее, чем сдвиг строк. Об этом не задумывался?
#12
by SeraFim
Если есть возмножность отобрать все удаляемые строки через НайтиСтроки, то делаю через неё. В Противном случае - цикл в обратном направлении
#13
by User_Agronom
За год, наверное, уже 10я тема про удаление строк из ТЗ. Чаще бывает только про очистку ТЗ.
#14
by tank68
Ну вообще если не делать через такие вещи платформа сама начинает оптимизировать запрос и не всегда оптимально поэтому временные таблицы в запросе в большинстве случаев гораздо быстрее работает чем перебирать данные в цикле
#15
by Garykom
ну не умеют поиском пользоваться. поэтому и не знают что самый быстрый способ удаления строк, это создание новой ТЗ с переносом туда тех что не нужно удалять
#18
by strange2007
Не понимаю в чём спор. Проверить то можно минут за несколько. №1 (удаление без сортировок, пернебирая каждую строку). 10000 записей: 0,083600 100000 записей: 0,930294 №2 (сначала пометка удаляемых строк, потом сортировка и удаление): 10000 записей: 0,088318 100000 записей: 0,935507 База файловая, платформа 8.3.7
#22
by strange2007
Смотрел. У автора был конкретный вопрос, тема уже более 3-х часов висит, вот я и сделал замер минут за 15 для автора
#24
by strange2007
Сам делай)))))) Я для сделал и выложил результаты замеров. Если надо что-то кому-то доказать или оптимизировать свой алгоритм, то пусть сам и замеряет скорость. Эх, теоретики...
#25
by Nirvana
Это в небольших таблицах значений сортировка делается быстро. А в огромных таблицах сортировка - чуть ли не самая медленная операция.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Таблицы, таблицы, таблицы... Будь они неладны
- Как строки таблицы даных сделать колонками?
- ТЗ. Удаление строки сдвигает строки?
- Как увеличить размер строки таблицы если длина строки больше ширины ячейки
- Подсветка строки таблицы значений
- Компьютеры поразил уникальный вирус (интересно как они цифровую подпись поделали)
- Как получить значение первой строки в определенной колонке таблицы значений
- Как быстро заполнить значения строки массива значениями строки таблицы значений?
- как из строки убрать символ перевода строки?
- Динамический список - выделенные строки - суммирование содержимого строки..
- v7: Выделение строки таблицы значений
- Индекс Строки таблицы значений в найденном массиве строк 1с8
В этой группе 1С
- ЗУП зависает при расчете, невозможно отловить.
- Как отловить ошибку в типовом обмене "УТ 10.3" - "БП 3.0"? (или подскажите)
- Медленная скорость входящего трафика
- Счет учета расчетов с контрагентом обмен УНФ - БП 3.0
- 1С Веб клиент. Переменная не определена (СтандартныеПодсистемыКлиентПовтИсп)
- 1С БП 3.0 + ЗУП 3.0 позаказный учет
- Проверка XML валидности схемы XML
- ут11.1.10.195. добавить отчет в форму "Отчеты по продажам"
- Различия диалектов Си и С-подобных языков - C++, C# и т.д.
- ERP Счет-фактура выданный на аванс
- Перенос остатков из Бухгалтерии в УПП
- КД: выгрузка характеристик из УТ 11.1 в БП 3
- Разница между "Провести и закрыть" и "Провести" и закрыть по крестику?
- Итог по документу в запросе - задваиваются показатели верхней группировки
- Помогте с запросом - соединение по вхождению в иерархию
- Интеграция ЕГАИС. Ошибка при загрузке классификатора организаций
- Подскажите в СКД другие результаты, чем в консоли
- Вывод печатной формы в MS Word типовыми средствами. Розница УФ.
- Как из BAT-файла запустить задачу из планировщика ?
- HELP: обновление без cf (есть cfu)