Удалить строки в таблице значений

Внимание! Тема закрыта. Добавлять сообщения в закрытую тему запрещено.
1. user1582372 05.05.21 06:55 Сейчас в теме
Добрый день! Как сделать так, чтоб выбрать 4-5 строк и они сразу все удалились в таблице значений? В данный момент я выбираю 4-5 строк и удаляется по одной строке.

&НаКлиенте
Процедура Удалить(Команда)
	Для каждого Строка Из  Реестр Цикл
		Если Строка.Выбран Тогда
		ЭтотОбъект.Реестр.Удалить(Строка);
	КонецЕсли;
КонецЦикла;
КонецПроцедуры
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
9. hamsar 15 05.05.21 07:58 Сейчас в теме +0.1 $m
Отбор = Новый Структура;
Отбор.вставить("Выбран", Истина);
СтрокиУдалить = Реестр.НайтиСтроки(Отбор);
Пока СтрокиУдалить.Количество() > 0 Цикл
    Реестр.Удалить(СтрокиУдалить[0])
   СтрокиУдалить = Реестр.НайтиСтроки(Отбор);
КонецЦикла


Для вашей задачи достаточно, такого не оптимизированного решения.
user1582372; +1 2 Ответить
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
5. dandykry 9 05.05.21 07:13 Сейчас в теме
(1) Правильно никак, неправильно - 1000 и 1 способ
2. dj_tol 103 05.05.21 07:08 Сейчас в теме
Элементы.Реестр.ВыделенныеСтроки - это есть массив выделенных строк. Ну а с ним что хотите то и делайте.
4. dj_tol 103 05.05.21 07:11 Сейчас в теме
(2)И да скопировать с отбором и загрузить в форму.
3. platonov.e 158 05.05.21 07:08 Сейчас в теме
Удаление идет построчно.
6. MikhailDr 05.05.21 07:30 Сейчас в теме
Ну вообще только построчно. Можно конечно поизвращаться с методом "Скопировать" у таблицы значений, но подозреваю, что платформа точно так же будет это делать в цикле и построчно.
7. webester 26 05.05.21 07:30 Сейчас в теме
Скопировать в ТЗ, удалить, загрузить из ТЗ. Непонятно чем не устроил построчный вариант?
8. user1582372 05.05.21 07:55 Сейчас в теме
Да должно удаляться, я щас выбрал 6 строк, с начало удалилось 3 строки потом 2 потом 1.
10. MikhailDr 05.05.21 08:02 Сейчас в теме
(8) Ничего не понятно, по вашему коду не может удалиться одновременно 3 строки.

Может дело в том, что удаляются не все строки, тогда стоит попробовать обратный цикл, сделать обход не с первой строки, а с последней.
9. hamsar 15 05.05.21 07:58 Сейчас в теме +0.1 $m
Отбор = Новый Структура;
Отбор.вставить("Выбран", Истина);
СтрокиУдалить = Реестр.НайтиСтроки(Отбор);
Пока СтрокиУдалить.Количество() > 0 Цикл
    Реестр.Удалить(СтрокиУдалить[0])
   СтрокиУдалить = Реестр.НайтиСтроки(Отбор);
КонецЦикла


Для вашей задачи достаточно, такого не оптимизированного решения.
user1582372; +1 2 Ответить
11. user1582372 05.05.21 08:03 Сейчас в теме
(9) Ты меня понял, все получилось, работает как надо!
12. hamsar 15 05.05.21 08:03 Сейчас в теме
Более оптизированно

Отбор = Новый Структура;
Отбор.вставить("Выбран", Истина);
СтрокиУдалить = Реестр.НайтиСтроки(Отбор);
Генерируете тз где дублируете те же колонки типа

тз = Реест.СкопироватьКолонки();
Для Каждого Стр из СтрокиУдалить Цикл
  ЗаполнитьЗначенияСвойств(тз.НоваяСтрока, Стр);
КонецЦИкла;


Пока тз.Количество() > 0 Цикл 
Отбор = Новый Структура();
Отбор.Вставить --все колонки из первой строки тз. 
  СтрУ = Реест.НайтиСтроки(Отбор);
 Если СтрУ.Количество() > 0 Тогда
Реестр.Удалить(СтрУ[0])
тз.Удалить(тз[0])
КонецЕсли;


КонецЦикла
Показать
14. platonov.e 158 05.05.21 08:43 Сейчас в теме
(12) А чем он более оптимизирован?
15. hamsar 15 05.05.21 09:24 Сейчас в теме
(14) в первом случае при большом массиве строк, поиск будет выполняться по всему массиву строку допустим в 1млн записей в которой выбрано 300 строчек на удаление будет выполняться поиск каждый раз. По всему миллиону по второму случаю, поиск будет выполняться 300 раз с ограничивающими условиями по каждой строке.
16. Sashares 34 05.05.21 09:31 Сейчас в теме
(15)
300 раз искать строку методом, который уже возвращает все строки?
Что первый случай, что второй - говнокод, будем честными.

Что именно мешает вам удалить сразу найденные строки?

Отбор = Новый Структура;
Отбор.вставить("Выбран", Истина);
СтрокиУдалить = Реестр.НайтиСтроки(Отбор);

Для Каждого Стр из СтрокиУдалить Цикл
Реестр.Удалить(Стр);
КонецЦИкла; 
shamahn; ДмитрийС; FatPanzer; dmbarchenkov; herfis; nomad_irk; platonov.e; +7 Ответить
17. platonov.e 158 05.05.21 09:57 Сейчас в теме
(15) В найтиСтроки - у вас будет уже массив строк которые нужно удалить. Просто идете по массиву и удаляете строки в тз. Все. И две ТЗ не будет оптимизированней че одна ТЗ
18. hamsar 15 05.05.21 13:43 Сейчас в теме
(17) (16) вы правы, но не правы
Из тч удаляют не из тз, запустите свой код
13. user1582372 05.05.21 08:07 Сейчас в теме
Оставьте свое сообщение
Вакансии
Программист 1С
Казань
зарплата от 150 000 руб.
Полный день

Разработчик 1С
Москва
зарплата от 200 000 руб. до 300 000 руб.
Полный день

Программист 1С (удаленно)
Самара
зарплата от 230 000 руб. до 230 000 руб.
Полный день

Руководитель группы разработки 1С
Москва
зарплата от 250 000 руб. до 250 000 руб.
Полный день

Специалист техподдержки
Санкт-Петербург
зарплата от 100 руб. до 150 руб.
Полный день