Имя: Пароль:
1C
1С v8
Посчитать суммы выделенных ячеек табличного документа
0 echo77
 
23.01.12
13:41
Есть отчет, хочу реализовать функциональность Excel - при выделении ячеек на нижней панели выводится сумма.
Для табличного документа на форме задал обработчик события ПриАктивизацииОбласти. По задумке "ВыделенныеОбласти" - это коллекция, обходя которую можно получить все выделенные ячейки, но почему-то коллекция содержит только один элемент.
В чем может быть затык?


Процедура РезультатПриАктивизацииОбласти(Элемент)
   
   //ЭлементыФормы.Результат.ВыделенныеОбласти
   Сумма = 0;
   
   Для Каждого ЭлементКоллекции Из ЭлементыФормы.Результат.ВыделенныеОбласти Цикл
       //Элемент.ВыделенныеОбласти
       Попытка
           Сумма = Сумма + Число(СтрЗаменить(ЭлементКоллекции.Текст, Символ(160), ""));
       Исключение
       КонецПопытки;
   КонецЦикла; // Обход строк таблицы значений
   
   НадписьСумма = "Сумма: " + Сумма
   //ЭлементыФормы.Результат.ВыделенныеОбласти
КонецПроцедуры
1 askharlov
 
23.01.12
13:49
Сперва проверь есть ли у тебя в конфигурации
СтандартныеОтчеты.РезультатПриАктивизацииОбласти
2 askharlov
 
23.01.12
13:50
Если нету то вот код из типовой:
Процедура РезультатПриАктивизацииОбласти(Элемент)
   СтандартныеОтчеты.РезультатПриАктивизацииОбласти(ЭтаФорма, Элемент);
КонецПроцедуры

Процедура РезультатПриАктивизацииОбласти(ФормаОтчета, Элемент) Экспорт
   
   ЭлементыФормы = ФормаОтчета.ЭлементыФормы;
   
   ЭлементыФормы.ПолеСумма.Значение = ВычислитьСуммуВыделенныхЯчеекТабличногоДокумента(Элемент);
   
КонецПроцедуры

Функция ВычислитьСуммуВыделенныхЯчеекТабличногоДокумента(ПолеТабличногоДокумента) Экспорт
   
   Сумма = 0;
   Для Каждого Область Из ПолеТабличногоДокумента.ВыделенныеОбласти Цикл
       Если ТипЗнч(Область) = Тип("ОбластьЯчеекТабличногоДокумента") Тогда
           Для ИндексСтрока = Область.Верх По Область.Низ Цикл
               Для ИндексКолонка = Область.Лево По Область.Право Цикл
                   Попытка
                       Сумма = Сумма + Число(СтрЗаменить(ПолеТабличногоДокумента.Область("R" + Формат(ИндексСтрока, "ЧГ=0") + "C" + Формат(ИндексКолонка, "ЧГ=0")) .Текст, " ", ""));
                   Исключение
                   КонецПопытки;
               КонецЦикла;
           КонецЦикла;
       КонецЕсли;
   КонецЦикла;
   
   Возврат Сумма;
   
КонецФункции
3 echo77
 
23.01.12
13:53
в общих модулях УПП, вроде нет.
Спасибо!
4 echo77
 
23.01.12
13:54
Да. Все работает. Спасибо