В процессе работы с типовыми отчетами в системе 1С:Предприятие 8.3 пользователи часто сталкиваются с необходимостью не просто видеть список данных, но и быстро анализировать пограничные значения, такие как максимальная и минимальная сумма в рамках всего отчета или конкретной группы. Стандартный подход подразумевает обращение к программисту для изменения макета в конфигураторе, однако Система компоновки данных (СКД) предоставляет мощный функционал для решения этой задачи в пользовательском режиме.
В этой статье мы подробно разберем, как добавить новые колонки с экстремумами, используя механизм пользовательских полей. Мы научимся настраивать агрегатные функции и правильно размещать их в структуре отчета, чтобы они отображались корректно.
Для того чтобы добавить в отчет расчетные данные, которых изначально нет в схеме компоновки, мы воспользуемся функционалом Пользовательских полей. Рассмотрим пошагово, как получить к ним доступ и как правильно настроить формулы.
Прежде всего, нам необходимо открыть расширенные настройки отчета. Для этого в форме любого типового отчета (например, «Продажи» или «Остатки товаров») нажмем кнопку Еще, выберем пункт Прочее, а затем — Изменить вариант.... Именно в этом окне скрыты наиболее мощные инструменты визуализации данных, доступные конечному пользователю.
В открывшемся окне настройки варианта отчета перейдем на вкладку Пользовательские поля. Здесь мы можем создавать поля двух типов:
ВЫБОР КОГДА в запросах).Разберем процесс создания колонки с максимальным значением. Нажмем кнопку Добавить и выберем Новое поле-выражение. Проанализируем настройки, которые нам необходимо заполнить:
Заголовок поля: укажем понятное название, например, Максимальная сумма.
Выражение детальных записей: здесь мы указываем, что должно выводиться в обычных строках отчета. Если мы хотим видеть общее максимальное значение в каждой строке, нам потребуется использовать агрегатную функцию. Впишем следующий код:
МАКСИМУМ(Сумма)
Выражение итогов: это критически важный параметр. Чтобы система корректно рассчитала максимум не только по текущей строке (что бессмысленно для детальной записи), но и по всей группе или всему отчету, необходимо продублировать или уточнить формулу в поле итогов. Для большинства задач достаточно вписать ту же функцию:
МАКСИМУМ(Сумма)
Аналогичным образом создадим второе пользовательское поле для минимума, назвав его Минимальная сумма и использовав функцию МИНИМУМ(Сумма). Проанализируем ситуацию: теперь у нас есть два новых виртуальных поля, которые ведут себя как полноценные ресурсы отчета.
Создать поля — это только половина дела. Теперь нам нужно заставить систему вывести их в виде отдельных колонок. Для этого выполним следующие действия:
Настройки (в том же окне Изменить вариант).Выбранные поля.Пользовательские поля.Максимальная сумма и Минимальная сумма в правый список.Сумма).Важно помнить, что если в отчете используются группировки (например, по Контрагенту или Номенклатуре), пользовательские поля будут рассчитываться в контексте каждой группировки. Если мы хотим видеть максимум по всей организации, эти поля должны быть добавлены в состав «Выбранных полей» на самом верхнем уровне иерархии — в корневом элементе Отчет.
Рассмотрим ситуацию, когда пользователь добавил поле, но в каждой строке видит то же самое значение, что и в колонке Сумма. Это происходит потому, что на уровне Детальных записей (самых нижних строк отчета) контекстом функции МАКСИМУМ является одна единственная текущая строка. Максимум из одного числа равен самому этому числу.
Чтобы решить эту проблему и увидеть глобальный максимум в каждой строке, можно воспользоваться более сложными конструкциями в выражении, если платформа это позволяет (функция ВычислитьВыражение), но в пользовательском режиме чаще всего достаточно выводить эти данные в строках итогов по группам. Для этого на вкладке Выбранные поля можно настроить состав колонок отдельно для группировок и отдельно для детальных записей.
Выясним причину, по которой иногда вывод отдельной колонки может быть неудобен. Если отчет и так перегружен данными, лишние столбцы сделают его нечитаемым. В таком случае мы можем подсветить максимальные и минимальные значения прямо в основной колонке Сумма.
Для этого в меню Изменить вариант перейдем на вкладку Условное оформление:
Цвет фона — зеленый для максимума и красный для минимума.Сумма Равно [Максимальная сумма]. Здесь в качестве значения сравнения мы выбираем созданное нами пользовательское поле.Таким образом, мы получим наглядный отчет, где самые важные цифры выделены цветом, что значительно ускоряет визуальный анализ данных без изменения структуры таблицы.
Проанализируем ограничения данного метода. Пользовательские поля работают только в отчетах, построенных на базе Системы компоновки данных. Если вы используете очень старую конфигурацию на обычных формах или отчет с фиксированным макетом, вкладка Пользовательские поля в настройках может отсутствовать. В этом случае без конфигуратора действительно не обойтись.
Также стоит учитывать производительность. Если отчет содержит сотни тысяч строк, вычисление дополнительных агрегатов «на лету» в пользовательских полях может замедлить время формирования отчета. Рекомендуется использовать эти настройки при наложении фильтров по периоду или по конкретным аналитическим разрезам.
В заключение отметим, что освоение работы с Изменить вариант и Пользовательскими полями превращает обычного пользователя в опытного аналитика, способного самостоятельно адаптировать информационную систему под свои текущие задачи без привлечения дополнительных ресурсов на разработку.