Удалить строки в таблице значений
Внимание! Тема закрыта. Добавлять сообщения в закрытую тему запрещено.
Добрый день! Как сделать так, чтоб выбрать 4-5 строк и они сразу все удалились в таблице значений? В данный момент я выбираю 4-5 строк и удаляется по одной строке.
&НаКлиенте
Процедура Удалить(Команда)
Для каждого Строка Из Реестр Цикл
Если Строка.Выбран Тогда
ЭтотОбъект.Реестр.Удалить(Строка);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
По теме из базы знаний
Найденные решения
Остальные ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
Отбор = Новый Структура;
Отбор.вставить("Выбран", Истина);
СтрокиУдалить = Реестр.НайтиСтроки(Отбор);
Пока СтрокиУдалить.Количество() > 0 Цикл
Реестр.Удалить(СтрокиУдалить[0])
СтрокиУдалить = Реестр.НайтиСтроки(Отбор);
КонецЦикла
Для вашей задачи достаточно, такого не оптимизированного решения.
Более оптизированно
Отбор = Новый Структура;
Отбор.вставить("Выбран", Истина);
СтрокиУдалить = Реестр.НайтиСтроки(Отбор);
Генерируете тз где дублируете те же колонки типа
тз = Реест.СкопироватьКолонки();
Для Каждого Стр из СтрокиУдалить Цикл
ЗаполнитьЗначенияСвойств(тз.НоваяСтрока, Стр);
КонецЦИкла;
Пока тз.Количество() > 0 Цикл
Отбор = Новый Структура();
Отбор.Вставить --все колонки из первой строки тз.
СтрУ = Реест.НайтиСтроки(Отбор);
Если СтрУ.Количество() > 0 Тогда
Реестр.Удалить(СтрУ[0])
тз.Удалить(тз[0])
КонецЕсли;
КонецЦикла
Показать
(14) в первом случае при большом массиве строк, поиск будет выполняться по всему массиву строку допустим в 1млн записей в которой выбрано 300 строчек на удаление будет выполняться поиск каждый раз. По всему миллиону по второму случаю, поиск будет выполняться 300 раз с ограничивающими условиями по каждой строке.
(15)
300 раз искать строку методом, который уже возвращает все строки?
Что первый случай, что второй - говнокод, будем честными.
Что именно мешает вам удалить сразу найденные строки?
300 раз искать строку методом, который уже возвращает все строки?
Что первый случай, что второй - говнокод, будем честными.
Что именно мешает вам удалить сразу найденные строки?
Отбор = Новый Структура;
Отбор.вставить("Выбран", Истина);
СтрокиУдалить = Реестр.НайтиСтроки(Отбор);
Для Каждого Стр из СтрокиУдалить Цикл
Реестр.Удалить(Стр);
КонецЦИкла;