При разработке отчетов в системе компоновки данных (СКД) часто возникает задача визуального контроля отклонений. Например, нам нужно подсветить ячейки, где показатели прихода за месяц превышают среднее значение по выборке. Однако стандартные настройки условного оформления в 1С не всегда работают так, как ожидает пользователь, особенно когда дело касается сложных группировок или итогов по таблицам.
Давайте разберем, почему возникают сложности и как реализовать этот механизм корректно, используя возможности встроенного языка выражений СКД.
Когда вы добавляете условие в «Условное оформление» напрямую, система СКД пытается применить его к текущему контексту вывода. В таблице с группировками по месяцам каждое пересечение (строка/колонка) считается отдельным узлом. Если вы просто сравниваете поле ресурса с агрегатной функцией Среднее, система может пытаться вычислить среднее в рамках конкретной ячейки или итоговой строки, что приводит к неверным результатам.
Для решения этой задачи мы пойдем по пути явного вычисления среднего показателя, независимого от текущей группировки, и последующего сравнения этого значения с данными конкретной ячейки.
Чтобы сравнивать значение с общим средним, нам нужно сначала получить это «среднее» в виде отдельного ресурса или вычисляемого поля. Лучше всего воспользоваться функцией ВычислитьВыражение, которая позволяет выйти за пределы контекста текущей группировки.
Перейдите на вкладку Вычисляемые поля в настройках СКД и добавьте новое поле СреднееПриход. В поле Выражение напишите формулу, которая корректно считает среднее по вашему периоду. Например:
ВычислитьВыражение("Среднее(СуммаПриход)", "ОбщийИтог")
Эта формула сообщает СКД: «Возьми среднее значение по полю СуммаПриход, рассчитанное по всему набору данных без учета текущей группировки».
Теперь, когда у нас есть базовое среднее значение, нам нужно вычислить разницу (отклонение). Это значительно упростит работу механизма условного оформления. Создадим еще одно вычисляемое поле Отклонение:
СуммаПриход - СреднееПриход
Теперь значение этого поля будет показывать, насколько текущий результат «превышает» или «не дотягивает» до среднего. Если результат больше нуля — значение выше среднего, если меньше — ниже.
Перейдем непосредственно к визуализации. В настройках отчета выберите раздел Условное оформление и добавьте новый элемент:
Отклонение > 0. Это позволит системе автоматически подсвечивать все ячейки, которые удовлетворяют вашему требованию.СуммаПриход).При работе с несколькими группировками в одной таблице важно учитывать область применения правила. Если вы хотите, чтобы подсветка работала на разных уровнях иерархии:
Среднее(СуммаПриход) по-прежнему кажется неверным, обратите внимание на типы данных. Иногда нужно использовать функцию ЕСТЬNULL, чтобы пустые значения или нули не искажали результат деления.ВычислитьВыражение — это мощный инструмент, который требует четкого указания области вычислений. Если вам нужно среднее именно по месяцам, а не «вообще по всей таблице», уточните второй параметр функции, указав имя нужной группировки в настройках СКД.Используя этот подход, вы перекладываете математическую логику сравнения с механизма оформления на уровень вычисляемых полей. Это делает отчет более предсказуемым, а настройку — прозрачной для дальнейшей поддержки.
Попробуйте реализовать эти шаги в вашем отчете, и вы увидите, что проблема с «некорректным расчетом среднего» исчезнет, так как вы явно зададите контекст для вычислений.