Получить значения выделенных ячекк табличного документа с помощью Ctrl

1. Johney20 14.04.21 14:27 Сейчас в теме
Добрый день.

При выделении нескольких ячеек, механизм работает, как надо, с помощью "Элементы.ТабличныйДокумент.ТекущаяОбласть.Имя" я получаю такой результат "R5C4:R6C4". Но если эти две области я получаю через Ctrl, то я получаю ТОЛЬКО первую выбранную ячейку, то есть результат становится таким "R5C4".

Вопрос состоит в том, как именно через Ctrl получить результат, как при обычном выделении строк?
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Nubsdale 14.04.21 15:00 Сейчас в теме
(1)
Вопрос состоит в том, как именно через Ctrl получить результат, как при обычном выделении строк?

Выделить всё, поставить указатель на первый столбец, скопировать.
Затем указатель поставить на второй столбец, скопировать
3. Johney20 14.04.21 15:13 Сейчас в теме
(2) Не пойдет. Пользователь хочет выбрать те ячейки, которые ему нужны, так заморачиваться с копированием он не будет. И вот мне нужно чтоб при обычном выделении нескольких ячеек через ctrl я получила результат "R5C4:R6C4". А сейчас получаю только первую ячейку.
4. Nubsdale 14.04.21 15:18 Сейчас в теме
(3)
А сейчас получаю только первую ячейку.

Вы получаете не первую ячейку, а получаете целый столбец. Дело в том, что именно ваш столбец имеет длину 1. В 1с механизм копирования работает столбцами, а не строками. Попробуйте скопировать "первую ячейку" в выделенном диапазоне "R5C4:R20C20" и вставить
5. Johney20 14.04.21 15:40 Сейчас в теме
(4) Ну допустим, через ctrl я получаю не первую ячейку (R5C4). Я могу программно вытащить из значения R5C4 столбец, но как мне отобрать именно те ячейки, которые я выделила?
Не совсем понимаю Вас.
6. Nubsdale 14.04.21 15:43 Сейчас в теме
(5)
но как мне отобрать именно те ячейки, которые я выделила?

Никак. 1с копирует данные столбцами
7. SlavaKron 14.04.21 15:47 Сейчас в теме
Что-то такое есть в БСП в ОбщегоНазначенияСлужебныйКлиент.РассчитатьПоказатели. Но я пользуюсь таким обходом, например, когда надо посчитать сумму в выделенных ячейках:
&НаКлиенте
Процедура РассчитатьСуммуВыделенных()
	
	Сумма = 0;
	ПроверенныеЯчейки = Новый Соответствие;
	ОписаниеТипаЧисло = Новый ОписаниеТипов("Число");
	
	Для Каждого ВыделеннаяОбласть Из ТабДок.ВыделенныеОбласти Цикл
		
		Если ТипЗнч(ВыделеннаяОбласть) <> Тип("ОбластьЯчеекТабличногоДокумента") Тогда
			Продолжить
		КонецЕсли;
		
		Для НомерСтроки = ВыделеннаяОбласть.Верх По ВыделеннаяОбласть.Низ Цикл
			Для НомерКолонки = ВыделеннаяОбласть.Лево По ВыделеннаяОбласть.Право Цикл
				Ячейка = ТабДок.Область(НомерСтроки, НомерКолонки);
				Если ПроверенныеЯчейки.Получить(Ячейка.Имя) = Неопределено Тогда
					ПроверенныеЯчейки.Вставить(Ячейка.Имя, Истина);
				Иначе
					Продолжить;
				КонецЕсли;
				
				ТекстЯчейки = СтрЗаменить(Ячейка.Текст, Символ(160), "");
				Число = ОписаниеТипаЧисло.ПривестиЗначение(ТекстЯчейки);
				Сумма = Сумма + Число;
			КонецЦикла;
		КонецЦикла;
		
	КонецЦикла;
	
	СуммаВыделенных = Сумма;
КонецПроцедуры
Показать
Yury1001; zakharov_yuri; +2 Ответить
8. cargobird 308 25.10.24 10:47 Сейчас в теме
(7)
Процедура РассчитатьСуммуВыделенных()

Сумма = 0;
ПроверенныеЯчейки = Новый Соответствие;
ОписаниеТипаЧисло = Новый ОписаниеТипов("Число");

Для Каждого ВыделеннаяОбласть Из ТабДок.ВыделенныеОбласти Цикл

Если ТипЗнч(ВыделеннаяОбласть) <> Тип("ОбластьЯчеекТабличногоДокумента") Тогда
Продолжить
КонецЕсли;

Для НомерСтроки = ВыделеннаяОбласть.Верх По ВыделеннаяОбласть.Низ Цикл
Для НомерКолонки = ВыделеннаяОбласть.Лево По ВыделеннаяОбласть.Право Цикл
Ячейка = ТабДок.Область(НомерСтроки, НомерКолонки);
Если ПроверенныеЯчейки.Получить(Ячейка.Имя) = Неопределено Тогда
ПроверенныеЯчейки.Вставить(Ячейка.Имя, Истина);
Иначе
Продолжить;
КонецЕсли;

ТекстЯчейки = СтрЗаменить(Ячейка.Текст, Символ(160), "");
Число = ОписаниеТипаЧисло.ПривестиЗначение(ТекстЯчейки);
Сумма = Сумма + Число;
КонецЦикла;
КонецЦикла;

КонецЦикла;

СуммаВыделенных = Сумма;
КонецПроцедуры
Показать


Как поместить данные из поля формы вида "Поле табличного документа" в ТабДок, чтобы обработать выделенные области?
Метод поля формы ПолучитьВыделенныеОбласти() возвращает только одну ячейку независимо от того, сколько ячеек выделено на поле формы.
9. SlavaKron 25.10.24 10:57 Сейчас в теме
(8)
Метод поля формы ПолучитьВыделенныеОбласти()
Зачем вам этот метод? Поле формы вида "Поле табличного документа" всегда связано с реквизитом формы с типом ТабличныйДокумент. С реквизитом формы и работайте через свойство ВыделенныеОбласти.
cargobird; +1 Ответить
10. cargobird 308 25.10.24 11:25 Сейчас в теме
(9) Да, затупил. Через ЭтаФорма есть доступ к табличному документу.
Оставьте свое сообщение

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