Как добавить новые колонки в макет СКД и исправить сдвиг данных относительно шапки?

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

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

Выясним причину: почему смещаются данные при ручной правке макета

В СКД существует два принципиально разных подхода к формированию внешнего вида отчета:

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

Если в схеме компоновки создан пользовательский макет только для шапки (тип макета «Макет заголовка» или «Макет заголовка группировки»), а строки данных формируются автоматически, возникает конфликт сеток. СКД выводит строки данных строго по порядку и количеству полей, указанных на вкладке Настройки в разделе Выбранные поля. Если количество и ширина колонок в нарисованной шапке перестают совпадать с числом выводимых ресурсов и группировок, весь блок строк сдвигается относительно заголовков.

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


// Ошибочный вариант: поля не сгруппированы и не просуммированы
ВЫБРАТЬ
    План.Подразделение КАК Подразделение,
    ЕСТЬNULL(ВТПлан.ПланТпДо150, 0) / 1000 КАК ПланТпДо150
ИЗ
    ВТПлан КАК ВТПлан
СГРУППИРОВАТЬ ПО
    План.Подразделение,
    План.ПланТпДо150

// Корректный вариант: ресурс агрегируется функцией СУММА
ВЫБРАТЬ
    План.Подразделение КАК Подразделение,
    СУММА(ЕСТЬNULL(ВТПлан.ПланТпДо150, 0) / 1000) КАК ПланТпДо150
ИЗ
    ВТПлан КАК ВТПлан
СГРУППИРОВАТЬ ПО
    План.Подразделение

Способ 1. Создание полного макета со связыванием параметров данных

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

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

Способ 2. Синхронизация структуры колонок без создания макета строк

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

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

Обязательный сброс настроек отчета в режиме пользователя

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

После внесения изменений в схему компоновки обязательно выполним следующие действия в режиме «1С:Предприятие»:

  1. Откроем форму отчета.
  2. Нажмем кнопку Еще (или меню настроек).
  3. Выберем пункт Прочее → Установить стандартные настройки.
  4. Сформируем отчет заново и убедимся, что данные встали точно под свои заголовки.

Альтернативный вариант: формирование сложной шапки через папки

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

  1. На вкладке Настройки в списке Выбранные поля нажмем Добавить папку.
  2. Укажем заголовок папки (он станет общей объединенной шапкой верхнего уровня).
  3. В свойствах папки укажем Расположение: Горизонтально или В отдельной колонке.
  4. Перетащим нужные ресурсы внутрь созданной папки.

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

← На главную