Как вывести разные ресурсы в одной колонке отчета 1С СКД

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

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

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

Способ 1. Настройка одного ресурса для разных группировок (свойство «Рассчитывать по...»)

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

Рассмотрим пошаговый алгоритм настройки этого механизма:

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

Проанализируем пример настройки трех строк для одного ресурса СуммаОплаты:

Строка 1 (для уровня «Заказ»):

Выражение: Сумма(СуммаЗаказа)
Рассчитывать по: Заказ

Строка 2 (для уровня «Реализация»):

Выражение: Сумма(СуммаРеализации)
Рассчитывать по: Реализация

Строка 3 (для общих итогов):

Выражение: Сумма(СуммаЗаказа) + Сумма(СуммаРеализации)
Рассчитывать по: Общий итог

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

Способ 2. Использование логического условия ВЫБОР в запросе или выражении

Если источники данных разделены по типам документов или другим признакам прямо в детальных записях, мы можем объединить расчет логическим выражением ВЫБОР КОГДА ... ТОГДА ... КОНЕЦ.

Выясним, как это выглядит в тексте запроса схемы компоновки данных:


ВЫБРАТЬ
    Источник.Регистратор КАК Регистратор,
    ВЫБОР
        КОГДА Источник.Регистратор ССЫЛКА Документ.ЗаказПокупателя
            ТОГДА Источник.СуммаЗаказа
        КОГДА Источник.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
            ТОГДА Источник.СуммаРеализации
        ИНАЧЕ 0
    КОНЕЦ КАК СуммаОплаты
ИЗ
    РегистрНакопления.Взаиморасчеты КАК Источник

После этого созданное поле СуммаОплаты достаточно просто добавить на вкладку «Ресурсы» с обычной агрегатной функцией Сумма(СуммаОплаты). Все данные соберутся в единый столбец без разбиения на две разные колонки.

Аналогичное выражение ВЫБОР можно прописать и на вкладке «Вычисляемые поля» или прямо в поле «Выражение» на вкладке «Ресурсы», если логика проверки зависит от значения какого-либо реквизита контекста.

Способ 3. Создание пользовательских полей типа «Выбор»

Бывают ситуации, когда логику отчета нужно изменить в режиме «1С:Предприятие» без вмешательства в конфигуратор. В таком случае мы можем применить Пользовательские поля.

Посмотрим на порядок действий:

  1. В режиме настройки отчета перейдем на вкладку «Пользовательские поля».
  2. Создадим новое поле типа «Новое поле выбора...».
  3. Зададим необходимые условия (например, если поле ТипДокумента равно "Заказ", то выбирается ОплаченоПоЗаказу, иначе ОплаченоПоРеализации).
  4. Перейдем в настройки выбранных полей группировки и выведем сформированное пользовательское поле в качестве итоговой колонки.

Способ 4. Разделение состава выбранных полей по группировкам

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

Проанализируем пошагово:

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

При выводе структуры типа «Иерархический список» система будет отображать соответствующие ресурсы в контексте своих группировок.

Способ 5. Подмена выводимого значения через «Условное оформление»

Если один ресурс подменяется другим чисто визуально (без участия в расчете сложного итогового значения), удобнее всего использовать оформление с параметром Текст.

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

  1. Перейдем на вкладку «Условное оформление» в настройках отчета или конкретной группировки.
  2. Добавим элемент оформления и установим параметр «Текст».
  3. В качестве значения параметра «Текст» выберем поле или ресурс, значение которого должно отображаться в данной ячейке (вместо константной строки в 1С можно подставлять значения других полей).
  4. В секции «Условие» укажем критический признак подмены (например, ВидОперации = Значение(Перечисление.ВидыОпераций.Возврат)).
  5. В секции «Оформляемые поля» выберем исходный ресурс, содержимое которого мы видоизменяем.

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

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

Рассмотрим порядок настройки:

  1. Перейдем на вкладку «Макеты» схемы компоновки данных.
  2. Добавим «Макет поля» для необходимого ресурса или «Макет группировки».
  3. Зададим область ячеек и определим параметры макета.
  4. В выражении параметра укажем логику выбора ресурса, используя язык выражений СКД (например, с применением встроенных функций ВычислитьВыражение() или стандартных условий ВЫБОР).

Резюме и рекомендации

Мы рассмотрели основные подходы к выводу различных ресурсов в одной колонке СКД. Выбор конкретного метода зависит от архитектуры отчета:

← На главную