![]() |
|
Отмена выделения ячейки в табличном поле | ☑ | ||
---|---|---|---|---|
0
Droning1C
16.04.20
✎
17:10
|
Добрый день! Обычные формы, Табличное поле с типом значения ДокументСписок. Предположим в этом табличном поле нет никаких условных оформлений. Все по стандарту. При нажатии на ячейку - ячейка приобретает темно-синий цвет, рамка ячейки становится пунктирной, срабатывают соответствующие обработчики событий и тд. При повторном нажатии на ту же ячейку темно-синий цвет меняется на белый, пунктир по контуру остается. Как обработать событие повторного нажатия на одну и ту же ячейку?
|
|||
1
Droning1C
16.04.20
✎
17:12
|
Если более подробно.. Мне нужно считать сумму значений в колонке по выделенным ячейкам. Выделяю 5 ячеек подряд. Сумма считается правильно. Повторно нажимаю на одну из выделенных ячеек - Сумма не уменьшается на значение повторно выделенной ячейки.
|
|||
2
dezss
16.04.20
✎
17:19
|
Ну так запоминай те, на которые нажимали. В то же соответствие пихай, а при втором клике удаляй.
|
|||
3
Droning1C
16.04.20
✎
17:22
|
(2) думал про это уже, просто может есть какие-то более очевидные для знающего человека варианты, о которых я даже не подозреваю.
|
|||
4
Droning1C
16.04.20
✎
17:26
|
а чего-то типа коллекции выделенных ячеек нет?
|
|||
5
Droning1C
17.04.20
✎
11:21
|
(2) Ну хорошо, допустим соответствие или структура. Однозначно идентифицировать ячейку я могу через номер документа в строке и имя колонки. Тут вроде ясно более менее. Но в какой момент это соответствие или структуру создавать и в какой момент чистить...
Сейчас алгоритм выглядит так - Процедура ДокументСписокПриАктивизацииЯчейки(Элемент) СуммаВыделенных = 0; Для Каждого Строка Из ЭлементыФормы.ДокументСписок.ВыделенныеСтроки Цикл ИмяТекущейКолонки = Элементыформы.ДокументСписок.ТекущаяКолонка.Имя; Если ИмяТекущейКолонки = "КОплате" ИЛИ ИмяТекущейКолонки = "Оплачено" ИЛИ ИмяТекущейКолонки = "Баланс" ИЛИ ИмяТекущейКолонки = "СуммаДокумента" ИЛИ ИмяТекущейКолонки = "Поступило" Тогда ТекстЯчейки = Элементыформы.ДокументСписок.ОформлениеСтроки(Строка).Ячейки[ИмяТекущейКолонки].Текст; Если ТекстЯчейки = "" Тогда Иначе СуммаВыделенных = СуммаВыделенных + Число(ТекстЯчейки); КонецЕсли; КонецЕсли; КонецЦикла; ЭлементыФормы.ДействияФормы.Кнопки.СуммаВыделенных.Текст = СуммаВыделенных; КонецПроцедуры Да, знаю, что извращение с Число(ТекстЯчейки), но тут уж как есть. |
|||
6
Droning1C
17.04.20
✎
11:53
|
Чистить соответствие по кнопке - не вариант, а другого пути я не вижу(
|
|||
7
dezss
17.04.20
✎
15:23
|
Иначе
СуммаВыделенных = СуммаВыделенных + Число(ТекстЯчейки); КонецЕсли; Вот прям там, где складываешь, так и пихай в соответствие, прям вот в этом самом "Иначе". Если Соответствие.Получить(<твойключ>) = Неопределено Тогда СуммаВыделенных = СуммаВыделенных + Число(ТекстЯчейки); Соответствие.Вставить(<твойключ>,1); Иначе СуммаВыделенных = СуммаВыделенных - Число(ТекстЯчейки); Соответствие.Удалить(<твойключ>); КонецЕсли |
|||
8
dezss
17.04.20
✎
15:26
|
Это просто пример. Надо только обходить все.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |