Как изменить расположение колонки итогов по ресурсам в СКД

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

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

Способ 1: Использование стандартных настроек расположения итогов

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

Разберем по шагам, где найти эту настройку:

  1. Откроем схему компоновки данных и перейдем на закладку Настройки.
  2. Выберем в дереве настроек самый верхний элемент (Отчет) или конкретную таблицу, для которой нужно изменить положение итогов.
  3. В нижней части экрана перейдем на вкладку Другие настройки.
  4. Найдем параметр Расположение итогов по горизонтали.

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

Этот метод идеально подходит, если нужно просто поменять «лево» и «право» для суммирующих показателей. Однако, если нужно поставить итог «посередине» между двумя конкретными ресурсами, этот способ не поможет.

Способ 2: Создание итоговой колонки через вычисляемые поля

Если нам требуется нестандартное расположение (например: Ресурс1, Итог, Ресурс2), наиболее эффективным методом будет отказ от использования стандартного механизма итогов в пользу вычисляемых полей. Рассмотрим ситуацию, когда у нас есть «Количество» и «Цена», и мы хотим видеть «Сумму» (как итог произведения) строго между ними или в определенном месте списка.

Проанализируем алгоритм действий:

  1. Перейдем на закладку Вычисляемые поля в СКД.
  2. Добавим новое поле, назовем его, например, ИтоговаяСумма.
  3. В поле Выражение укажем формулу расчета. Например: Количество * Цена.
  4. На закладке Ресурсы добавим это поле и укажем выражение агрегации: Сумма(ИтоговаяСумма).
  5. В настройках отчета на вкладке Выбранные поля расположим наше поле ИтоговаяСумма в нужном порядке среди других полей.

В этом случае 1С будет воспринимать это поле как обычный ресурс. Мы сможем двигать его вверх и вниз по списку, тем самым располагая «итог» в любом месте среди колонок. При этом в Других настройках параметр Расположение итогов по горизонтали можно установить в значение Нет, чтобы система не дублировала данные в конце отчета.

Способ 3: Разделение ресурсов по группировкам колонок

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

Посмотрим на пример структуры:


Отчет
  Таблица
    Колонки
      Группировка1 (например, Склад)
      Группировка2 (например, ТипТовара)

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

Способ 4: Использование макетов оформления

Если ни один из вышеперечисленных способов не позволяет добиться желаемого визуального результата (например, требуется сложная шапка с объединением ячеек, где итог вписан в специфическую область), нам придется использовать Макеты.

Рассмотрим, как это работает:

  1. На закладке Макеты добавим новый макет.
  2. Выберем тип макета: Макет группировки или Макет заголовка группировки.
  3. В области макета (сетка, похожая на Excel) нарисуем структуру колонок так, как она должна выглядеть.
  4. Укажем параметры для каждой ячейки, связывая их с полями набора данных.

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

Способ 5: Фиктивные группировки

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

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

"" КАК ПустаяГруппировка

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

Резюме

Выбор метода зависит от конкретной задачи:

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

← На главную