Расчет сложных итогов СКД


Малоизвестный прием для расчета итогов в отчетах на СКД.

Однажды появилась необходимость посчитать в отчете не стандартные итоги. Долго искал информацию в интернете, но ничего подобного не нашел. Путем экспериментов нашел возможность, описания которой ранее нигде не видел.  Думаю, кому-то может быть полезно.
Задача: необходимо в отчете получить итоги, которые рассчитываются следующим образом

Для расчета вертикальных и горизонтальных итогов все стандартно:

  • Итог по горизонтали рассчитывается формулой 
Среднее(ВычислитьВыражениеСГруппировкойМассив("Максимум(Значение)","Лево, Верх"))
  • Итого по вертикали рассчитывается формулой
Сумма(ВычислитьВыражениеСГруппировкойМассив("Максимум(Значение)","Лево, Верх"))

С итогом на пересечении общих итогов по горизонтали и по вертикали (ячейка в правом нижнем углу) сложнее.
Эксперимент показал, что можно делать вложенные вычисляемые выражения, т.е. формула для общего итога будет 

Сумма(ВычислитьВыражениеСГруппировкойМассив("Среднее(ВычислитьВыражениеСГруппировкойМассив(""Максимум(Значение)"",""Лево,Верх""))","Лево"))

Вложенные кавычки, как в стандартных текстовых константах выделяются двойными кавычками.

В результате получаются такие формулы расчета итогов.

В файлах отчет с примером.

Тестировалось на платформе 8.3.10.2667.

8 Comments

  1. DoctorRoza

    А есть ли возможность подсчитать произвольный итог для полей группировок, не ресурсов? Например, у меня есть группировка со списком регистраторов и нужно над ними, в верхнем поле группировки, вывести количество документов. В запросе я могу сгруппировать, и задать Количество(РАЗЛИЧНЫЕ Регистратор), а в СКД как быть?

    Reply
  2. json

    (1) Если не ошибаюсь, это возможно реализовать через пользовательские поля с типом «Выражение».

    У меня была задача посчитать количество дней, в которые были поступления (Количество(РАЗЛИЧНЫЕ Период)).

    Так вот через пользовательские поля это удалось посчитать.

    Reply
  3. DoctorRoza

    (2) Получается, что добавляем доп. поле, так, в итоге, и сделал, Но хочется балалайку, как с ресурсами.

    Reply
  4. the1

    (1) Можно так попробовать

    Reply
  5. ids79

    Можно добавить вычисляемое поле:

    ВычислитьВыражениеСГруппировкойМассив(«Максимум(Значение)»,»Лево, Верх»)

    И в итогах сделать проще:

    Среднне(ВычисляемоеПоле)

    Сумма(ВычисляемоеПоле)

    Сумма(ВычислитьВыражениеСГруппировкойМассив(«Среднне(ВычисляемоеПоле)»,»Лево»))

    То же самое, но красивее получается.

    Reply
  6. s22

    Долго искал операторы Лево и ВВерх. Думал, как сильно улучшить жизнь с ними в сложных случаях.

    А оказалось это имена колонок.

    Жизнь не справедлива.

    Reply
  7. logarifm

    Это все конечно красиво кроме одного. Когда отчет перестроят и изменят группировки вот тогда значения будут весьма интересны. Для простенького примерчика покатит. А вот реально для сложного отчета предусмотреть вариации крайне тяжело.

    Reply
  8. dandykry

    О божешки ты мои!!!! 2 дня 2 человека страдали (1 точно страдал) до прочтения этой статьи.

    Кто ж знал, что можно выделять двумя кавычками вложенные выражения.

    Я в шоке.

    Спасибо

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *