Множественное выделение строк в табличном поле

1. ahmeda 29.04.21 22:33 Сейчас в теме
Добрый вечер.

Столкнулся с странным поведением 1с.
В общем, имеется табличное поле, добавил на форму чекбокс, для выбора и выделения всех строк.
Например, в документе 6 строк, ставлю птичку, все строчки выделяются, подвал пересчитывается.
Если снять 2 галки остаются 4 выделенные, тоже норм, но если поставить галку обратно, на снятую, то все выделенные снимаются и остаётся только одна.
Почему так?

Обычная форма - УТ 10.3

Для выделения строк использую событие табличного поля - ПриИзмененииФлажка:
КоличествоМест = Число(Элемент.Колонки.КоличествоМест.ТекстПодвала);
	Сумма = Число(Элемент.Колонки.Сумма.ТекстПодвала);
	
	Если Колонка.Имя = "Включить" Тогда
		НайденныйЭлемент =  Включено.НайтиПоЗначению(Элемент.ТекущаяСтрока);
		Если НайденныйЭлемент = Неопределено Тогда
			Включено.Добавить(Элемент.ТекущаяСтрока);
			Элемент.ВыделенныеСтроки.Добавить(Элемент.ТекущаяСтрока);
		
			КоличествоМест = КоличествоМест + Элемент.ТекущаяСтрока.КоличествоМест;
			Сумма = Сумма + Элемент.ТекущаяСтрока.Сумма;

		Иначе
			Включено.Удалить(НайденныйЭлемент);
			Элемент.ВыделенныеСтроки.Удалить(Элемент.ТекущаяСтрока);

			КоличествоМест = КоличествоМест - Элемент.ТекущаяСтрока.КоличествоМест;
			Сумма = Сумма - Элемент.ТекущаяСтрока.Сумма;
						
		КонецЕсли;                  
	КонецЕсли; 
	
	
	Элемент.Колонки.КоличествоМест.ТекстПодвала = КоличествоМест;
	Элемент.Колонки.Сумма.ТекстПодвала = Сумма;
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. burgomister 59 30.04.21 06:04 Сейчас в теме
Попробуйте так:
Если Колонка.Имя = "Включить" Тогда

Для Каждого ТекущаяВыделеннаяСтрока Из Элементы.ВыделенныеСтроки Цикл
Элемент.ВыделенныеСтроки.Добавить(Элементы.НайтиПоИдентификатору(ТекущаяВыделеннаяСтрока));
КонецЦикла;

        НайденныйЭлемент =  Включено.НайтиПоЗначению(Элемент.ТекущаяСтрока);
        Если НайденныйЭлемент = Неопределено Тогда
            Включено.Добавить(Элемент.ТекущаяСтрока);
            Элемент.ВыделенныеСтроки.Добавить(Элемент.ТекущаяСтрока);
        
            КоличествоМест = КоличествоМест + Элемент.ТекущаяСтрока.КоличествоМест;
            Сумма = Сумма + Элемент.ТекущаяСтрока.Сумма;

        Иначе
            Включено.Удалить(НайденныйЭлемент);
            Элемент.ВыделенныеСтроки.Удалить(Элемент.ТекущаяСтрока);

            КоличествоМест = КоличествоМест - Элемент.ТекущаяСтрока.КоличествоМест;
            Сумма = Сумма - Элемент.ТекущаяСтрока.Сумма;
                        
        КонецЕсли;                  
    КонецЕсли; 

Показать
3. ahmeda 30.04.21 09:24 Сейчас в теме
(2) А что за переменная Элементы? Есть ЭлементыФормы, но там нет метода НайтиПоИдентификатору
4. Sakuraso 30.04.21 09:45 Сейчас в теме
(3)Человек перепутал с управляемыми формами.
user1592156; user1203134; +2 Ответить
6. burgomister 59 30.04.21 10:14 Сейчас в теме
(3) Да, извиняюсь. Упустил, что обычные формы. Давно уже на управляемых...
5. soft_wind 30.04.21 10:13 Сейчас в теме
(1) попробуйте вместо:
Для выделения строк использую событие табличного поля - ПриИзмененииФлажка:
использовать событие
ПриАктивизацииСтроки
7. ahmeda 30.04.21 10:58 Сейчас в теме
(5)Так там такая же ситуация, пока из ВыделенныеСтроки снимаешь галки все норм, но стоит вернуть галку, они обнуляются, остается только одна.
8. soft_wind 30.04.21 11:50 Сейчас в теме
а зачем вам выделенные строки (зачем их постоянно держать выделенными на форме?)

обычно выделяют строчки, что бы с ними сделать какие-то действия, обработать
после этого выделение всех не нужно
вообще это интерактивный механизм, сам смысл выделения показать текущую строку, или текущую группу
любое тыканье в ТЗ меняет текущее состояние

опишите изначально задачу, для чего вам это постоянное выделение?
вот как вариант используйте свои отметки, они более постоянные и не зависят от простого тыканья в строчки ТЗ
9. ahmeda 30.04.21 12:47 Сейчас в теме
(8)Есть обработка по доставке. В табличное поле, по заданным критериям попадают документы. Оператор выбирает документ и кликает по кнопке Добавить в заказ (тут таблица очищается). Нужно реализовать множественный выбор. Для начала Выбрать все (галка), это работает. Вот выбраны все документы, оператор снимает выделение с некоторых и жмет на кнопку Добавить. Хорошо, но вот он решает, что с одним документом он ошибся и нужно вернуть его в выделенные.
Как-то так.
10. ahmeda 30.04.21 12:50 Сейчас в теме
(9)"Хорошо, но вот он решает, что с одним документом он ошибся и нужно вернуть его в выделенные." это он решает до нажатия на Добавить
12. starik-2005 3038 30.04.21 14:35 Сейчас в теме
(9) Научите оператора комбинациям Ctrl+A и Ctrl+ЛКМ.
11. soft_wind 30.04.21 13:02 Сейчас в теме
так клавишу CTRL надо нажимать для добавления/отмены выделения новой строки к уже выделенным
starik-2005; +1 Ответить
13. ahmeda 30.04.21 15:42 Сейчас в теме
(11) С CTRL галочки не снимаются и не ставятся, хотя выделение работает. Не уже ли больше нет вариантов?
14. soft_wind 30.04.21 16:08 Сейчас в теме
(13)
так или галочки или выделения
что вы ж..пу с пальцем путаете
это два разных механизма
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот