Настройки СКД 1С устроены слоями. У отчёта на системе компоновки данных есть компоновщик настроек, а в нём три набора: настройки варианта (что задал разработчик или пользователь при сохранении варианта), пользовательские настройки (то, что меняют с формы отчёта) и фиксированные настройки (то, что задаётся программно и скрыто от пользователя). Итоговый результат собирается так: вариант, поверх него пользовательские, поверх — фиксированные.

Вторая половина темы — параметры вывода на закладке «Другие настройки»: макет оформления, расположение итогов, группировок, реквизитов и ресурсов, заголовки, фиксация шапки. Ниже разберу и слои настроек, и все параметры вывода, кроме диаграммных, с примерами программной установки.

Три слоя: настройки, пользовательские и фиксированные

Реквизит КомпоновщикНастроек отчёта содержит три свойства.

СвойствоЧто этоКто меняет
НастройкиНастройки варианта отчёта: структура, выбранные поля, отборы, параметры выводаРазработчик в конфигураторе, пользователь через «Изменить вариант»
ПользовательскиеНастройкиЭлементы варианта, вынесенные пользователюПользователь с формы отчёта или из формы «Настройки»
ФиксированныеНастройкиДополнительные настройки поверх всегоПрограммно, пользователь их не видит

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

Какой элемент станет пользовательским, решает флажок «Включать в пользовательские настройки» у отбора, параметра или группировки. Там же выбирается режим: быстрый доступ (поле прямо на форме отчёта) или обычный (в отдельной форме «Настройки»).

Настройки СКД 1С: вариант, пользовательские и фиксированные настройки накладываются слоями
Настройки СКД 1С: вариант, пользовательские и фиксированные настройки накладываются слоями

Чтобы получить итоговые настройки, которые реально уйдут в компоновку, используется КомпоновщикНастроек.ПолучитьНастройки() — метод возвращает вариант с уже применёнными пользовательскими и фиксированными настройками.

Фиксированные настройки на практике

Самый частый источник фиксированных настроек — параметр формы Отбор при открытии отчёта. Например, из карточки контрагента открываем отчёт сразу с отбором по нему:

1С
&НаКлиенте
Процедура ОткрытьОтчетПоКонтрагенту(Команда)

	// Отбор из параметра формы попадает в фиксированные настройки:
	// пользователь не сможет его снять в форме отчёта.
	ОтборОтчета = Новый Структура("Контрагент", Объект.Ссылка);

	ПараметрыФормы = Новый Структура;
	ПараметрыФормы.Вставить("Отбор", ОтборОтчета);
	ПараметрыФормы.Вставить("СформироватьПриОткрытии", Истина);

	ОткрытьФорму("Отчет.ПродажиПоКонтрагентам.Форма", ПараметрыФормы, ЭтаФорма);

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

Если такой отбор должен быть редактируемым, его нужно передавать не как фиксированный, а устанавливать в пользовательские настройки в обработчике формы отчёта.

Пользовательские настройки на форме отчёта

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

Дальше платформа сама генерирует поля в этой группе — по умолчанию в две колонки. Если стандартная раскладка не устраивает:

  1. Очистите в свойствах формы ссылку на группу пользовательских настроек — автоматическое создание отключится.
  2. Вызовите метод формы СоздатьЭлементыФормыПользовательскихНастроек, передав нужную группу, режим отображения и количество колонок.
  3. После создания элементов можно менять их свойства: доступность, видимость, назначать обработчики ПриИзменении.

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

Где хранятся настройки отчётов 1С

Если в конфигурации нет специального механизма, варианты и пользовательские настройки лежат в хранилище системных настроек. Обращаться к ним можно через свойства глобального контекста:

  • ХранилищеВариантовОтчетов — сохранённые варианты;
  • ХранилищеПользовательскихНастроекОтчетов — пользовательские настройки.

В свойствах конфигурации можно назначить собственные хранилища (объекты метаданных «Хранилище настроек»), и то же самое — отдельно в свойствах конкретного отчёта. Это нужно, когда варианты хотят хранить в справочнике, делиться ими между пользователями или администрировать централизованно.

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

Параметры вывода: закладка «Другие настройки»

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

Оформление и объём данных

  • Макет оформления. Набор правил оформления областей: заголовков, ресурсов, итогов — цвет, шрифт, рамки. Можно выбрать типовой или свой. Если не задан — используется «Основной». Вариант «Без оформления» отключает оформление полностью, это удобно для выгрузки в Excel.
  • Количество записей и Процент записей. Только для группировок: выводятся не все записи, а первые N или указанный процент. В связке с сортировкой по убыванию ресурса это готовый «топ-10 клиентов».
  • Тип макета. Только для обычных группировок (не таблицы): направление вывода ячеек записи — «Горизонтально» или «Вертикально»; «Авто» работает как горизонтально.

Итоги и записи группировок

Расположение итогов относится к группировке. Удобно представлять запись группировки как итог по подчинённым записям:

ЗначениеЧто выводится
НетЗначения ресурсов в записи группировки не выводятся
НачалоОдна запись группировки перед подчинёнными (так работает и «Авто»)
КонецНачальная запись есть, но без ресурсов
Начало и конецЗапись перед подчинёнными и её копия после них

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

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

Настройки СКД 1С: как расположение итогов и полей группировок меняет таблицу отчёта
Настройки СКД 1С: как расположение итогов и полей группировок меняет таблицу отчёта

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

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

  • Вместе (по умолчанию) — подчинённая группировка выводится под родительской в той же колонке, с отступом;
  • Отдельно — подчинённая группировка уходит в отдельную колонку, значения родителя повторяются в каждой строке;
  • Отдельно и только в итогах — отдельная колонка, но значения родителя не дублируются.

Для строк достаточно задать значение на уровне отчёта или верхней группировки — оно унаследуется. Для колонок логика другая: установка на отчёте, таблице или группировке первого уровня не действует. Работает только на вложенной группировке, начиная со второго уровня, не наследуется дальше и влияет на текущую группировку: «Отдельно» переносит её колонку на новую строку шапки.

Реквизиты и ресурсы

Расположение реквизитов определяет, как выводятся реквизиты поля группировки, добавленные в выбранные поля через точку (например, Контрагент.ИНН):

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

Расположение ресурсов: «Горизонтально» — заголовки ресурсов в шапке; «Вертикально» — ресурсы выводятся столбиком в строках группировки. Автопозиция ресурсов: по умолчанию ресурсы выводятся после всех полей; «Не использовать» позволяет поставить их там, где они стоят в списке выбранных полей.

Заголовки, отборы, фиксация

  • Тип заголовка полей: «Полный» выводит Владелец.Реквизит, «Краткий» — только имя реквизита.
  • Выводить заголовок и Заголовок: «Выводить» показывает заголовок даже пустым, «Не выводить» скрывает даже заполненный, «Авто» — выводит, только если он заполнен.
  • Выводить параметры (только отчёт) и Выводить отбор (отчёт и группировки) — по умолчанию выводятся.
  • Фиксация слева и Фиксация сверху — только на уровне отчёта, по умолчанию включены; отключаются, если фиксированная шапка мешает.

Программная установка параметров вывода

Параметры вывода доступны в коде через коллекцию ПараметрыВывода у настроек или у элемента структуры:

1С
// Настраивает вывод отчёта перед формированием.
Процедура НастроитьВыводОтчета(НастройкиКомпоновки, ТекстЗаголовка)

	ПараметрыВывода = НастройкиКомпоновки.ПараметрыВывода;

	ПараметрыВывода.УстановитьЗначениеПараметра("Заголовок", ТекстЗаголовка);
	ПараметрыВывода.УстановитьЗначениеПараметра("ВыводитьЗаголовок",
		ТипВыводаТекстаКомпоновкиДанных.Выводить);
	ПараметрыВывода.УстановитьЗначениеПараметра("ВыводитьПараметрыДанных",
		ТипВыводаТекстаКомпоновкиДанных.НеВыводить);
	ПараметрыВывода.УстановитьЗначениеПараметра("ВыводитьОтбор",
		ТипВыводаТекстаКомпоновкиДанных.НеВыводить);

	// Реквизиты группировок — каждый в своей колонке.
	ПараметрыВывода.УстановитьЗначениеПараметра("РасположениеРеквизитов",
		РасположениеРеквизитовКомпоновкиДанных.Отдельно);

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

Для отдельной группировки обращайтесь к её собственной коллекции: Группировка.ПараметрыВывода.УстановитьЗначениеПараметра("РасположениеИтогов", РасположениеИтоговКомпоновкиДанных.Конец). Учтите, что УстановитьЗначениеПараметра включает и использование параметра, то есть значение перестаёт наследоваться сверху.

Типичные ошибки

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

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

Коротко

  • В компоновщике три слоя: настройки варианта, пользовательские поверх них и фиксированные поверх всего.
  • Пользовательские настройки не меняют вариант и связаны с ним через ИдентификаторПользовательскойНастройки.
  • Без специальных механизмов настройки лежат в ХранилищеВариантовОтчетов и ХранилищеПользовательскихНастроекОтчетов, в типовых — в подсистеме БСП «Варианты отчетов».
  • Параметры вывода наследуются от отчёта к таблице и группировкам; для колонок расположение полей группировок работает иначе.
  • В коде параметры вывода задаются через ПараметрыВывода.УстановитьЗначениеПараметра.