Почему в отчете СКД колонки смещаются вправо при добавлении новой группировки и как это исправить?

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

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

Причина 1: Дублирование выбранных полей в иерархии настроек

Рассмотрим механизм работы выбранных полей в СКД. В настройках отчета существует строгая иерархия: есть верхний уровень (уровень всего Отчета) и уровни отдельных Группировок. Проанализируем типичную ошибку: программист добавляет поля (например, Сумма, Количество) на уровне всего отчета, а затем, создав новую группировку, заходит в её настройки и снова добавляет те же самые поля вручную.

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

Решение:

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

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

Причина 2: Параметр «Расположение выбранных полей»

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

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

  1. Выберем уровень Отчет в настройках.
  2. Перейдем на вкладку Другие настройки.
  3. Найдем параметр Расположение выбранных полей.
  4. Установим значение Авто или Вместе с группировкой.

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

Причина 3: Неправильное использование групп в выбранных полях

Посмотрим на ситуацию, когда поля объединяются в логические группы. В СКД можно создать папку (группу) внутри выбранных полей. У этой группы есть свойство Тип расположения. Если вы случайно создали группу с типом Горизонтально внутри настроек конкретной группировки, это принудительно заставит систему отрисовывать эти поля в ряд, игнорируя общую структуру отчета.

Разберем, как это проверить:

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

Причина 4: Роль ресурсов и вычисляемых полей

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

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

Пошаговый алгоритм исправления «поехавшего» отчета

Представим, что мы имеем дело с отчетом, где группировка «Организация» выводится нормально, а «Статья» сдвигает всё вправо. Выполним следующие действия вместе:

  1. Очистка настроек группировки: Зайдем в настройки группировки «Статья», перейдем в выбранные поля. Если там список полей (Сумма, Количество и т.д.), удалим их все. Нажмем правую кнопку мыши и выберем Новое авто поле. Это вернет управление колонками на уровень выше.
  2. Проверка параметров вывода: На уровне Отчет в «Других настройках» найдем Расположение группировок. Попробуем установить Начало вместо Авто, чтобы четко зафиксировать иерархию слева.
  3. Расположение реквизитов: Если «Статья» — это не просто группировка, а вы выводите её дополнительные реквизиты (например, «Код статьи»), убедитесь, что параметр Расположение реквизитов установлен в значение Вместе с владельцем. Если стоит Отдельно, код статьи уедет в новую колонку справа от названия.
  4. Проверка типа группировки: Убедимся, что «Статья» добавлена как Детальные записи или Группировка строк, а не как Группировка колонок. В консоли компоновки данных это легко проверить по иерархическому дереву: группировки колонок находятся в правой части структуры, и их добавление всегда расширяет отчет вправо.

Пример настройки программного кода (если отчет формируется программно)

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


// Получаем настройки отчета
Настройки = Отчет.КомпоновщикНастроек.Настройки;

// Находим нужную группировку по имени или индексу
ГруппировкаСтатья = Настройки.Структура[0].Структура[0]; // Пример вложенности

// Очищаем выбранные поля группировки
ГруппировкаСтатья.ВыбранныеПоля.Элементы.Очистить();

// Добавляем авто-поле, чтобы наследовались поля отчета
АвтоПоле = ГруппировкаСтатья.ВыбранныеПоля.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
АвтоПоле.Поле = Новый ПолеКомпоновкиДанных("Авто");
АвтоПоле.Использование = Истина;

Этот код гарантирует, что группировка не будет создавать собственных колонок, а воспользуется общим списком полей отчета. Проанализировав ситуацию, можно сделать вывод: в 90% случаев проблема «уезда» колонок решается именно через установку Авто в выбранных полях группировки и проверку Других настроек на уровне отчета.

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

← На главную