Как в СКД вывести ресурсы в две или более отдельные вертикальные колонки?

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

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

В этой статье мы подробно разберем, как решить этот «ребус» несколькими способами, от простых настроек структуры до манипуляций с макетами и текстом запроса.

Способ 1: Использование структуры «Таблица» с искусственной группировкой

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

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

  1. Перейдем на вкладку «Настройки» в схеме компоновки данных.
  2. Вместо обычного «Детальные записи» или простой группировки создадим структуру типа «Таблица».
  3. В Строки таблицы добавим нашу основную группировку (например, Изделие или Номенклатура).
  4. В Колонки таблицы нам необходимо добавить группировку, которая разделит наши ресурсы. Если в данных нет естественного разделителя, мы можем создать вычисляемое поле НомерГруппы.
  5. В настройках выбранных полей для первой колонки (где НомерГруппы = 1) выберем первые 10 ресурсов, а для второй — остальные.
  6. Самое важное: в настройках этой таблицы (или конкретной группировки колонок) установим параметр «Расположение ресурсов» в значение «Вертикально».

Благодаря такой структуре СКД создаст для каждого значения из колонок (Группа 1 и Группа 2) свой вертикальный «стек» ресурсов. В итоге мы получим две аккуратные параллельные колонки ресурсов для каждой строки изделия.

Способ 2: Трансформация данных в запросе (Метод Unpivot)

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

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


ВЫБРАТЬ
    Ссылка КАК Изделие,
    "Группа 1" КАК ИмяГруппы,
    "Ресурс 1" КАК ИмяРесурса,
    Ресурс1 КАК Значение
ИЗ
    Справочник.Изделия
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
    Ссылка,
    "Группа 1",
    "Ресурс 2",
    Ресурс2
ИЗ
    Справочник.Изделия
// ... и так далее для всех ресурсов

После такой трансформации настройка отчета становится тривиальной:

  1. В колонки отчета выводим поле ИмяГруппы.
  2. В строки выводим Изделие и вложенную группировку ИмяРесурса.
  3. В ресурсы добавляем поле Значение (с функцией СУММА).

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

Способ 3: Работа с макетами оформления

Когда требуется специфический визуальный вид (например, как упоминалось в сообщении 18 форума — чтобы заголовки ресурсов шли отдельным столбцом внутри строки), стандартных галочек настроек будет недостаточно. Рассмотрим использование макетов.

Проанализируем шаги по созданию кастомного вывода:

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

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

Способ 4: Группировка выбранных полей с вертикальным расположением

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

  1. В настройках отчета перейдем на вкладку «Выбранные поля».
  2. Создадим новую группу полей (нажав правую кнопку мыши — «Сгруппировать поля»). Назовем ее «Первая колонка».
  3. Создадим вторую группу — «Вторая колонка».
  4. Перетащим в них соответствующие ресурсы.
  5. Для каждой группы в колонке «Тип группы» установим значение «Вертикально».
  6. При этом общая настройка расположения ресурсов в отчете должна оставаться «Горизонтально» (или «Авто»).

Важный нюанс: Чтобы СКД не пыталась объединить эти группы в одну, убедитесь, что у групп заданы разные заголовки, а внутри групп нет идентичных полей, которые система могла бы «схлопнуть».

Выясним причину типичных ошибок

Почему иногда ресурсы все равно выводятся неправильно?

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

← На главную