От экспертов «1С-Рарус»: Сложный расчет итогов с помощью системы компоновки данных (СКД) в «1С»
От экспертов «1С-Рарус»: Сложный расчет итогов с помощью системы компоновки данных (СКД) в «1С»

От экспертов «1С-Рарус»: Сложный расчет итогов с помощью системы компоновки данных (СКД) в «1С»

04.03.2021
35 мин
40100

В чём заключается сложность расчета итогов по ключевым показателям?

В статье мы поговорим о применении СКД для решения очень общей задачи, которую можно описать словами «анализ деятельности предприятия». Более точно ее можно сформулировать так: необходимо разработать инструмент, который позволил бы без дополнительного программирования создавать, настраивать и анализировать произвольное количество числовых показателей деятельности компании с произвольным расчетом итогов.

Определение ключевого показателя (КП)

Из-за общности задачи и возникают сложности. Какие показатели необходимо анализировать? Очень разные, можно даже сказать — разноприродные.

Например:

  • Суммовые показатели (прибыль, выручка).
  • Количественные (численность персонала, количество обращений клиентов).
  • Проценты (процент ФОТ в затратах).
  • Удельные (выручка на одного специалиста, офисная площадь на одного человека).
  • Любые другие, значения которых можно выразить числом (площадь помещений).

Таким образом, ключевой показатель — это любая сущность, которая может быть выражена числом, подлежащая анализу.

Список КП заранее не известен

Список показателей не определен заранее: деятельность предприятия меняется, потребность в анализе тоже. Состав показателей дополняется, уточняется, расширяется постоянно в течение жизни компании.

Есть показатели общие и общепринятые для всей компании, с общим способом расчета. Например, такие как выручка, прибыль. А есть специфические для какого-то филиала или вида деятельности. Например, молодой филиал с не устоявшимся количеством сотрудников анализирует количество квадратных метров офиса на одного сотрудника.

Производные КП

Часть показателей является производными: их значение бессмысленно хранить, оно напрямую зависит от значений базовых показателей. Такими показателями, например, являются все удельные: для их расчета нужно знать общее значение и количество сущностей, на которое нужно поделить это общее.

Пример:

Удельная прибыль на сотрудника — это общая прибыль, поделенная на количество сотрудников.

Структура отчёта с ключевыми показателями

При большом количестве сотрудников, занимающихся анализом, возникает потребность организовывать эти показатели в уникальные для конкретного менеджера списки и/или структуры.

Если показателей в компании хоть сколько-нибудь значимое количество, то у любого менеджера должна быть возможность быстро сформировать отчет по релевантному именно для него перечню показателей, причем желательно не просто перечню, а особым образом организованному перечню.

Например, структура может быть такой:

Раздел 1: Общая выручка
          Выручка от продажи товаров
          Выручка от продажи услуг
Раздел 2: Затраты
          ФОТ
          Командировки
          Прочее
Раздел 3: Прибыль

Постановка задачи расчета агрегационных итогов

С требованиями к самим показателям более-менее определились, теперь нужно сформулировать, какие требования возникают непосредственно при анализе данных.

В любой системе хранения данных есть детализированное хранимое значение, то есть такое, набор аналитик которого мы считаем достаточным. Скажем, можно хранить выручку за каждый день и для каждого продавца, а можно — за год и по компании в целом.

Допустим, мы договорились, что детальное значение показателя мы храним или считаем в разрезах Подразделение/Месяц. Задача состоит в корректном расчете итогов для всей компании. Возникают следующие вопросы:

  • Как посчитать итог для одного подразделения за год?
  • Для всей компании за год?

В самом простом случае ответ — всё сложить. Например, прибыль. Понятно, что прибыль по компании за месяц — это сумма всех прибылей подразделений за этот месяц, а прибыль за год — это сумма всех прибылей за месяц, неважно, для одного подразделения или для всей компании.

Постановка задачи расчета агрегационных итогов

Теперь разберем, например, показатель «Численность сотрудников». Что такое численность всей компании за месяц? Это снова сумма численности подразделений (не рассматриваем случаи, когда сотрудник числится сразу в двух подразделениях по полставки). А что такое численность подразделения за год? Сумма численностей за все месяцы? Точно нет.

На практике оказывается, что решение, как анализировать численность за год, принимает конкретный аналитик. Некоторые считают, что это должен быть максимум от численностей за месяцы, некоторые — что среднее. А что такое численность компании за год? Это, соответственно, максимум (или среднее) от суммы численностей подразделений за каждый месяц.

Постановка задачи расчета агрегационных итогов

Отдельный случай — с расчетными показателями. Как посчитать, например, удельную прибыль за год? Можно взять среднюю из рассчитанных удельных прибылей помесячно, а можно рассчитать по своей формуле на уровне года, применив агрегацию к тем показателям, что являются основой для расчета: в таком случае, удельная прибыль за год = сумма прибыли за год / средняя численность за год.

Постановка задачи расчета агрегационных итогов

Так, в нашем примере средняя удельная прибыль за год = (214.29 + 133.33 + 177.78) / 3, а удельная прибыль, рассчитанная за год по формуле = 4300 (прибыль за год) / 8.33 (средняя численность за год).

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

Собрав все возможные требования к расчету итогов, мы пришли к такому перечню агрегаций:

  • Сумма.
  • Среднее.
  • Максимум.
  • Количество.
  • Количество различных.
  • Среднее накопительное.
  • Формула (релевантно только для расчетных показателей; имеется в виду расчет по формуле на любом уровне итогов, с применением агрегационных функций базовых показателей).

Архитектура и методика решения для расчета ключевых показателей

Теперь, когда задачи сформулированы, рассмотрим возможные архитектурные подходы для их решения. Начнем с задачи об открытом списке КП, создании новых, модификации имеющихся.

Справочники и регистры

1. Справочник «Ключевые показатели». Справочник открыт для добавления новых элементов ключевых показателей и редактирования существующих. Таким решается задача составления заранее не заданного списка КП.

Архитектура и методика решения для расчета ключевых показателей

2. В каждом КП возможно задать его собственный способ расчета итога по периоду. Таким образом решается задача произвольного подсчета итогов для каждого отдельно взятого КП. Разумеется, в данном случае это всего лишь декорационная обвязка над сложным математическим аппаратом СКД. Мы рассмотрим ее ниже.

Архитектура и методика решения для расчета ключевых показателей

3. Если КП расчетной природы, то можно задать формулу его расчета в терминах языка запроса «1С». Для удобства пользователей коды базовых показателей в пользовательском режиме трансформируются в наименования. Так решается задача произвольного расчета показателя без хранения значений.

Архитектура и методика решения для расчета ключевых показателей

4. Для хранения значений всех показателей, кроме формульных, в системе создан регистр сведений «Значения ключевых показателей». Его структура зависит от набора аналитик, определяющих значение ключевого показателя. В нашем примере его структура была бы такова:

  • Подразделение,
  • Период (месяц),
  • Ключевой показатель,
  • Значение.

Регистр может заполняться вручную, а может — автоматически, на основании методов расчета, заданных в ключевом показателе.

5. Хотя это не относится к теме статьи, заметим, что один и тот же показатель может рассчитываться по-разному для разных контуров и объектов учета. Например, разными контурами может быть плановая и фактическая деятельность компании, а объектами учета — разные филиалы:

Архитектура и методика решения для расчета ключевых показателей

6. Справочник «Виды отчетов» — инструмент для систематизации КП.

Каждый вид отчета представляет собой структуру, которую пользователь наполняет необходимыми для него КП. Также для каждого раздела структуры можно задать способ расчета итога по этому разделу. Вид отчета выбирается в отчете по ключевым показателям.

Таким образом, решаются следующие задачи:

  • составление собственной структуры КП для облегчения анализа;
  • хранение в системе произвольного количества таких структур.

Важно понимать, что задача системы — обеспечить максимальную гибкость инструмента; при этом фактическое использование (то есть количество и состав структур и собственно КП) зависит от управленческих задач и решается по‑своему в каждой компании.

Пример структуры КП:

Архитектура и методика решения для расчета ключевых показателей

7. Отчет «Сравнительный анализ ключевых показателей».

Наконец мы добрались до главного инструмента анализа — собственно, отчета.

Какие задачи решает отчет:

  • Вывод значений хранимых значений показателя / списка показателей.
  • Расчет и вывод значений формульных значений показателя / списка показателей.
  • Расчет итогов по показателям по периоду.
  • Расчет итогов по показателям по произвольному набору группировок.
  • Расчет итогов по показателям по разделам структуры.

Концептуальная схема работы отчета

Концептуальная схема работы отчета

  • Запросом собирается предварительная таблица данных.
  • Программно модифицируется таблица данных.
  • Назначается как набор данных для СКД, которая и занимается окончательной обработкой и выводом отчета.
  • Программно формируется схема СКД в части выражения ресурсов и вычисляемых полей.

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

  • Отбор показателей по прямому отбору из отчета, будь то по структуре или по ручному отбору, установленному пользователем.
  • Раскрутка формул из расчетных показателей, с целью получить список тех показателей, которые являются базой для расчета.

При подготовке исходных данных запрос собирает список показателей, поданных на вход, а также тех показателей, которые являются базовыми для расчетных, и по ним строит плоскую таблицу.  Результат выглядит так:

Показатель Рассчитывается Подразделение Период Значение
Прибыль (Код = «000000736») Нет Отдел внедрений 01.2020 1000
Численность (Код = «000000739») Нет Отдел внедрений 01.2020 5
Численность (Код = «000000739») Нет Отдел продаж 01.2020 2
Удельная прибыль (Код = «000000740») Да Отдел внедрений 01.2020  
       

Далее наша работа заключается в том, чтобы модифицировать эту таблицу в тот вид, из которого благодаря вычисляемым полям и ресурсам СКД мы сможем получить все необходимые цифры. Финальная таблица для подачи в СКД выглядит так:

Концептуальная схема работы отчета

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

Расчет итогов и формирование отчета по ключевым показателям

Теперь начинается самое интересное. Перед нами стоит две задачи:

  1. Вычислить формульные показатели.
  2. Рассчитать необходимые итоги, используя правильные агрегатные функции для каждого показателя.

Немаловажная подзадача — сделать поле выражения ресурса настолько не громоздким, насколько это возможно. Задача составления выражения сложна. Можно составить настолько сложное выражение, что компиляция текста запроса, которую можно видеть в виде события технологического журнала SDBL, будет занимать большое количество памяти и особенно процессора.

Для приведения значения показателей к одному полю мы используем Вычисляемое поле СКД. Вот как выглядит его выражение для нашего простого демонстрационного примера:

ВЫБОР
	КОГДА КлючевойПоказатель.Код = "000000002"
		ТОГДА а000000002
	КОГДА КлючевойПоказатель.Код = "000000037"
		ТОГДА а000000037
	ИНАЧЕ 0
КОНЕЦ

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

Далее нам нужно рассчитать итоги.

Почти для всех типов итога используется выражение вида:

СРЕДНЕЕ(ВЫЧИСЛИТЬВЫРАЖЕНИЕ
СГРУППИРОВКОЙМАССИВ("СУММА(Значение1)", "Период")),

Где:

Среднее — это агрегационная функция, указанная для нашего показателя (см. скрин выбора агрегационной функции в карточке ключевого показателя).
Значение1 — это вычисленное поле СКД.
Период — это имя группировки минимального периода, т. е. в нашем случае месяц.

Что делает это выражение:

  • Суммирует все значения внутри периода (т. е. в нашем случае значение показателя для всех существующих подразделений).
  • Получает массив этих сумм.
  • Вычисляет среднее из значений массива.

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

Сначала вычислим выражение без агрегации:

ВЫЧИСЛИТЬВЫРАЖЕНИЕ
СГРУППИРОВКОЙМАССИВ
("СУММА(Значение1)", "Период")

Система выдаст массив значений:

Расчет итогов и формирование отчета по ключевым показателям

Почему важна СУММА(Значение1), почему нельзя взять просто Значение1?

  • Потому что нужно посчитать сумму численностей по подразделениям внутри периода, и получить число 7 в январе, 9 в феврале и 9 в марте.
  • На уровне же квартала мы видим массив помесячных значений.

Теперь применим агрегацию:

СРЕДНЕЕ(
ВЫЧИСЛИТЬВЫРАЖЕНИЕ
СГРУППИРОВКОЙМАССИВ
("СУММА(Значение1)", "Период")
)

И получим то, что нам нужно:

Расчет итогов и формирование отчета по ключевым показателям

Теперь рассмотрим формульный показатель с двумя способами расчета итога по периоду: по средней и по формуле.

Возьмем показатель Удельная прибыль, которая в минимальном значении будет выражена формулой «Прибыль/Численность».

Формула в терминах кодов показателей и языка запросов выглядит так:

ВЫБОР 
   КОГДА а000000739 = 0
   ТОГДА 0
   ИНАЧЕ а000000736 / а000000739
КОНЕЦ

Применим к ней способ расчета по периоду «Среднее»:

СРЕДНЕЕ(ВЫЧИСЛИТЬ
ВЫРАЖЕНИЕСГРУППИРОВКОЙ
МАССИВ(" ВЫБОР КОГДА СУММА(а000000739) = 0 ТОГДА 0 ИНАЧЕ СУММА(а000000736)/СУММА(а000000739) КОНЕЦ ", "Период"))

Получим следующий результат

Расчет итогов и формирование отчета по ключевым показателям

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

В то же время удельная прибыль за квартал рассчитана как средняя из помесячных.

Как задать способ расчета, чтобы на уровне квартала удельная прибыль считалась тоже по формуле, из прибыли за квартал / численность за квартал?

Вот так:

ВЫБОР
	КОГДА СРЕДНЕЕ
(ВЫЧИСЛИТЬВЫРАЖЕНИЕ
СГРУППИРОВКОЙМАССИВ
("СУММА(а000000739)", "Период")) = 0 ТОГДА 0 ИНАЧЕ СУММА(а000000736) / СРЕДНЕЕ(ВЫЧИСЛИТЬ
ВЫРАЖЕНИЕСГРУППИРОВКОЙМАССИВ
("СУММА(а000000739)", "Период")) КОНЕЦ

Что изменилось: мы применили агрегационную функцию вычисления итога не к результату вычисления формулы, а к каждому базовому показателю — свою; и только потом рассчитали формульный показатель.

Результат:

Расчет итогов и формирование отчета по ключевым показателям

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

516 = 4300 / 8,333333

Какой способ расчета применять — решает аналитик, в зависимости от решаемых им задач, и настраивает это в справочнике ключевых показателей; важно, что мы можем предоставить любой способ расчета, и отчет будет работать корректно при любом наборе и порядке группировок.

Отдельный случай — средний накопительный итог. Что означает среднее накопительное? Что значение за февраль = (значение за январь + значение за февраль) / 2, значение за март = (значение за январь + значение за февраль + значение за март) / 3, и так далее. Для вычисления такого выражения мы прибегаем к функции ВЫЧИСЛИТЬВЫРАЖЕНИЕ:

ВЫЧИСЛИТЬВЫРАЖЕНИЕ(
"СУММА(Значение1) / КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Период)", "Период",, "Первая", "Текущая"),

Где:

Значение1 — это вычисленное поле СКД.
Период — это имя группировки минимального периода, т. е. в нашем случае месяц.

Что делает выражение:

  • Суммирует все значения за периоды с первого по текущий в нашей группировке.
  • Считает количество этих периодов.
  • И делит одно на другое.

Важно! Понятие «первая» и «текущая» группировки существуют только в пределах родительской группировки. Это является на текущий момент ограничением платформенного механизма СКД в «1С». То есть, если у нас есть группировка «Квартал», то «Апрель» для нее станет первым, а не четвертым.

В нашем примере средненакопительный итог рассчитывается для формульного показателя, поэтому выражение будет сложнее.

Давайте попробуем написать так:

ВЫЧИСЛИТЬВЫРАЖЕНИЕ("СУММА
(
 ВЫБОР
    КОГДА
        а000000739 = 0 
    ТОГДА 0 
    ИНАЧЕ а000000736 /а000000739 
    КОНЕЦ
 )", "Период",,"Первая", "Текущая")
 /
 ВЫЧИСЛИТЬВЫРАЖЕНИЕ
("КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Период)", "Период",, "Первая", "Текущая")

Получим следующий результат:

Расчет итогов и формирование отчета по ключевым показателям

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

Финальное выражение выглядит очень громоздко, однако решает поставленную задачу: суммирует базовые показатели только в пределах периода и формула вычисляется корректно на всех уровнях.

ВЫЧИСЛИТЬВЫРАЖЕНИЕ(""
            ВЫБОР КОГДА СУММА(ВЫБОР КОГДА Период = ДАТАВРЕМЯ(2020, 1, 1) ТОГДА а000000739 ИНАЧЕ 0 КОНЕЦ)=0 ТОГДА 0 ИНАЧЕ СУММА(ВЫБОР КОГДА Период = ДАТАВРЕМЯ(2020, 1, 1) ТОГДА а000000736 ИНАЧЕ 0 КОНЕЦ)/СУММА(ВЫБОР КОГДА Период = ДАТАВРЕМЯ(2020, 1, 1) ТОГДА а000000739 ИНАЧЕ 0 КОНЕЦ) КОНЕЦ""
            ,""Период"",, ""Первая"", ""Текущая"")
    +
        ВЫЧИСЛИТЬВЫРАЖЕНИЕ(""
            ВЫБОР КОГДА СУММА(ВЫБОР КОГДА Период = ДАТАВРЕМЯ(2020, 2, 1) ТОГДА а000000739 ИНАЧЕ 0 КОНЕЦ)=0 ТОГДА 0 ИНАЧЕ СУММА(ВЫБОР КОГДА Период = ДАТАВРЕМЯ(2020, 2, 1) ТОГДА а000000736 ИНАЧЕ 0 КОНЕЦ)/СУММА(ВЫБОР КОГДА Период = ДАТАВРЕМЯ(2020, 2, 1) ТОГДА а000000739 ИНАЧЕ 0 КОНЕЦ) КОНЕЦ""
            ,""Период"",, ""Первая"", ""Текущая"")
    +
        ВЫЧИСЛИТЬВЫРАЖЕНИЕ(""
            ВЫБОР КОГДА СУММА(ВЫБОР КОГДА Период = ДАТАВРЕМЯ(2020, 3, 1) ТОГДА а000000739 ИНАЧЕ 0 КОНЕЦ)=0 ТОГДА 0 ИНАЧЕ СУММА(ВЫБОР КОГДА Период = ДАТАВРЕМЯ(2020, 3, 1) ТОГДА а000000736 ИНАЧЕ 0 КОНЕЦ)/СУММА(ВЫБОР КОГДА Период = ДАТАВРЕМЯ(2020, 3, 1) ТОГДА а000000739 ИНАЧЕ 0 КОНЕЦ) КОНЕЦ""
            ,""Период"",, ""Первая"", ""Текущая"")
) 
/ ВЫЧИСЛИТЬВЫРАЖЕНИЕ(""КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Период)"", ""Период"",, ""Первая"", ""Текущая"")

В каждом складываемом блоке мы принудительно ограничиваем расчет одним (текущим) месяцем, и заставляем СКД просуммировать базовые показатели внутри каждого месяца и рассчитать удельную по формуле внутри этого месяца.

Получаем результат:

Расчет итогов и формирование отчета по ключевым показателям

Он нас полностью удовлетворяет.

Остался последний шаг: добиться расчета средненакопительного показателя на уровне квартала (или года).

Здесь придется прибегнуть к отдельному ресурсу, который будет рассчитан именно на уровне этих группировок и способ расчета у него для средненакопительного показателя будет совпадать с обычным средним: в самом деле, средненакопительный итог за квартал это ни что иное, как среднее за квартал!

Добавляем в схему компоновки ресурс для группировок «Квартал» и «Год»:

Расчет итогов и формирование отчета по ключевым показателям

Выражение для нашего средненакопительного показателя в этом ресурсе будет выглядеть следующим образом:

СРЕДНЕЕ(ВЫЧИСЛИТЬ
ВЫРАЖЕНИЕСГРУППИРОВКОЙ
МАССИВ(" ВЫБОР КОГДА СУММА(а000000739) = 0 ТОГДА 0 ИНАЧЕ СУММА(а000000736)/СУММА(а000000739) КОНЕЦ ", "Период"))

И мы получим следующий результат:

Расчет итогов и формирование отчета по ключевым показателям

Каждый показатель разобран нами в примере, у каждого свой способ расчета на разных уровнях. Теперь мы можем посмотреть, как выглядит финальное выражение ресурса в СКД для нашего несложного демонстрационного примера:

ВЫБОР
    КОГДА Не КлючевойПоказатель.Рассчитываемый
        ТОГДА
            ВЫБОР
                КОГДА КлючевойПоказатель.ИтогПоГоризонтали = Значение(Перечисление.ИтогиГруппировок.Среднее)
                ТОГДА
СРЕДНЕЕ(ВЫЧИСЛИТЬВЫРАЖЕНИЕСГРУППИРОВКОЙМАССИВ("СУММА(Значение1)", "Период, КлючевойПоказатель"))
                ИНАЧЕ
                   СУММА(Значение1)
                КОНЕЦ
    КОГДА КлючевойПоказатель.Код = "000000740"
        ТОГДА
            ВЫБОР
	     КОГДА СРЕДНЕЕ(ВЫЧИСЛИТЬВЫРАЖЕНИЕСГРУППИРОВКОЙМАССИВ("СУММА(а000000739)", "Период")) = 0
	    ТОГДА 0
	    ИНАЧЕ СУММА(а000000736) / СРЕДНЕЕ(ВЫЧИСЛИТЬВЫРАЖЕНИЕСГРУППИРОВКОЙМАССИВ("СУММА(а000000739)", "Период"))
             КОНЕЦ

    КОГДА КлючевойПоказатель.Код = "000000741"
        ТОГДА
  (
        ВЫЧИСЛИТЬВЫРАЖЕНИЕ("
            ВЫБОР КОГДА СУММА(ВЫБОР КОГДА Период = ДАТАВРЕМЯ(2020, 1, 1) ТОГДА а000000739 ИНАЧЕ 0 КОНЕЦ)=0 ТОГДА 0 ИНАЧЕ СУММА(ВЫБОР КОГДА Период = ДАТАВРЕМЯ(2020, 1, 1) ТОГДА а000000736 ИНАЧЕ 0 КОНЕЦ)/СУММА(ВЫБОР КОГДА Период = ДАТАВРЕМЯ(2020, 1, 1) ТОГДА а000000739 ИНАЧЕ 0 КОНЕЦ) КОНЕЦ"
            ,"Период",, "Первая", "Текущая")
    +
        ВЫЧИСЛИТЬВЫРАЖЕНИЕ("
            ВЫБОР КОГДА СУММА(ВЫБОР КОГДА Период = ДАТАВРЕМЯ(2020, 2, 1) ТОГДА а000000739 ИНАЧЕ 0 КОНЕЦ)=0 ТОГДА 0 ИНАЧЕ СУММА(ВЫБОР КОГДА Период = ДАТАВРЕМЯ(2020, 2, 1) ТОГДА а000000736 ИНАЧЕ 0 КОНЕЦ)/СУММА(ВЫБОР КОГДА Период = ДАТАВРЕМЯ(2020, 2, 1) ТОГДА а000000739 ИНАЧЕ 0 КОНЕЦ) КОНЕЦ"
            ,"Период",, "Первая", "Текущая")
    +
        ВЫЧИСЛИТЬВЫРАЖЕНИЕ("
            ВЫБОР КОГДА СУММА(ВЫБОР КОГДА Период = ДАТАВРЕМЯ(2020, 3, 1) ТОГДА а000000739 ИНАЧЕ 0 КОНЕЦ)=0 ТОГДА 0 ИНАЧЕ СУММА(ВЫБОР КОГДА Период = ДАТАВРЕМЯ(2020, 3, 1) ТОГДА а000000736 ИНАЧЕ 0 КОНЕЦ)/СУММА(ВЫБОР КОГДА Период = ДАТАВРЕМЯ(2020, 3, 1) ТОГДА а000000739 ИНАЧЕ 0 КОНЕЦ) КОНЕЦ"
            ,"Период",, "Первая", "Текущая")
) / ВЫЧИСЛИТЬВЫРАЖЕНИЕ("КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Период)", "Период",, "Первая", "Текущая")
       
    ИНАЧЕ
        0
КОНЕЦ

Выводы

Какие выводы можно сделать из статьи?

Во-первых, построение отчетов с разноприродными показателями в одной колонке — задача очень сложная. Поскольку требуются различные подходы к подсчету итогов как по горизонтали, так и по вертикали.

Во-вторых, для такого подсчета необходим подходящий инструмент. И тут возникает соблазн перейти от декларативного инструмента к алгоритмическому. Но это не позволит добиться необходимой устойчивости расчета итогов при смене группировок. И в большинстве случаев разработчики просто отказываются от вариативности группировок в пользу фиксированного набора и порядка следования.

В-третьих, и это самое главное, СКД является мощнейшим инструментом не только в платформе «1С», но и среди альтернативных систем построения отчетов, например, электронных таблиц.

Вопросы производительности и использования различных инструментов в разработке на 1С:Предприятии мы рассматривали в предыдущих статьях от экспертов «1С‑Рарус»:

Подписывайтесь на наш канал в Telegram и почтовые рассылки, чтобы не пропустить новые статьи.

Вы читаете статью из рубрики:
От экспертов «1С-Рарус»

Есть вопросы по статье? Задайте их нам!

Рассылка «Новости компании»: узнавайте о новых продуктах, услугах и спецпредложениях

Посмотреть все рассылки «1С‑Рарус»

Поле не должно быть пустым
Электронная почта указывается только латиницей, обязательно должен присутствовать знак @, доменное имя не может быть короче двух символов

Посмотреть все рассылки «1С-Рарус»

Иконка «Предупреждение» Отправляя эту форму, Вы соглашаетесь с Политикой конфидециальности и даете согласие на обработку персональных данных компанией «1С-Рарус»

Заинтересованы в сотрудничестве?
Нужна консультация?
Свяжитесь с нами!