Как вывести значения ресурсов напротив определённых строк в СКД

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

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

Анализируем причину смещения ресурсов

Прежде всего, проанализируем ситуацию: почему в СКД ресурсы по умолчанию могут выводиться некорректно? Стандартный механизм компоновки стремится вывести ресурс в каждой строке иерархии, где этот ресурс доступен. Если структура отчета сложная (например, используется несколько уровней группировок или иерархический справочник), значения могут «всплывать» на уровень выше в качестве итогов, создавая визуальный дискомфорт.

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

Метод 1. Настройка расположения ресурсов в «Других настройках»

Это самый быстрый способ изменить визуальное представление данных без написания кода или создания сложных макетов. Перейдем на закладку «Настройки», выберем нужный вариант отчета и откроем вкладку «Другие настройки».

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

  1. Расположение ресурсов. По умолчанию установлено значение «Горизонтально». Если мы выберем значение «Вертикально», ресурсы будут выводиться друг под другом. Однако для решения проблемы «смещения» часто помогает вариант «В отдельных колонках». Это жестко фиксирует позицию ресурса относительно сетки отчета.
  2. Расположение полей группировок. Если установить значение «Отдельно», это разделит иерархию строк и колонки с суммами, что поможет избежать визуального наложения ресурсов на заголовки группировок.
  3. Автопозиция ресурсов. Попробуем переключить этот параметр. Иногда его отключение позволяет вручную управлять порядком вывода через «Выбранные поля» каждой конкретной группировки.

Метод 2. Управление видимостью заголовков и полей без макетов

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

Во-первых, в настройках набора данных на закладке «Вычисляемые поля» или прямо в списке «Выбранные поля» можно установить для ресурса пустое имя заголовка (просто поставить пробел в поле «Заголовок»).

Во-вторых, в «Других настройках» можно найти параметры «Выводить параметры» и «Выводить заголовки полей». Установив их в значение «Не выводить», мы очистим отчет от лишней технической информации, сохранив при этом стандартную верстку ресурсов.

Метод 3. Использование функции «ВычислитьВыражение» в ресурсах

Если нам нужно, чтобы сумма выводилась строго в определенной строке (например, только напротив «Валовой прибыли»), мы можем использовать логику непосредственно в выражении ресурса. Перейдем на закладку «Ресурсы» и вместо стандартного Сумма(Поле) пропишем условие.

Рассмотрим пример кода для поля выражения:


Выбор 
    Когда ИмяГруппировки() = "ВаловаяПрибыль" 
    Тогда Сумма(СуммаОборот) 
    Иначе 0 
Конец

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

Метод 4. Тонкая настройка через «Выбранные поля» группировок

Выясним причину, по которой ресурсы «размазываются» по всем уровням. По умолчанию в каждой группировке включено «Автополе», которое тянет за собой все ресурсы, определенные в корне настроек. Чтобы это исправить, выполним следующие действия:

  1. Зайдем в настройки конкретной группировки (строки), где ресурс выводиться НЕ должен.
  2. Перейдем на закладку «Выбранные поля».
  3. Снимем флажок «Использовать родительские настройки».
  4. Удалим «Автополе» и добавим только те поля, которые действительно нужны в этой строке. Если ресурсы здесь не нужны — просто не добавляем их.

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

Метод 5. Исправление ошибок при работе с макетами ресурсов

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

Разберем их различия:

Если ресурс выводится криво при использовании макета, скорее всего, не указано имя группировки. В макете ресурсов нужно четко прописать, для какой именно группировки строк (например, «Номенклатура») и какой группировки колонок (если они есть) предназначен этот макет. Если оставить поля группировок пустыми, макет применится ко всем ячейкам, что и приводит к визуальному хаосу.

Метод 6. Использование условного оформления для очистки отчета

Иногда проще не запрещать вывод ресурса, а «спрятать» его, когда он не нужен. Посмотрим на алгоритм настройки Условного оформления:

  1. Перейдем на закладку «Условное оформление».
  2. Добавим новый элемент. В оформлении установим параметр «Текст» (пустая строка) или «Видимость» (Ложь).
  3. В условии укажем, когда это оформление должно работать. Например: СистемныеПоля.Уровень В Группировке <> 2.
  4. В области использования выберем только наши поля ресурсов.

Это визуально «очистит» лишние значения, сохранив при этом целостность структуры отчета и корректность итогов по вертикали.

Заключение

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

← На главную