1с скд сгруппировать колонки общий заголовок

Обновлено: 04.07.2024

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

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

  • Отчета в целом
  • Для таблицы
  • Для группировки (строк или колонок)

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

Итак, рассмотрим параметры по-порядку:

Макет оформления

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

Количество записей

Параметр доступен только для группировок. В том числе для группировок строк и колонок таблицы. Если параметр задан, то выводятся не все записи группировки, а только указанное количество

Процент записей

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

Тип макета

Параметр доступен только для группировки. Не доступен для группировок строк и колонок таблицы. Отвечает за направление вывода ячеек записи группировки.

  • Авто. Работает как горизонтально
  • Горизонтально. Ячейки записи выводятся горизонтально
  • Вертикально. Ячейки записи выводятся вертикально

Расположение итогов

Данный параметр имеет отношение к группировке. Чтобы понять смысл работы этого параметра нужно представить запись по группировке как итог по подчиненным группировкам (даже в том случае если подчиненных нет). Варианты значения параметра:

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

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

Интересный параметр, который влияет на расположение подчиненной группировки относительно родительской. Причем действует этот параметр на группировки строк(или просто группировки без таблицы) и группировки по колонок по-разному.

Для группировок строк:

  • Вместе. Работает как значение по умолчанию. Дочерняя группировка выводится под родительской группировкой в одной колонке
  • Отдельно. Дочерняя группировка выводится в отдельной колонке. Значение родительских группировок дублируются для подчиненной.
  • Отдельно и только в итогах. Дочерняя группировка выводится в отдельной колонке. Значение родительских группировок не дублируется для подчиненной


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

  • Вместе. Колонка текущей группировки выводится в той же строке что и родительская
  • Отдельно. Колонка текущей группировки выводится на новой строке. Значение родительских группировок повторяется
  • Отдельно и только в итогах. Колонка текущей группировки выводится на новой строке. Значение родительских группировок не повторяется.


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

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

  • Нет. Полностью исключает записи данной группировки
  • Конец. В отличие от параметра «Расположение итого» такое значение на самом деле отключает вывод начальной записи

Если у группировки действуют оба параметра «Расположение группировок» и «Расположение итогов», то результат их действия объединяется через «ИЛИ».

Расположение реквизитов

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

  • Вместе – все реквизиты выводятся в одной отдельной колонке вместе. Для каждой группировки своя отдельная колонка
  • Отдельно – каждый реквизит выводится в отдельной колонке
  • Вместе с владельцем – все реквизиты выводятся в колонке группировки. Это значение используется по умолчанию
  • В отдельной позицици – все реквизиты выводятся в отдельной колонке, но колонка в отличие от значения «Вместе» одна для всех группировок

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

Параметр отвечает за вывод заголовков ресурсов и вывод ресурсов в строке

  • Горизонтально (по умолчанию) – заголовки ресурсов выводятся в шапке (горизонтально). В строке группировки ресурсы выводятся также горизонтально
  • Вертикально – заголовки ресурсов выводятся в отдельной колонке в строках группировок (вертикально). В строке группировки ресурсы выводятся вертикально

Расположение общих итогов (по вертикали / по горизонтали)

Параметр отвечает за вывод общих итогов. Для отчета и таблицы доступны варианты «по вертикали», «по горизонтали». При этом вариант «по горизонтали» имеет смысл только для группировок колонок таблицы. Для группировок колонок доступен только один вариант – «расположение общих итогов» и означает итоги по горизонтали, соответственно для группировок строк таблицы также доступен такой же один вариант и означает он итоги по вертикали. Для группировок без таблицы хоть и доступен вариант «по горизонтали», но имеет значение только вариант «по вертикали».

  • Нет – итоги не выводятся
  • Начало – итоги выводятся в начале
  • Конец – итоги выводятся в конце (по умолчанию)
  • Начало и конец – итоги выводятся в начале и в конце
  • Авто – работает как «Конец»

Тип заголовка полей

Не совсем понятно как точно работает параметр, но в варианте «Полный» заголовок подчиненного реквизита выводится как «Владелец.Реквизит», в варианте «Краткий» выводится просто «Реквизит». Может еще на что-то влияет?

Выводить заголовок и Заголовок

Два параметра отвечают за вывод заголовка отчета, группировки, таблицы. Если параметр Выводить заголовок равен «Выводить», то выводится даже пустой заголовок. Если параметр имеет значение «Не выводить», то заголовок не выводится даже если задан. Если параметр имеет значение авто или не установлен, то заголовок выводится если заполнен и не выводится если не заполнен.

Выводить параметры

Параметр доступен только на уровне отчета. Отвечает за вывод значений параметров отчета. По умолчанию (и значение «Авто») параметры выводятся.

Выводить отбор

Параметр отвечает за вывод отбора. Доступен на уровне отчета, группировки. По умолчанию (и значение «Авто») отбор выводится

Автопозиция ресурсов

Параметр отвечает за позицию вывода ресурсов. Доступен для отчета, для таблицы, для группировок.

  • Не использовать – колонки ресурсов выводятся так, как задано в списке «Выбранные поля» при этом учитываются только поля группировок и ресурсов
  • После всех полей (по умолчанию) – колонки ресурсов выводятся после всех полей (группировок и реквизитов)

Фиксация слева и Фиксация сверху

Параметры доступны только для отчета. С помощью параметров можно отключить (по умолчанию включена) фиксацию слева (для таблиц) или сверху (и для таблиц и просто для группировок)


Необходимо одинаковые заголовки группировок объединить.

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

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


Результат представлен ниже:


Решение претендует на универсальность.
Но главный недостаток этого способа, трудно заранее определить начальную и конечную область поиска, т. к. процедура может отработать и объединить любые другие смежные идентичные ячейки. Если есть идеи как однозначно идентифицировать ячейки заголовка группировок пишите. А пока этот код можно использовать с некоторыми изменения в каждом конкретном случае.

Добавлен доработанный файл для 8.2, где предоставлен модифицированный пример для нескольких ресурсов (показателей) - спасибо Evgeniy.

Специальные предложения

Electronic Software Distribution

Интеграция 1С с системой Меркурий

Алкогольная декларация

Готовые переносы данных

54-ФЗ

Управление проектом на Инфостарте

Траектория обучения 1С-разработчика

Если операция производится над сформированным табличным документом, то причём здесь СКД? над сформированным табличным документом, то причём здесь СКД? (19) AlexO, C добрым утром! Вопрос по комментарию трёхгодичной давности? Тем не менее попытаюсь ещё раз сформулировать: какое отношение описанный алгоритм имеет к СКД? Здесь обрабатывается уже сформированный табличный документ. А как он был сформирован для описанного алгоритма дело десятое. Точно также можно обрабатывать табличный документ, сформированный вручную. А как он был сформирован для описанного алгоритма дело десятое
Как раз наипервейшее. Потому как СКД настолько закрытый и запутанный механизм, что любое осмысленное вмешательство в него, дающее уверенный результат - уже огромный плюс. Проблема в СКД. При формировании в колонках таблицы вложенных группировок, родительский заголовок группировки, не объединяет заголовки дочерних группировок.

Это решение призвано привести в порядок вертикальные группировки в СКД. Если этот вариант можно использовать еще где нибудь я не против.

Спасибо за решение, сделал и для горизонтальных и вертикальных ячеек. Классно работает и для вертикальных и для горизонтальных ячеек. А у кого получилось одновременное объединение горизонтальных и верткальных? Например объединенная ячейка должна быть высотой 2 строки и шириной 3 колонки ? В платформе 8.2 уже все объединяет, если грамотно настроить (6) serg_gres, ок, сейчас потрачу полчасика на пример. подожди, не уходи :) (8) adminfo2002, и я жду. )) передо мной сейчас такая же задача. Но как не пыталась, простой настройкой не обошлась
Полгода прошло. у вас там временная аномалия? :)
(16) sdv88,

"А вот тут немного снять.. здесь подчистить. тут отрезать. и вот изящная ложка готова!"
"Не, мне баклушу как сделать. "
Кто ж поймет этих 1сников. (5) adminfo2002, действительно, было бы очень интересно посмотреть на новое решение . Вопрос автору: объединятся ли смежные ячейки ресурсов с одинаковым значением? (7) serg_gres, не понял, зачем объединять ячейки ресурсов? Если речь идет об общей родительской группировке этих ресурсов, то да объединятся. Единственное найденное решение, на мой взгляд. И в 8.2 ничего подобного, как ни настраивай. мне наоборот надо чтобы родительская группировка не объединялась.. версия платформы 8.2.14.540. есть какая то настройка? А можно поподробнее описать, в каком виде вы хотите видеть родительские группировки? как в публикации на картинке где без объединения(покупатели или поставщики). чтобы над каждой колонкой было название верхней группировки. то есть начальный вариант в этой публикации Если данное решение можно применить где-то еще я буду только рад. Но в первую очередь это будет полезно пользователям СКД. работает только при выводе одного показателя в отчете.
Если делаешь вывод более одного показателя, то объединение не срабатывает:( Спасибо за замечание, добавлен доработанный пример для 8.2. Подскажите, если у меня нет кнопки сформировать, и форма рисуется стандартно, как мне использовать данную процедуру? (26) lamdth,
На форме создайте кнопку, прицепите к ней свой обработчик, текст можно подсмотреть где угодно. Например выдрать из моего отчета этой темы. Пример есть в книге "Руководство разработчика" гл 10.4. (30) rborovikov,
На скриншоте "Настройки СКД" показан пример настроек или можно скачать приложенный отчет и там посмотреть. Спасибо, помогло.
Я при использовании немного дополнил функцию ОбъединятьЯчейки():

Добавил массив, в котором указал конкретные строки, которые должны быть в ячейках для объединения. Потому что исходный вариант иногда объединял не то, что нужно. скачал для 8.2, процедуры в модуле форме вообще не прорабатываются, т.е. удалил вообще форму - результат тот же
p.s. допёр - сделано в обычных формах, хотя написано 8.2 думал на управляемых

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

Наткнулся случайно.
я чего-то не понял (может быть реализация связана с "-5" лет назад? или связано с особыми требованиями к формату отчета)
потому как ну нет проблемы вроде с отображением группировок

настройка "расположение группировок - вместе" дает красивый результат (ну на платформе 8.3. точно, при том что по умолчанию подразумевает "вместе" и ничего настраивать не нужно)

(37) graZy,
Сейчас проверил на платформе 8.3.4.465 (другой под рукой не было), проблема осталась.

з.ы.
Проверил на 8.3.5.1383 - результат тот же. (Для проверки можно использовать отчет из загрузок например "Объединяемые заголовки для 8.2" и закомментировать вызов "ОбработатьЗаголовки(. )"

(экперементировал на своем отчете)

рис 1 "расположение полей группировок вместе"
рис 2 "расположение полей группировок отдельно"

(40) graZy,
На втором вашем рисунке как раз нужно добиться общей шапки для "кварталов" и "полугодий" так а чем отчет на первом рисунке не устраивает. (зачем городить рисунок 2 с объединением) --- как писал ранее, если это только не требования к форме отчета (тогда понятно зачем) - в остальных случаях рис1 по мне так идеально подходит (и все стандартными средствами СКД)

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

Andrei_Ivanov; Дейл; Volfy; whilefor; dyuha; andreich_ru; + 6 – Ответить

(43) demien@tut.by, (43) demien@tut.by,
Добрый день.

Что бы настройки брались пользовательские надо
вместо этого:
Настройки = КомпоновщикНастроек.Настройки;

Надо написать это:
Настройки= КомпоновщикНастроек.ПолучитьНастройки();

// Возвращает количество объединяемых ячеек
Функция ОбъединятьЯчейки(ТабДок, индСтр, индКол, ТекстДляОбъединения)
Ячейка = ТабДок.Область(индСтр, индКол);

Если ПустаяСтрока(Ячейка.Текст) Тогда
Возврат 0;
КонецЕсли;

Если ТекстДляОбъединения.Найти(Ячейка.Текст) = Неопределено Тогда
Возврат 0;
КонецЕсли;

КоличествоКолонок = 0;
Для СледКолонка = индКол+1 По ТабДок.ШиринаТаблицы Цикл
ЯчейкаСлед = ТабДок.Область(индСтр, СледКолонка);
//Проверяем, чтобы текст был одним из указанных в ТекстДляОбъединения
Если Ячейка.Текст = ЯчейкаСлед.Текст ИЛИ ПустаяСтрока(ЯчейкаСлед.Текст) Тогда
КоличествоКолонок = КоличествоКолонок + 1;
Иначе
Возврат КоличествоКолонок;
КонецЕсли;
КонецЦикла;

// Обработка заголовков таблицы
//
// Параметры
// Табл - - Табличный документ формы
Процедура ОбработатьЗаголовки(ТабДок)

ТекстДляОбъединения = Новый Массив;

// накачиваем массив значениями текстов для анализа и объединения (замените на свое)
Выборка = Справочники.Регионы.Выбрать();
Пока Выборка.Следующий() Цикл
ТекстДляОбъединения.Добавить(СокрЛП(Выборка.Наименование));
КонецЦикла;
// конец

//Для оптимизации здесь нужно будет ограничить высоту таблицы
Для индСтр=1 По ТабДок.ВысотаТаблицы Цикл

Для индКол=1 По ТабДок.ШиринаТаблицы Цикл

// определяем количество колонок объединения
КоличествоКолонок = ОбъединятьЯчейки(ТабДок, индСтр, индКол, ТекстДляОбъединения);
Если КоличествоКолонок Тогда
ТекстЗаголовка = ТабДок.Область(индСтр, индКол).Текст;
ОбъединяемаяОбласть = ТабДок.Область(индСтр, индКол, индСтр, индКол+КоличествоКолонок);
ОбъединяемаяОбласть.Объединить();
ОбъединяемаяОбласть.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр;
ОбъединяемаяОбласть.Текст = ТекстЗаголовка;
индКол = индКол+КоличествоКолонок;
КонецЕсли;
КонецЦикла;

// Если нашли в строке области для объединения то прекращаем дальнейшие поиски
Если не ОбъединяемаяОбласть = Неопределено Тогда

Отображение заголовков, параметров данных и отборов в системе компоновки данных

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


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


Для управления отображением заголовков используются следующие параметры :

  • Выводить заголовок - управление отображением заголовка. Существуют следующие варианты отображения заголовка :
    • Авто - отображение заголовка определяется автоматически. Если в заголовке указан текст, то текст заголовок отображается, иначе нет ;
    • Не выводить - заголовок не отображается ;
    • Выводить - заголовок отображается всегда.

    Параметры данных отображаются только в начале отчета.


    Для управления отображением значений параметров данных используется параметр Выводить параметры данных .

    • Авто - отображение параметров данных определяется автоматически. Если параметры данных указаны, то отображается текст вида " Параметры данных : < параметр1 > = < значение1 >" , иначе параметры данных не отображаются ;
    • Не выводить - параметры данных не отображаются ;
    • Выводить - параметры данных отображаются всегда. Если параметры данных не указаны, то отображается только текст вида " Параметры данных : " .

    Отбор может отображаться как для отчета, таблицы или диаграммы, так и для отдельных группировок.


    Для управления отображением отбора используется параметр Выводить отбор .

    Читайте также: