Настройка отчета 1С — это переделка готового отчета под свою задачу без программиста: добавить колонку, сгруппировать строки по менеджерам, оставить в отборе одну организацию и сохранить результат, чтобы завтра не собирать его заново. В типовых конфигурациях на управляемых формах — БП 3.0, УТ 11, КА 2, ERP, УНФ — почти все отчеты построены на системе компоновки данных (СКД), поэтому все это делается мышкой в окне настроек.
Настройки меняются в трех местах формы отчета:
Форму отчета дает Библиотека стандартных подсистем (БСП), поэтому настройки отчета 1С 8.3 в разных конфигурациях выглядят почти одинаково; точные подписи кнопок зависят от релиза. Исключения — бухгалтерские отчеты БП 3.0 (оборотно-сальдовая ведомость, анализ и карточка счета) с кнопкой «Показать настройки» и конфигурации на обычных формах (УТ 10.3, КА 1.1) с кнопкой «Настройка...».
Форма настроек сначала открывается в простом виде: только отборы и параметры, которые разрешил разработчик, плюс флажки показателей. Для серьезной правки переключите вид настроек на «Расширенный» переключателем «Вид» (в УТ 11.5 он внизу окна настроек). Появятся вкладки:
| Вкладка | Что на ней меняют |
|---|---|
| Отборы (в УТ 11.5 — «Фильтры») | Какие данные попадут в отчет |
| Поля и сортировки | Колонки и порядок строк |
| Оформление | Цвет и формат по условию, заголовок, колонтитулы |
| Структура | Группировки, детальные записи, итоги |

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

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

Для свода по месяцам нужно поле периода с детализацией «месяц» — в отчетах по регистрам оно обычно есть. Если есть только дата документа, группировка даст строку на каждую дату и время. Тогда добавьте в расширенном режиме пользовательское поле с выражением НачалоПериода([Дата], "Месяц") и группируйте по нему. Уровни и иерархия разобраны в статье о группировках СКД.
На вкладке «Отборы» (в УТ 11.5 — «Фильтры») добавьте поле и выберите вид сравнения:
Условия соединяются через «И»; для «склад А или контрагент Б» объедините их в группу «ИЛИ». Отбор, который меняете при каждом запуске, удобнее вынести в шапку; если форма настроек этого не позволяет, это делает программист. Быстрый путь — дважды щелкнуть по ячейке готового отчета: в меню расшифровки обычно есть команды отбора и группировки по значению.
Сортировка — справа на вкладке «Поля и сортировки», например клиенты по убыванию выручки. На вкладке «Оформление» задают условное оформление: красным — отрицательные остатки, суммы без копеек.
Сохранение бывает двух видов, и их часто путают.
| Пользовательские настройки | Вариант отчета | |
|---|---|---|
| Что хранит | Период, значения отборов в шапке | Колонки, группировки, отборы, оформление |
| Как сохраняется | Программа запоминает сама | Командой сохранения варианта |
| Кто видит | Только вы | Вы или все — на выбор |
Команда сохранения варианта — на панели формы отчета или в меню «Еще», в зависимости от релиза; в УТ 11.5 это «Еще → Варианты отчета → Сохранить как...». Задайте понятное имя, например «Продажи по менеджерам, помесячно», и выберите, кому вариант доступен. Поставляемые варианты не переделывайте — сохраняйте свою настройку под новым именем. Как переименовать, открыть коллегам или удалить вариант, описано в статье о вариантах отчета 1С.

Запутались в экспериментах — команда «Стандартные настройки» в меню «Еще» вернет текущий вариант к сохраненному состоянию.
Настройки работают только с тем, что разработчик заложил в отчет. Программист нужен, если:
Когда подходящего отчета нет вовсе, выручает универсальный отчет — он настраивается так же. Остальные способы сравниваются в статье как сделать отчет в 1С.
Вынести отбор в шапку можно без кода. В конфигураторе откройте схему компоновки, вкладку «Настройки», выделите элемент отбора или параметр и нажмите «Свойства элемента пользовательских настроек». Включите «Включать в пользовательские настройки» и выберите режим редактирования «Быстрый доступ» — элемент появится в шапке отчета. «Обычный» оставит его в форме настроек, «Недоступный» скроет.
Отбор, который пользователь не снимет, — это код. Пример для своего или внешнего отчета на СКД в конфигурации на БСП: пользователь без полных прав видит только документы, где менеджер — он сам.
// Модуль объекта отчета: свой или внешний отчет на СКД
// в конфигурации на БСП (БП 3.0, УТ 11, КА 2, ERP и др.), платформа 8.3.6+.
// Пользователь без полных прав видит в отчете только свои документы.
// Отбор добавляется заново при каждом формировании, поэтому снять его
// пользователь не может.
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ОбработчикиСобытий
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
// Настройки варианта вместе с пользовательскими (период, отборы из шапки).
// Это копия: изменения в ней сами в форму и в вариант не записываются.
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
// Копии обязательного отбора могли попасть в настройки формы и в сохраненный
// вариант через расшифровку («Отфильтровать», «Расшифровать»).
// Удаляем их у всех пользователей.
УдалитьОбязательныйОтбор(Настройки);
// Ложь в третьем параметре: привилегированный режим не считается полными правами.
Если Не Пользователи.ЭтоПолноправныйПользователь(, , Ложь) Тогда
// "Менеджер" - имя поля в наборе данных схемы (колонка «Путь»).
ДобавитьОбязательныйОтбор(Настройки, "Менеджер", Пользователи.ТекущийПользователь());
КонецЕсли;
// Основная схема - та, что указана в свойствах отчета,
// даже если макет переименовали.
СхемаОтчета = ПолучитьМакет(Метаданные().ОсновнаяСхемаКомпоновкиДанных.Имя);
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаОтчета, Настройки, ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
// Добавляет в корень настроек отбор "Поле = Значение".
// Отбор корня действует на весь отчет: на все группировки и таблицы.
Процедура ДобавитьОбязательныйОтбор(Настройки, ИмяПоля, Значение)
Поле = Новый ПолеКомпоновкиДанных(ИмяПоля);
// Поля нет в схеме - останавливаем формирование.
// Иначе ограничение молча не сработает и отчет покажет лишнее.
Если КомпоновщикНастроек.Настройки.Отбор.ДоступныеПоляОтбора.НайтиПоле(Поле) = Неопределено Тогда
ВызватьИсключение СтрШаблон(
НСтр("ru = 'В отчете нет поля %1 для обязательного отбора.'"), ИмяПоля);
КонецЕсли;
ЭлементОтбора = Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Поле;
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = Значение;
ЭлементОтбора.Использование = Истина;
// По этому представлению копию отбора найдет УдалитьОбязательныйОтбор.
ЭлементОтбора.Представление = ПредставлениеОбязательногоОтбора();
КонецПроцедуры
// Удаляет из корня отбора все копии обязательного отбора.
Процедура УдалитьОбязательныйОтбор(Настройки)
Элементы = Настройки.Отбор.Элементы;
// Обход с конца: удаление не сдвигает еще не проверенные элементы.
Индекс = Элементы.Количество() - 1;
Пока Индекс >= 0 Цикл
Элемент = Элементы[Индекс];
Если ТипЗнч(Элемент) = Тип("ЭлементОтбораКомпоновкиДанных")
И Элемент.Представление = ПредставлениеОбязательногоОтбора() Тогда
Элементы.Удалить(Элемент);
КонецЕсли;
Индекс = Индекс - 1;
КонецЦикла;
КонецПроцедуры
Функция ПредставлениеОбязательногоОтбора()
Возврат НСтр("ru = 'Только документы текущего пользователя'");
КонецФункции
#КонецОбласти
#КонецЕсли
ПриКомпоновкеРезультата — событие модуля объекта отчета, вызывается при каждом формировании. СтандартнаяОбработка = Ложь — иначе после обработчика платформа сформирует отчет сама, без нашего отбора.КомпоновщикНастроек.ПолучитьНастройки() возвращает копию настроек варианта вместе с пользовательскими: сам отбор в форму и вариант не записывается. Но эта же копия уходит в ДанныеРасшифровки, и после «Отфильтровать» или «Расшифровать» отбор появится в настройках формы, а оттуда может попасть в сохраненный вариант.УдалитьОбязательныйОтбор поэтому перед формированием удаляет такие копии по представлению у всех пользователей, а потом отбор добавляется заново. Иначе вариант с чужим отбором покажет другому менеджеру пустой отчет.ЭтоПолноправныйПользователь и ТекущийПользователь — функции общего модуля БСП Пользователи. Третий параметр Ложь — чтобы привилегированный режим не отключал ограничение: по умолчанию в привилегированном режиме функция считает полноправным любого пользователя.Метаданные().ОсновнаяСхемаКомпоновкиДанных.Имя — схема из свойств отчета: код не сломается, если макет переименуют.ДоступныеПоляОтбора.НайтиПоле вернет Неопределено, если поля нет в схеме: отчет остановится с понятным сообщением, а не покажет все документы. СтрШаблон есть в платформе с версии 8.3.6.ДанныеРасшифровки в компоновщике и процессоре сохраняют расшифровку по двойному щелчку. Параметр Истина разрешает функции общих модулей в выражениях схемы.Внешнему отчету, подключенному через «Дополнительные отчеты и обработки», в тот же модуль нужна еще экспортная функция регистрации. Без Экспорт БСП не получит сведения и не зарегистрирует отчет:
// Только для внешнего отчета: модуль объекта, внутри того же блока #Если.
// Сведения для регистрации в справочнике «Дополнительные отчеты и обработки».
Функция СведенияОВнешнейОбработке() Экспорт
// Параметр - версия БСП, под которую написан отчет.
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("3.1.5.1");
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительныйОтчет();
ПараметрыРегистрации.Версия = "1.0";
// Варианты отчета хранятся так же, как у отчетов конфигурации.
ПараметрыРегистрации.ИспользуетВариантыОтчетов = Истина;
Возврат ПараметрыРегистрации;
КонецФункции
Это ограничение одного отчета, а не защита данных: менеджер откроет универсальный отчет или список документов и увидит все. Настоящее разграничение — ограничение доступа на уровне записей (RLS), это настройка прав доступа. В типовой отчет подобную логику встраивают через расширение конфигурации.
Экспорт.Сохраните вариант с доступом для всех пользователей. Период и значения отборов в шапке все равно останутся личными.
Проще всего — сохранить общий вариант. Еще в конфигурациях на БСП администратор может скопировать настройки отчетов одного пользователя другому в разделе администрирования, в настройках пользователей и прав.
Логика та же — отборы, поля, группировки, сортировка, — но окно другое. Часть отчетов на обычных формах построена не на СКД, а на построителе отчета, и возможностей у них меньше.
Отчет берет данные из запроса, который написал разработчик, а не из формы документа. Если реквизит в запрос не попал, настройками его не добавить. Но сначала поищите внутри ссылочных полей: реквизиты договора лежат внутри поля «Договор».
Если за полчаса настроек нужный вид не получился, нужного поля нет или отчет должен соединять данные из нескольких мест, быстрее отдать задачу программисту: доработка типовых отчетов и новые отчеты на СКД — в услуге отчеты и обработки 1С. Разместите задачу со скриншотом отчета и примером нужного результата — оценка бесплатная, ответ в течение рабочего дня.
Станьте частью сообщества!
Войдите или зарегистрируйтесь, и вы сможете участвовать в обсуждениях.