При разработке сложных аналитических отчетов в 1С на базе Системы компоновки данных (СКД) часто возникает ситуация, когда количество ресурсов исчисляется десятками. Стандартный вывод в одну строку делает отчет нечитаемым (он не помещается по ширине на экран или лист А4), а стандартная настройка «Расположение ресурсов: Вертикально» сваливает все показатели в одну сверхдлинную колонку. Нам же часто требуется «золотая середина»: разделить ресурсы на две или три логические группы и вывести их параллельными вертикальными столбцами.
В этой статье мы подробно разберем, как решить этот «ребус» несколькими способами, от простых настроек структуры до манипуляций с макетами и текстом запроса.
Это один из самых элегантных методов, не требующий написания сложного кода. Рассмотрим ситуацию: у нас есть 20 ресурсов, которые нужно разделить на «Группу 1» и «Группу 2» по 10 штук в каждой. Проанализируем, как заставить СКД воспринимать их как разные колонки в рамках одной строки.
Для реализации этого метода выполним следующие шаги:
Изделие или Номенклатура).НомерГруппы.НомерГруппы = 1) выберем первые 10 ресурсов, а для второй — остальные.Благодаря такой структуре СКД создаст для каждого значения из колонок (Группа 1 и Группа 2) свой вертикальный «стек» ресурсов. В итоге мы получим две аккуратные параллельные колонки ресурсов для каждой строки изделия.
Если настройки интерфейса СКД кажутся слишком запутанными, мы можем подготовить данные прямо в запросе. Разберем ситуацию, когда мы превращаем широкую строку с множеством колонок в несколько узких строк, которые потом легко группируются.
Посмотрим на пример кода в запросе:
ВЫБРАТЬ
Ссылка КАК Изделие,
"Группа 1" КАК ИмяГруппы,
"Ресурс 1" КАК ИмяРесурса,
Ресурс1 КАК Значение
ИЗ
Справочник.Изделия
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
Ссылка,
"Группа 1",
"Ресурс 2",
Ресурс2
ИЗ
Справочник.Изделия
// ... и так далее для всех ресурсов
После такой трансформации настройка отчета становится тривиальной:
ИмяГруппы.Изделие и вложенную группировку ИмяРесурса.Значение (с функцией СУММА).Этот метод гарантирует, что вы получите ровно столько колонок, сколько различных значений ИмяГруппы вы создали в запросе. Это максимально гибкий подход, позволяющий выводить заголовки ресурсов отдельной колонкой рядом со значениями.
Когда требуется специфический визуальный вид (например, как упоминалось в сообщении 18 форума — чтобы заголовки ресурсов шли отдельным столбцом внутри строки), стандартных галочек настроек будет недостаточно. Рассмотрим использование макетов.
Проанализируем шаги по созданию кастомного вывода:
ЗаголовокРесурса1, во второй — ЗначениеРесурса1, в третьей (соседняя колонка) — ЗаголовокРесурса11, в четвертой — ЗначениеРесурса11.Использование макетов позволяет обойти любые ограничения СКД по расположению полей, так как вы фактически «рисуете» дизайн отчета вручную, сохраняя при этом мощь системы компоновки для расчета итогов.
Рассмотрим еще один «хитрый» способ, который часто называют «магией галочек». В СКД можно группировать сами выбранные поля.
Важный нюанс: Чтобы СКД не пыталась объединить эти группы в одну, убедитесь, что у групп заданы разные заголовки, а внутри групп нет идентичных полей, которые система могла бы «схлопнуть».
Почему иногда ресурсы все равно выводятся неправильно?
Группа1.Ресурс1, СКД по умолчанию пытается создать иерархическую шапку. Если при этом включено вертикальное расположение ресурсов на уровне всего отчета, иерархия может нарушиться.Подводя итог, можно сказать, что СКД — чрезвычайно мощный инструмент, и решение задачи «ресурсы в две колонки» зависит от того, насколько глубоко вы готовы менять запрос или макет. Для большинства случаев идеально подходит Способ 4 (группировка выбранных полей) или Способ 1 (использование структуры таблицы). Они позволяют сохранить читаемость отчета и рационально использовать место на странице.