Как настроить макет СКД в 1С: решаем проблемы с границами таблицы, шириной колонок и оформлением итогов

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

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

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

Причина проблемы: почему «разъезжается» таблица отчета

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

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

Решение 1: Настройка независимого формата строк в макете

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

Выполним следующие шаги:

  1. Откроем схему компоновки данных и перейдем на вкладку «Макеты», где нарисованы ваши области заголовка и подвала.
  2. Выделим полностью те строки макета, которые относятся к пользовательскому заголовку. Важно выделять строки целиком, нажимая на их номера на левой серой панели табличного документа.
  3. Нажмем правой кнопкой мыши по выделенной области и выберем в контекстном меню путь: «Таблица» ➔ «Формат строк» ➔ «Назначить формат строк».
  4. После выполнения этой операции у выделенных строк появится своя собственная, независимая шкала колонок (сверху над таблицей появится дополнительная линейка). Теперь мы можем свободно регулировать ширину колонок в этой области, и это никак не отразится на ширине полей основной таблицы отчета.
  5. Повторим аналогичную операцию для строк подвала отчета, содержащих подписи руководства.

В качестве альтернативного или дополняющего метода мы можем использовать простое объединение ячеек. Если заголовок отчета — это просто текстовая строка с названием организации, не обязательно дробить макет на множество мелких колонок. Достаточно написать текст в первой левой ячейке макета и объединить ее с соседними ячейками по горизонтали на всю ширину предполагаемого отчета. Объединенная ячейка не диктует ширину колонкам, расположенным под ней.

Решение 2: Как вернуть границы таблицы при использовании макета «Без оформления»

Когда мы устанавливаем в настройках отчета параметр Макет оформления в значение Без оформления, платформа полностью отключает все стандартные стили. Вместе со стилями пропадают и границы ячеек (сетка), из-за чего таблица становится нечитаемой. Рассмотрим два способа решения этой проблемы.

Способ А: Локальное отключение оформления для заголовка

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

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

Способ Б: Восстановление границ через условное оформление

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

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

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


// Создаем новый элемент условного оформления программы
НовыйЭлемент = КомпоновщикНастроек.Настройки.УсловноеОформление.Элементы.Добавить();

// Настраиваем границы ячеек (тонкая сплошная линия)
СтильГраницы = Новый Граница(ТипЛинииЯчейкиТабличногоДокумента.Тонкая, Новый Цвет(128, 128, 128));
НовыйЭлемент.Оформление.УстановитьЗначениеПараметра("Граница", СтильГраницы);

// Указываем, что оформление применяется ко всем полям
НовыйЭлемент.Использование = Истина;

Решение 3: Оформление системного поля «Номер по порядку» (№ п/п)

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

Разобрать этот шаг очень просто:

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

Решение 4: Как настроить границы для строк «Итого»

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

Путь 1: Использование области использования в Условном оформлении

Это наиболее быстрый и стандартный метод, не требующий написания кода или создания новых макетов:

  1. Откроем элемент условного оформления, который задает границы для числовых показателей (ресурсов).
  2. Перейдем на вкладку «Область использования» (она расположена рядом с вкладками «Условие» и «Оформляемые поля»).
  3. По умолчанию там могут быть включены не все флажки. Нам необходимо принудительно установить флаги напротив следующих пунктов:
    • «В общем итоге» — чтобы рамка выводилась в самой нижней строке общих итогов отчета.
    • «В итоге группировки» — чтобы рамка отображалась в промежуточных итогах по группам.
    • «В группировке» — для обычных строк с детальными данными.

Путь 2: Создание выделенного макета для итогов

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

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

Заключение

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

← На главную