|
Табличный документ Сумма как в экселе | ☑ | ||
---|---|---|---|---|
0
Patrio_
O_Muerte 23.08.13
✎
11:33
|
Добрый день.
Есть ли в 8-ке какая нибудь волшебная возможность просуммировать несколько чисел как в Экселе в табличном документе? |
|||
1
Галахад
гуру
23.08.13
✎
11:34
|
При запущенном калькуляторе выделить ячейки и нажать "М"
|
|||
2
Patrio_
O_Muerte 23.08.13
✎
11:40
|
М на клавиатуре или в калькуляторе?
|
|||
3
Галахад
гуру
23.08.13
✎
11:42
|
В 1С-е на панели.
|
|||
4
Patrio_
O_Muerte 23.08.13
✎
11:43
|
нашел, спс
|
|||
5
Xatori
23.08.13
✎
12:18
|
Вот держи, авторство не моё, уже не помню где нарыл, но работает исправно
На форме расположить надпись с именем "ИнформационноеСообщение" (туда будет выводжится результат) /// Процедура Расчитывает сумму ячеек как в Екселе Процедура РезультатПриАктивизацииОбласти(Элемент) /// Расчет Суммы как в Экселе по выделенным ячейкам ИнформационноеСообщение = ""; ОбщаяСумма = 0; Для Каждого ИнфоОбласти Из ПолучитьИнформациюПоВыделеннымОбластям (ЭлементыФормы.Результат) Цикл Попытка ИнформационноеСообщение = Число(ИнформационноеСообщение); Исключение ИнформационноеСообщение = ИнформационноеСообщение; КонецПопытки; ИнформационноеСообщение = ИнформационноеСообщение + ИнфоОбласти.Сумма; //" (" + ИнфоОбласти.КоличествоЯчеек + ") Сумма = " + ИнфоОбласти.Сумма; //ИнфоОбласти.Область + " (" + ИнфоОбласти.КоличествоЯчеек + ") Сумма = " + ИнфоОбласти.Сумма; //+ " Среднее = " + ИнфоОбласти.Сумма/ИнфоОбласти.КоличествоЯчеек + "; "; ОбщаяСумма = ОбщаяСумма + ИнфоОбласти.Сумма; КонецЦикла; //ИнформационноеСообщение = ИнформационноеСообщение + Символы.ПС + "Общая сумма: " + ОбщаяСумма; ЭлементыФормы.ИнформационноеСообщение.Заголовок = ИнформационноеСообщение; Если ОбщаяСумма = 0 Тогда ЭлементыФормы.ИнформационноеСообщение.Видимость = Ложь; Иначе ЭлементыФормы.ИнформационноеСообщение.Видимость = Истина; КонецЕсли; //////// КонецПроцедуры |
|||
6
Xatori
23.08.13
✎
12:23
|
Вот ещё, забыл кинуть нужные процедуры
/// Расчет Суммы как в Экселе по выделенным ячейкам Функция ПолучитьИнформациюПоВыделеннымОбластям (ТабличныйДокумент) Экспорт МассивДанныхВыделенныхОбластей = Новый Массив; НомерВыделеннойОбласти = 0; КоличествоВыделенныхОбластей = ТабличныйДокумент.ВыделенныеОбласти.Количество(); Для Сч = 0 По КоличествоВыделенныхОбластей - 1 Цикл ВыделеннаяОбласть = ТабличныйДокумент.ВыделенныеОбласти[КоличествоВыделенныхОбластей - НомерВыделеннойОбласти - 1]; Если ВыделеннаяОбласть <> Неопределено Тогда КоличествоЯчеек = (ВыделеннаяОбласть.Право - ВыделеннаяОбласть.Лево + 1) * (ВыделеннаяОбласть.Низ - ВыделеннаяОбласть.Верх + 1); ЕстьКэшДляОбласти = КэшОбластей.Количество() > 0 И КэшОбластей.ВГраница() >= НомерВыделеннойОбласти; Если ЕстьКэшДляОбласти Тогда ОбластьВКэш = КэшОбластей[НомерВыделеннойОбласти]; Если ОбластьПолностьюЛежитВОбласти(ОбластьВКэш, ВыделеннаяОбласть) Тогда //Область кэша в выделенной области (область увеличена) //|-------------------------| //| ---------- | //| | Кэш | | //| ---------- | //| Выделенная область | //|-------------------------| СуммаОблСверху = ВычислитьСуммуОбласти (ТабличныйДокумент, ВыделеннаяОбласть.Верх, ВыделеннаяОбласть.Лево, ОбластьВКэш.Верх - 1, ВыделеннаяОбласть.Право); СуммаОблСнизу = ВычислитьСуммуОбласти (ТабличныйДокумент, ОбластьВКэш.Низ + 1, ВыделеннаяОбласть.Лево, ВыделеннаяОбласть.Низ, ВыделеннаяОбласть.Право); СуммаОблСлева = ВычислитьСуммуОбласти (ТабличныйДокумент, ОбластьВКэш.Верх, ВыделеннаяОбласть.Лево, ОбластьВКэш.Низ, ОбластьВКэш.Лево - 1); СуммаОблСправа = ВычислитьСуммуОбласти (ТабличныйДокумент, ОбластьВКэш.Верх, ОбластьВКэш.Право + 1, ОбластьВКэш.Низ, ВыделеннаяОбласть.Право); Сумма = ОбластьВКэш.Сумма + СуммаОблСверху + СуммаОблСнизу + СуммаОблСлева + СуммаОблСправа; ИначеЕсли ОбластьПолностьюЛежитВОбласти(ВыделеннаяОбласть, ОбластьВКэш) Тогда //Выделенная область лежит в кэше (область уменьшена) //|-------------------------| //| ------------------ | //| | Выделенная обл.| | //| ------------------ | //| Кэш область | //|-------------------------| СуммаОблСверху = ВычислитьСуммуОбласти (ТабличныйДокумент, ОбластьВКэш.Верх, ОбластьВКэш.Лево, ВыделеннаяОбласть.Верх - 1, ОбластьВКэш.Право); СуммаОблСнизу = ВычислитьСуммуОбласти (ТабличныйДокумент, ВыделеннаяОбласть.Низ + 1, ОбластьВКэш.Лево, ОбластьВКэш.Низ, ОбластьВКэш.Право); СуммаОблСлева = ВычислитьСуммуОбласти (ТабличныйДокумент, ВыделеннаяОбласть.Верх, ОбластьВКэш.Лево, ВыделеннаяОбласть.Низ, ВыделеннаяОбласть.Лево - 1); СуммаОблСправа = ВычислитьСуммуОбласти (ТабличныйДокумент, ВыделеннаяОбласть.Верх, ВыделеннаяОбласть.Право + 1, ВыделеннаяОбласть.Низ, ОбластьВКэш.Право); Сумма = ОбластьВКэш.Сумма - СуммаОблСверху - СуммаОблСнизу - СуммаОблСлева - СуммаОблСправа; Иначе //Обычный вариант расчета (т.к. кэш другой области) Сумма = ВычислитьСуммуОбласти (ТабличныйДокумент, ВыделеннаяОбласть.Верх, ВыделеннаяОбласть.Лево, ВыделеннаяОбласть.Низ, ВыделеннаяОбласть.Право); КонецЕсли; Иначе //Обычный вариант расчета (т.к. кэша нет) Сумма = ВычислитьСуммуОбласти (ТабличныйДокумент, ВыделеннаяОбласть.Верх, ВыделеннаяОбласть.Лево, ВыделеннаяОбласть.Низ, ВыделеннаяОбласть.Право); КонецЕсли; //Заполним данные структуры КэшЭлементаОбласть СтруктураКэшЭлементаОбласть = Новый Структура("Лево,Низ,Право,Верх,Сумма",ВыделеннаяОбласть.Лево, ВыделеннаяОбласть.Низ, ВыделеннаяОбласть.Право, ВыделеннаяОбласть.Верх, Сумма); //Заполним Кэш Если ЕстьКэшДляОбласти Тогда КэшОбластей[НомерВыделеннойОбласти] = СтруктураКэшЭлементаОбласть; Иначе КэшОбластей.Добавить(СтруктураКэшЭлементаОбласть); КонецЕсли; СтруктураДанныхОбласти = Новый Структура ("Область, КоличествоЯчеек, Сумма", ВыделеннаяОбласть.Имя, КоличествоЯчеек, Сумма); МассивДанныхВыделенныхОбластей.Добавить(СтруктураДанныхОбласти); КонецЕсли; НомерВыделеннойОбласти = НомерВыделеннойОбласти + 1; КонецЦикла; Возврат МассивДанныхВыделенныхОбластей; КонецФункции Функция ОбластьПолностьюЛежитВОбласти (ПроверяемаяОбласть,Область) //Проверим лежит ли область в заданной области Возврат ПроверяемаяОбласть.Лево >= Область.Лево И ПроверяемаяОбласть.Право <= Область.Право И ПроверяемаяОбласть.Верх >= Область.Верх И ПроверяемаяОбласть.Низ <= Область.Низ; КонецФункции Функция ВычислитьСуммуОбласти (ТабличныйДокумент, Верх, Лево, Низ, Право) Сумма = 0; Для ЯчВерт = Верх По Низ Цикл Для ЯчГориз = Лево По Право Цикл Область = ТабличныйДокумент.Область(ЯчВерт,ЯчГориз); Попытка Если Область.Видимость Тогда Сумма = Сумма + ПолучитьЧислоИзСтроки(Область.Текст); КонецЕсли; Исключение Сумма = 0; КонецПопытки; КонецЦикла; КонецЦикла; Возврат Сумма; КонецФункции Функция ПолучитьЧислоИзСтроки(Текст) Попытка Результат = Число(Текст); Исключение Результат = 0; КонецПопытки; Возврат Результат; КонецФункции ///////////////////////// |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |