Как в СКД вывести числовое значение в детальные записи при выполнении условия по общей сумме отчета?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

В процессе разработки отчетов на системе компоновки данных (СКД) часто возникают бизнес-задачи, требующие «сквозной» аналитики. Например, нам необходимо, чтобы во всех строках отчета отображалось определенное число (например, «15»), но только в том случае, если общая сумма показателя Стоимость по всему отчету превышает установленный порог (например, 200 000).

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

Использование функции ВычислитьВыражение для анализа общих итогов

Самый эффективный и элегантный способ решить эту задачу — воспользоваться функцией ВычислитьВыражение. Эта функция позволяет нам «выйти» за пределы текущей строки и обратиться к агрегатным значениям всей выборки или конкретной группировки.

Для реализации поставленной задачи выполним следующие шаги:

  1. Откройте настройки отчета в СКД и перейдите на вкладку Вычисляемые поля.
  2. Создайте новое поле, например, с именем БонусноеЧисло.
  3. В колонке Выражение введите формулу, которая будет анализировать общий итог по полю Стоимость.

Рассмотрим пример кода, который нужно использовать в выражении:


ВЫБОР
    КОГДА ВычислитьВыражение("Сумма(Стоимость)", , "ОбщийИтог") > 200000 
    ТОГДА 15 
    ИНАЧЕ 0 
КОНЕЦ

Почему это работает?

Функция ВычислитьВыражение принимает три основных параметра: само выражение для агрегации, группировку, по которой нужно считать, и тип итога. Использование строки "ОбщийИтог" в третьем параметре заставляет систему проигнорировать текущую строку и вычислить сумму Стоимость по всей таблице данных. Таким образом, в каждой детальной записи мы получаем результат сравнения, который позволяет нам вывести нужное число.

Альтернативный способ: работа с параметрами

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

Рассмотрим, как правильно настроить передачу данных:

  1. Добавьте в запрос параметр, например, &Число.
  2. Включите его в текст запроса, чтобы он стал частью выборки: ВЫБРАТЬ Ссылка, &Число КАК ЗначениеИзПараметра ИЗ Справочник.Номенклатура.
  3. Перейдите на вкладку Параметры в СКД. Установите для параметра &Число значение, которое должно отображаться в строках.
  4. Если это значение должно меняться в зависимости от условий, используйте возможности Настроек или программное изменение параметров в модуле отчета.

Важные замечания по работе с данными в СКД

Разбирая подобные задачи, мы часто сталкиваемся с вопросом: «Почему не использовать Условное оформление?» Важно понимать, что Условное оформление предназначено исключительно для визуального изменения ячеек (цвет, шрифт, формат). Оно не умеет проводить математические расчеты сумм по всему отчету.

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

Основные советы при работе с вычисляемыми полями:

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

← На главную