Общая шапка, слитые ячейки и склейка полей в отчёте на СКД

· 9 мин

Содержание

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

Способы одинаково работают в 1С 8.3 для своих отчётов и для типовых, доработанных расширением. Большинство не требует ни строки кода.

С чего начать: где живут настройки макета СКД

Схема компоновки открывается двойным щелчком по макету отчёта в Конфигураторе. Нам нужны три вкладки:

  • 🧩 Настройки — структура отчёта, выбранные поля, «Другие настройки». Здесь решается 80% задач с объединением.
  • 🎨 Условное оформление (подвкладка внутри «Настроек») — внешний вид ячеек по условию.
  • 📐 Макеты — ручная разметка областей табличного документа, если стандартного вывода мало.

Пользователь в режиме Предприятия может сделать часть того же самого. В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) откройте отчёт, нажмите Настройки и переключите вид на расширенный. Появятся вкладки с полями, группировками и оформлением.

Перед правкой определитесь, где хранится результат. Настройки варианта в Предприятии сохраняются только для варианта отчёта. Изменения схемы в Конфигураторе меняют отчёт для всех. Для типового отчёта схему правят через расширение, а не снятием с поддержки.

Как СКД строит таблицу

СКД не знает слова «объединить ячейки» в привычном экселевском смысле. Она собирает таблицу из:

  1. группировок (строки, колонки, детальные записи);
  2. выбранных полей и их групп;
  3. ресурсов (итоговых полей);
  4. параметров вывода и оформления.

Поэтому «объединение колонок» решается одним из четырёх путей. Сравним их сразу:

ЗадачаСпособНужен кодГде настраивается
Общий заголовок над 2–5 колонкамиГруппа выбранных полейНетВыбранные поля
Две колонки → одна (артикул + наименование)Группа «Вместе» или вычисляемое полеНетВыбранные поля / Вычисляемые поля
Поля группировок в одной колонке с отступомРасположение полей группировокНетДругие настройки
Слить одинаковые ячейки по вертикалиПараметр оформления «Объединять по вертикали»НетУсловное оформление
Шапка сложной формы, нестандартная печатная формаМакет группировки / заголовкаНет, но нужен табличный редакторМакеты
Объединение по правилу, которое СКД не умеетОбласть().Объединить() после выводаДаМодуль отчёта

Горизонтальное объединение колонок под общим заголовком

Классическая задача: в ведомости по остаткам есть колонки «Количество» и «Сумма» для начала периода, прихода, расхода и конца. Нужна двухуровневая шапка: «Начальный остаток» над парой колонок.

Шаг за шагом

  1. Откройте Настройки → Выбранные поля у нужной группировки или у отчёта в целом.
  2. В командной панели списка полей добавьте новую группу. В дереве появится узел «Новая группа».
  3. Перетащите в него поля КоличествоНачальныйОстаток и СуммаНачальныйОстаток.
  4. Выделите группу и задайте ей заголовок: «Начальный остаток».
  5. Свойство Расположение у группы оставьте «Авто» или «Горизонтально».
  6. Повторите для прихода, расхода и конечного остатка.
  7. Сформируйте отчёт.

Результат — шапка в две строки. Верхняя строка с заголовком группы растянута над её колонками. Нижняя — заголовки самих полей.

Заголовок у полей внутри группы можно сократить до «Кол-во» и «Сумма». Заголовок поля задаётся в свойствах выбранного поля. Ширина колонок от этого уменьшится, и отчёт влезет на альбомный лист.

Значения расположения группы

РасположениеЧто получится
АвтоПлатформа сама выберет вариант. В таблице обычно — горизонтально
ГоризонтальноПоля группы идут соседними колонками под общей шапкой
ВертикальноПоля группы стоят друг под другом внутри одной колонки
ВместеЗначения полей выводятся в одной ячейке через разделитель

Вариант «Вместе» — самый быстрый способ склеить, например, код и наименование контрагента в одну колонку без вычисляемых полей.

Склейка через вычисляемое поле

Когда нужен свой формат («Артикул — Наименование, ед. изм.»), создайте вычисляемое поле на одноимённой вкладке схемы. Выражение пишется на языке выражений СКД:

Представление(Номенклатура.Артикул) + " — " + Представление(Номенклатура)

Затем добавьте поле в выбранные вместо двух исходных. Если строку удобнее получить в запросе, соберите её там:

ВЫБРАТЬ
	Остатки.Номенклатура,
	Остатки.Номенклатура.Артикул + " — " + ПРЕДСТАВЛЕНИЕ(Остатки.Номенклатура) КАК АртикулИНаименование,
	Остатки.КоличествоОстаток
ИЗ
	РегистрНакопления.ТоварыНаСкладах.Остатки КАК Остатки

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

Вертикальное объединение: группировки и одинаковые значения

Вторая частая просьба: «Склад» в отчёте повторяется в каждой строке, а нужно, чтобы он стоял один раз на весь блок. Решается это двумя уровнями настроек.

Группировка вместо детальных записей

Если «Склад» стоит в детальных записях, вынесите его в отдельную группировку верхнего уровня:

  1. На вкладке Настройки в структуре добавьте группировку по полю Склад.
  2. Внутрь неё поместите группировку по Номенклатура или детальные записи.
  3. Уберите Склад из выбранных полей вложенного уровня.

Склад будет выводиться строкой-заголовком, а под ним — товары.

Расположение полей группировок

Как именно встанут поля группировки, задаёт параметр Другие настройки → Расположение полей группировок:

ЗначениеКак выглядит
АвтоОбычно все уровни в одной колонке с отступами
ВместеПоля всех группировок в одной общей колонке, иерархия видна по отступу
ОтдельноКаждая группировка в своей колонке, как в сводной таблице
Отдельно и только в итогахСвоя колонка, но значение выводится только в строке итога группировки
Без отступаОдна колонка, без смещения вложенных уровней

Для «одного склада на блок» обычно хватает «Отдельно»: склад окажется в своей колонке слева. Вариант «Отдельно и только в итогах» убирает повторы внутри блока — склад показан один раз в строке своей группировки.

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

Слияние одинаковых ячеек по вертикали

Если повторы должны превратиться именно в одну высокую ячейку, используйте параметр оформления «Объединять по вертикали»:

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

Соседние ячейки колонки с одинаковым значением сольются в одну. Есть и парный параметр «Объединять по горизонтали» для соседних колонок с одинаковым текстом.

Слияние срабатывает только для одинаковых значений, стоящих подряд. Отсортируйте данные по этому полю — иначе склады разобьются на куски.

Слияние по условию: условное оформление

Условное оформление позволяет включать объединение не всегда, а по правилу. Пара примеров из практики.

Объединение только в строках итогов

Нужно, чтобы в итоговой строке группировки текст «Итого по складу» растянулся на несколько колонок, а в строках товаров колонки оставались раздельными:

  1. Создайте элемент условного оформления.
  2. В свойствах элемента ограничьте, где он применяется: в группировке, в иерархической группировке, в общем итоге. Отключите применение в остальных местах.
  3. В оформляемые поля добавьте соседние колонки.
  4. Включите «Объединять по горизонтали» и задайте общий «Текст».

Объединение по значению поля

Ещё один сценарий — пустые колонки у услуг. У товара есть «Склад» и «Ячейка», у услуги их нет. Условие: Номенклатура.ВидНоменклатуры = Услуга. Оформление: «Текст» = «Услуга, хранения нет», плюс «Объединять по горизонтали» для этих двух колонок. Вместо двух пустых клеток читатель видит одну с пояснением.

Что именно вам нужно объединить?

Оформление заголовков, итогов и макеты

Общие итоги и их место

В «Других настройках» есть параметры, которые влияют на то, как колонки и итоги стыкуются:

  • 📍 Расположение общих итогов — в начале, в конце, в начале и конце, не выводить;
  • ↔️ для таблиц с группировками в колонках — отдельно горизонтальное и вертикальное расположение общих итогов;
  • 📊 Расположение ресурсов — ресурсы горизонтально или вертикально. При горизонтальном размещении заголовок колонки-группировки сам растягивается над всеми ресурсами.

Последний пункт удобен в кросс-таблицах. Сделайте элемент структуры «Таблица», в «Строки» поставьте Номенклатура, в «Колонки» — Склад. Ресурсы «Количество» и «Сумма» окажутся под каждым складом, а название склада встанет общей объединённой ячейкой.

Макет заголовка группировки

Когда стандартная шапка не похожа на нужный бланк, на вкладке Макеты добавляют свой макет:

  1. Выберите тип: макет группировки, макет заголовка группировки, макет поля или макет полей итога.
  2. Привяжите его к нужной группировке в структуре.
  3. В появившемся табличном документе нарисуйте область: объедините ячейки командой «Объединить» табличного редактора, задайте рамки и шрифт.
  4. В ячейки вставьте параметры и на панели параметров макета задайте им выражения, например Склад или Сумма.

Макет полностью подменяет стандартный вывод этой области. Значит, если поле добавят в выбранные позже, в макете его не будет — макет придётся дорисовать.

Макеты ломают «Настройки» пользователя: он может добавить колонку, а в отчёте она не появится. Используйте макеты для печатных форм с фиксированной шапкой, а не для аналитических отчётов, которые настраивают сами пользователи.

Слияние ячеек кодом после вывода

Иногда правило объединения сложное: например, слить ячейки шапки, если колонки-периоды попали в один квартал. Тогда отчёт выводят как обычно, а в модуле объекта отчёта дорабатывают готовый табличный документ.

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)

	СтандартнаяОбработка = Ложь;

	Настройки = КомпоновщикНастроек.ПолучитьНастройки();
	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
	МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);

	Процессор = Новый ПроцессорКомпоновкиДанных;
	Процессор.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки);

	ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
	ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
	ПроцессорВывода.Вывести(Процессор);

	// Сливаем ячейки строки 1 с колонки 2 по колонку 4 в одну
	Область = ДокументРезультат.Область(1, 2, 1, 4);
	Область.Объединить();
	Область.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр;

КонецПроцедуры

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

При СтандартнаяОбработка = Ложь вывод полностью на вашей совести. В типовых отчётах на БСП так не делают: там правку вносят через расширение и события подсистемы вариантов отчётов. Проверьте после этого расшифровку — она должна по-прежнему открываться по двойному щелчку.

Почему колонки не объединились: разбор ошибок

Каждая ситуация — с причиной и исправлением.

Диагностика: выберите симптом

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

Частые вопросы

Можно ли объединить колонки в отчёте без доступа к Конфигуратору?
Да. В типовых конфигурациях на БСП откройте Настройки отчёта, переключите вид на расширенный и сгруппируйте выбранные поля там. Результат сохранится в варианте отчёта.
Чем группа полей «Вместе» отличается от вычисляемого поля?
«Вместе» выводит значения через стандартный разделитель и не требует выражений. Вычисляемое поле даёт свой формат текста, но по нему нельзя отобрать элемент справочника.
Сохранится ли объединение при сохранении отчёта в PDF?
Да. PDF повторяет табличный документ один в один, вместе со слитыми ячейками и рамками.
Почему настройка «Объединять по вертикали» не действует на ресурсы?
Ресурсы считаются для каждой строки отдельно и редко совпадают подряд. Слияние обычно применяют к полям группировок и измерениям, а не к суммам.
Как сделать трёхуровневую шапку?
Вложите группу в группу: «Обороты» → «Приход» → «Количество», «Сумма». Каждый уровень группы даёт свою строку шапки.