Каталог решений - Красивости в отчётах для 8-ки

Красивости в отчётах для 8-ки

Красивости в отчётах для 8-ки

В наличии

Часто бывает необходимость сложить несколько чисел в печатной форме, например, как это сделано в экселе.

Категория:

Описание

Сегодня решить посмотреть Бухгалтерию КОРП. Нашёл в ней очень интересную штуку: поле в котором показан результат сложения выделенных ячеек печатной формы. Конечно, такую штуку бы правильнее реализовать на уровне платформы. Но коль нет, можно оказывается сделать ручками. Как говориться, и за это богам спасибо.

 

Вот исходный код из Бухгалтерии КОРП:

Функция ВычислитьСуммуВыделенныхЯчеекТабличногоДокумента(ПолеТабличногоДокумента) Экспорт

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

    Возврат Сумма;

КонецФункции

Подумав немного, я добавил в функцию ещё расчёт среднего и определение количества ячеек с числами. Получилось вот что:

///==============================================================================
Функция ВычислитьСуммуВыделенныхЯчеекТабличногоДокумента(ПолеТабличногоДокумента, average = 0, count = 0) Экспорт

    Сумма = 0;
    count = 0;
    Для Каждого Область Из ПолеТабличногоДокумента.ВыделенныеОбласти Цикл
        Если ТипЗнч(Область) = Тип("ОбластьЯчеекТабличногоДокумента") Тогда
            Для ИндексСтрока = Область.Верх По Область.Низ Цикл
                Для ИндексКолонка = Область.Лево По Область.Право Цикл
                    Попытка
                        vNumber = Число(СтрЗаменить(ПолеТабличногоДокумента.Область("R" + Формат(ИндексСтрока, "ЧГ=0") + "C" + Формат(ИндексКолонка, "ЧГ=0")) .Текст, " ", ""));
                        Сумма = Сумма + vNumber;
                        count = count + 1;
                    Исключение  
                    КонецПопытки;
                КонецЦикла;
           КонецЦикла;
        КонецЕсли;
    КонецЦикла;
    if count <> 0 then
        average = Сумма / count;
    else
        average = 0;
    endIf;
    Возврат Сумма;
КонецФункции // ВычислитьСуммуВыделенныхЯчеекТабличногоДокумента

Результат на картинке.

Да, чуть не забыл самое главное — функцию надо вызвать в обработчике ПриАктивизацииОбласти поля табличного документа.

has been added to your cart:
Оформление заказа