Общая шапка, слитые ячейки и склейка полей в отчёте на СКД
Содержание
Чтобы объединить колонки в СКД под одним заголовком, откройте вкладку Настройки → Выбранные поля, создайте группу полей, перетащите в неё нужные колонки и задайте группе заголовок. В отчёте над этими колонками появится общая ячейка шапки. Если же нужно слить сами данные двух полей в одну колонку, у группы выставляют расположение «Вместе» или собирают вычисляемое поле.
Способы одинаково работают в 1С 8.3 для своих отчётов и для типовых, доработанных расширением. Большинство не требует ни строки кода.
С чего начать: где живут настройки макета СКД
Схема компоновки открывается двойным щелчком по макету отчёта в Конфигураторе. Нам нужны три вкладки:
- 🧩 Настройки — структура отчёта, выбранные поля, «Другие настройки». Здесь решается 80% задач с объединением.
- 🎨 Условное оформление (подвкладка внутри «Настроек») — внешний вид ячеек по условию.
- 📐 Макеты — ручная разметка областей табличного документа, если стандартного вывода мало.
Пользователь в режиме Предприятия может сделать часть того же самого. В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) откройте отчёт, нажмите Настройки и переключите вид на расширенный. Появятся вкладки с полями, группировками и оформлением.
Перед правкой определитесь, где хранится результат. Настройки варианта в Предприятии сохраняются только для варианта отчёта. Изменения схемы в Конфигураторе меняют отчёт для всех. Для типового отчёта схему правят через расширение, а не снятием с поддержки.
Как СКД строит таблицу
СКД не знает слова «объединить ячейки» в привычном экселевском смысле. Она собирает таблицу из:
- группировок (строки, колонки, детальные записи);
- выбранных полей и их групп;
- ресурсов (итоговых полей);
- параметров вывода и оформления.
Поэтому «объединение колонок» решается одним из четырёх путей. Сравним их сразу:
| Задача | Способ | Нужен код | Где настраивается |
|---|---|---|---|
| Общий заголовок над 2–5 колонками | Группа выбранных полей | Нет | Выбранные поля |
| Две колонки → одна (артикул + наименование) | Группа «Вместе» или вычисляемое поле | Нет | Выбранные поля / Вычисляемые поля |
| Поля группировок в одной колонке с отступом | Расположение полей группировок | Нет | Другие настройки |
| Слить одинаковые ячейки по вертикали | Параметр оформления «Объединять по вертикали» | Нет | Условное оформление |
| Шапка сложной формы, нестандартная печатная форма | Макет группировки / заголовка | Нет, но нужен табличный редактор | Макеты |
| Объединение по правилу, которое СКД не умеет | Область().Объединить() после вывода | Да | Модуль отчёта |
Горизонтальное объединение колонок под общим заголовком
Классическая задача: в ведомости по остаткам есть колонки «Количество» и «Сумма» для начала периода, прихода, расхода и конца. Нужна двухуровневая шапка: «Начальный остаток» над парой колонок.
Шаг за шагом
- Откройте
Настройки → Выбранные поляу нужной группировки или у отчёта в целом. - В командной панели списка полей добавьте новую группу. В дереве появится узел «Новая группа».
- Перетащите в него поля
КоличествоНачальныйОстатокиСуммаНачальныйОстаток. - Выделите группу и задайте ей заголовок: «Начальный остаток».
- Свойство Расположение у группы оставьте «Авто» или «Горизонтально».
- Повторите для прихода, расхода и конечного остатка.
- Сформируйте отчёт.
Результат — шапка в две строки. Верхняя строка с заголовком группы растянута над её колонками. Нижняя — заголовки самих полей.
Заголовок у полей внутри группы можно сократить до «Кол-во» и «Сумма». Заголовок поля задаётся в свойствах выбранного поля. Ширина колонок от этого уменьшится, и отчёт влезет на альбомный лист.
Значения расположения группы
| Расположение | Что получится |
|---|---|
| Авто | Платформа сама выберет вариант. В таблице обычно — горизонтально |
| Горизонтально | Поля группы идут соседними колонками под общей шапкой |
| Вертикально | Поля группы стоят друг под другом внутри одной колонки |
| Вместе | Значения полей выводятся в одной ячейке через разделитель |
Вариант «Вместе» — самый быстрый способ склеить, например, код и наименование контрагента в одну колонку без вычисляемых полей.
Склейка через вычисляемое поле
Когда нужен свой формат («Артикул — Наименование, ед. изм.»), создайте вычисляемое поле на одноимённой вкладке схемы. Выражение пишется на языке выражений СКД:
Представление(Номенклатура.Артикул) + " — " + Представление(Номенклатура)
Затем добавьте поле в выбранные вместо двух исходных. Если строку удобнее получить в запросе, соберите её там:
ВЫБРАТЬ
Остатки.Номенклатура,
Остатки.Номенклатура.Артикул + " — " + ПРЕДСТАВЛЕНИЕ(Остатки.Номенклатура) КАК АртикулИНаименование,
Остатки.КоличествоОстаток
ИЗ
РегистрНакопления.ТоварыНаСкладах.Остатки КАК Остатки
Склеенная строка теряет ссылку. По такой колонке не работает обычная расшифровка и отбор по элементу справочника. Исходное поле Номенклатура оставьте в наборе данных, даже если не выводите его.
Вертикальное объединение: группировки и одинаковые значения
Вторая частая просьба: «Склад» в отчёте повторяется в каждой строке, а нужно, чтобы он стоял один раз на весь блок. Решается это двумя уровнями настроек.
Группировка вместо детальных записей
Если «Склад» стоит в детальных записях, вынесите его в отдельную группировку верхнего уровня:
- На вкладке
Настройкив структуре добавьте группировку по полюСклад. - Внутрь неё поместите группировку по
Номенклатураили детальные записи. - Уберите
Складиз выбранных полей вложенного уровня.
Склад будет выводиться строкой-заголовком, а под ним — товары.
Расположение полей группировок
Как именно встанут поля группировки, задаёт параметр Другие настройки → Расположение полей группировок:
| Значение | Как выглядит |
|---|---|
| Авто | Обычно все уровни в одной колонке с отступами |
| Вместе | Поля всех группировок в одной общей колонке, иерархия видна по отступу |
| Отдельно | Каждая группировка в своей колонке, как в сводной таблице |
| Отдельно и только в итогах | Своя колонка, но значение выводится только в строке итога группировки |
| Без отступа | Одна колонка, без смещения вложенных уровней |
Для «одного склада на блок» обычно хватает «Отдельно»: склад окажется в своей колонке слева. Вариант «Отдельно и только в итогах» убирает повторы внутри блока — склад показан один раз в строке своей группировки.
Похожий параметр Расположение реквизитов управляет реквизитами полей группировки: выводить ли их вместе с полем или в своей колонке.
Слияние одинаковых ячеек по вертикали
Если повторы должны превратиться именно в одну высокую ячейку, используйте параметр оформления «Объединять по вертикали»:
- Откройте
Настройки → Условное оформлениеи добавьте элемент. - В «Оформляемых полях» укажите колонку, например
Склад. - Условие не задавайте — тогда правило действует всегда.
- В оформлении включите «Объединять по вертикали».
Соседние ячейки колонки с одинаковым значением сольются в одну. Есть и парный параметр «Объединять по горизонтали» для соседних колонок с одинаковым текстом.
Слияние срабатывает только для одинаковых значений, стоящих подряд. Отсортируйте данные по этому полю — иначе склады разобьются на куски.
Слияние по условию: условное оформление
Условное оформление позволяет включать объединение не всегда, а по правилу. Пара примеров из практики.
Объединение только в строках итогов
Нужно, чтобы в итоговой строке группировки текст «Итого по складу» растянулся на несколько колонок, а в строках товаров колонки оставались раздельными:
- Создайте элемент условного оформления.
- В свойствах элемента ограничьте, где он применяется: в группировке, в иерархической группировке, в общем итоге. Отключите применение в остальных местах.
- В оформляемые поля добавьте соседние колонки.
- Включите «Объединять по горизонтали» и задайте общий «Текст».
Объединение по значению поля
Ещё один сценарий — пустые колонки у услуг. У товара есть «Склад» и «Ячейка», у услуги их нет. Условие: Номенклатура.ВидНоменклатуры = Услуга. Оформление: «Текст» = «Услуга, хранения нет», плюс «Объединять по горизонтали» для этих двух колонок. Вместо двух пустых клеток читатель видит одну с пояснением.
Оформление заголовков, итогов и макеты
Общие итоги и их место
В «Других настройках» есть параметры, которые влияют на то, как колонки и итоги стыкуются:
- 📍
Расположение общих итогов— в начале, в конце, в начале и конце, не выводить; - ↔️ для таблиц с группировками в колонках — отдельно горизонтальное и вертикальное расположение общих итогов;
- 📊
Расположение ресурсов— ресурсы горизонтально или вертикально. При горизонтальном размещении заголовок колонки-группировки сам растягивается над всеми ресурсами.
Последний пункт удобен в кросс-таблицах. Сделайте элемент структуры «Таблица», в «Строки» поставьте Номенклатура, в «Колонки» — Склад. Ресурсы «Количество» и «Сумма» окажутся под каждым складом, а название склада встанет общей объединённой ячейкой.
Макет заголовка группировки
Когда стандартная шапка не похожа на нужный бланк, на вкладке Макеты добавляют свой макет:
- Выберите тип: макет группировки, макет заголовка группировки, макет поля или макет полей итога.
- Привяжите его к нужной группировке в структуре.
- В появившемся табличном документе нарисуйте область: объедините ячейки командой «Объединить» табличного редактора, задайте рамки и шрифт.
- В ячейки вставьте параметры и на панели параметров макета задайте им выражения, например
СкладилиСумма.
Макет полностью подменяет стандартный вывод этой области. Значит, если поле добавят в выбранные позже, в макете его не будет — макет придётся дорисовать.
Макеты ломают «Настройки» пользователя: он может добавить колонку, а в отчёте она не появится. Используйте макеты для печатных форм с фиксированной шапкой, а не для аналитических отчётов, которые настраивают сами пользователи.
Слияние ячеек кодом после вывода
Иногда правило объединения сложное: например, слить ячейки шапки, если колонки-периоды попали в один квартал. Тогда отчёт выводят как обычно, а в модуле объекта отчёта дорабатывают готовый табличный документ.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
Процессор = Новый ПроцессорКомпоновкиДанных;
Процессор.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(Процессор);
// Сливаем ячейки строки 1 с колонки 2 по колонку 4 в одну
Область = ДокументРезультат.Область(1, 2, 1, 4);
Область.Объединить();
Область.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр;
КонецПроцедуры
Метод Область(Верх, Лево, Низ, Право) принимает номера строк и колонок табличного документа. Их удобно искать не жёстко, а по тексту: пройдите по ячейкам шапки и найдите нужный заголовок через ДокументРезультат.Область(НомерСтроки, НомерКолонки).Текст.
При СтандартнаяОбработка = Ложь вывод полностью на вашей совести. В типовых отчётах на БСП так не делают: там правку вносят через расширение и события подсистемы вариантов отчётов. Проверьте после этого расшифровку — она должна по-прежнему открываться по двойному щелчку.
Почему колонки не объединились: разбор ошибок
Каждая ситуация — с причиной и исправлением.
Ещё одна неочевидная деталь. В кросс-таблице объединённая шапка над ресурсами появляется только при горизонтальном расположении ресурсов. Если ресурсы стоят вертикально, каждый ресурс займёт свою строку, и общей ячейки не будет.
Частые вопросы
Можно ли объединить колонки в отчёте без доступа к Конфигуратору?
Настройки отчёта, переключите вид на расширенный и сгруппируйте выбранные поля там. Результат сохранится в варианте отчёта.