Получить значения выделенных ячекк табличного документа с помощью Ctrl
Добрый день.
При выделении нескольких ячеек, механизм работает, как надо, с помощью "Элементы.ТабличныйДокумент.ТекущаяОбласть.Имя" я получаю такой результат "R5C4:R6C4". Но если эти две области я получаю через Ctrl, то я получаю ТОЛЬКО первую выбранную ячейку, то есть результат становится таким "R5C4".
Вопрос состоит в том, как именно через Ctrl получить результат, как при обычном выделении строк?
При выделении нескольких ячеек, механизм работает, как надо, с помощью "Элементы.ТабличныйДокумент.ТекущаяОбласть.Имя" я получаю такой результат "R5C4:R6C4". Но если эти две области я получаю через Ctrl, то я получаю ТОЛЬКО первую выбранную ячейку, то есть результат становится таким "R5C4".
Вопрос состоит в том, как именно через Ctrl получить результат, как при обычном выделении строк?
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2) Не пойдет. Пользователь хочет выбрать те ячейки, которые ему нужны, так заморачиваться с копированием он не будет. И вот мне нужно чтоб при обычном выделении нескольких ячеек через ctrl я получила результат "R5C4:R6C4". А сейчас получаю только первую ячейку.
(3)
Вы получаете не первую ячейку, а получаете целый столбец. Дело в том, что именно ваш столбец имеет длину 1. В 1с механизм копирования работает столбцами, а не строками. Попробуйте скопировать "первую ячейку" в выделенном диапазоне "R5C4:R20C20" и вставить
А сейчас получаю только первую ячейку.
Вы получаете не первую ячейку, а получаете целый столбец. Дело в том, что именно ваш столбец имеет длину 1. В 1с механизм копирования работает столбцами, а не строками. Попробуйте скопировать "первую ячейку" в выделенном диапазоне "R5C4:R20C20" и вставить
Что-то такое есть в БСП в ОбщегоНазначенияСлужебныйКлиент.РассчитатьПоказатели. Но я пользуюсь таким обходом, например, когда надо посчитать сумму в выделенных ячейках:
&НаКлиенте
Процедура РассчитатьСуммуВыделенных()
Сумма = 0;
ПроверенныеЯчейки = Новый Соответствие;
ОписаниеТипаЧисло = Новый ОписаниеТипов("Число");
Для Каждого ВыделеннаяОбласть Из ТабДок.ВыделенныеОбласти Цикл
Если ТипЗнч(ВыделеннаяОбласть) <> Тип("ОбластьЯчеекТабличногоДокумента") Тогда
Продолжить
КонецЕсли;
Для НомерСтроки = ВыделеннаяОбласть.Верх По ВыделеннаяОбласть.Низ Цикл
Для НомерКолонки = ВыделеннаяОбласть.Лево По ВыделеннаяОбласть.Право Цикл
Ячейка = ТабДок.Область(НомерСтроки, НомерКолонки);
Если ПроверенныеЯчейки.Получить(Ячейка.Имя) = Неопределено Тогда
ПроверенныеЯчейки.Вставить(Ячейка.Имя, Истина);
Иначе
Продолжить;
КонецЕсли;
ТекстЯчейки = СтрЗаменить(Ячейка.Текст, Символ(160), "");
Число = ОписаниеТипаЧисло.ПривестиЗначение(ТекстЯчейки);
Сумма = Сумма + Число;
КонецЦикла;
КонецЦикла;
КонецЦикла;
СуммаВыделенных = Сумма;
КонецПроцедуры
Показать
(7)
Как поместить данные из поля формы вида "Поле табличного документа" в ТабДок, чтобы обработать выделенные области?
Метод поля формы ПолучитьВыделенныеОбласти() возвращает только одну ячейку независимо от того, сколько ячеек выделено на поле формы.
Процедура РассчитатьСуммуВыделенных()
Сумма = 0;
ПроверенныеЯчейки = Новый Соответствие;
ОписаниеТипаЧисло = Новый ОписаниеТипов("Число");
Для Каждого ВыделеннаяОбласть Из ТабДок.ВыделенныеОбласти Цикл
Если ТипЗнч(ВыделеннаяОбласть) <> Тип("ОбластьЯчеекТабличногоДокумента") Тогда
Продолжить
КонецЕсли;
Для НомерСтроки = ВыделеннаяОбласть.Верх По ВыделеннаяОбласть.Низ Цикл
Для НомерКолонки = ВыделеннаяОбласть.Лево По ВыделеннаяОбласть.Право Цикл
Ячейка = ТабДок.Область(НомерСтроки, НомерКолонки);
Если ПроверенныеЯчейки.Получить(Ячейка.Имя) = Неопределено Тогда
ПроверенныеЯчейки.Вставить(Ячейка.Имя, Истина);
Иначе
Продолжить;
КонецЕсли;
ТекстЯчейки = СтрЗаменить(Ячейка.Текст, Символ(160), "");
Число = ОписаниеТипаЧисло.ПривестиЗначение(ТекстЯчейки);
Сумма = Сумма + Число;
КонецЦикла;
КонецЦикла;
КонецЦикла;
СуммаВыделенных = Сумма;
КонецПроцедуры
ПоказатьСумма = 0;
ПроверенныеЯчейки = Новый Соответствие;
ОписаниеТипаЧисло = Новый ОписаниеТипов("Число");
Для Каждого ВыделеннаяОбласть Из ТабДок.ВыделенныеОбласти Цикл
Если ТипЗнч(ВыделеннаяОбласть) <> Тип("ОбластьЯчеекТабличногоДокумента") Тогда
Продолжить
КонецЕсли;
Для НомерСтроки = ВыделеннаяОбласть.Верх По ВыделеннаяОбласть.Низ Цикл
Для НомерКолонки = ВыделеннаяОбласть.Лево По ВыделеннаяОбласть.Право Цикл
Ячейка = ТабДок.Область(НомерСтроки, НомерКолонки);
Если ПроверенныеЯчейки.Получить(Ячейка.Имя) = Неопределено Тогда
ПроверенныеЯчейки.Вставить(Ячейка.Имя, Истина);
Иначе
Продолжить;
КонецЕсли;
ТекстЯчейки = СтрЗаменить(Ячейка.Текст, Символ(160), "");
Число = ОписаниеТипаЧисло.ПривестиЗначение(ТекстЯчейки);
Сумма = Сумма + Число;
КонецЦикла;
КонецЦикла;
КонецЦикла;
СуммаВыделенных = Сумма;
КонецПроцедуры
Как поместить данные из поля формы вида "Поле табличного документа" в ТабДок, чтобы обработать выделенные области?
Метод поля формы ПолучитьВыделенныеОбласти() возвращает только одну ячейку независимо от того, сколько ячеек выделено на поле формы.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот