К статье
Практический материал

Отчеты и Аналитика · 10 мин

Как получить настройки отчета в 1С

Как получить настройки отчета 1С: через форму, метод ПолучитьНастройки, схему компоновки данных и программно. Примеры кода, типичные ошибки и проверка результата.

Настройки отчета в 1С — это набор параметров, отборов, группировок, сортировок и выбранных полей, которые определяют, какие данные попадут в результат и как они будут представлены. В большинстве типовых конфигураций отчеты построены на системе компоновки данных (СКД), поэтому работа с настройками сводится к объекту «НастройкиКомпоновкиДанных» и компоновщику настроек.

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

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

Что такое настройки отчета и где они хранятся

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

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

Как получить настройки в пользовательском режиме

Если задача — забрать готовые настройки без программирования, откройте отчет, нажмите «Изменить вариант» (в типовых формах — через кнопку «Ещё»). Откроется окно настроек с закладками «Отбор», «Параметры», «Поля», «Группировка», «Сортировка». Здесь видно всё, что задано в текущем варианте.

Чтобы сохранить настройки как отдельный вариант, нажмите «Сохранить вариант отчета» и укажите название и доступность (только для себя или для всех пользователей — при наличии прав). Сохраненный вариант появится в панели вариантов, и к нему можно вернуться в любой момент.

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

Порядок действий в режиме «Предприятие»
  1. 1
    Откройте отчет и сформируйте его, чтобы убедиться, что данные корректны
  2. 2
    Нажмите «Ещё — Изменить вариант» и проверьте отборы, параметры и группировки
  3. 3
    Нажмите «Сохранить вариант отчета», задайте понятное имя и доступность
  4. 4
    Переоткройте отчет и выберите сохраненный вариант — настройки должны подставиться автоматически

Как получить настройки программно: метод ПолучитьНастройки

Основной программный способ — обратиться к компоновщику настроек объекта отчета. У объекта «ОтчетОбъект» есть свойство КомпоновщикНастроек, а у него — метод ПолучитьНастройки(), который возвращает текущие настройки с учетом пользовательских изменений.

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

// Чтение значения параметра

ПараметрПериод = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(

Новый ПараметрКомпоновкиДанных("Период"));

Если ПараметрПериод <> Неопределено Тогда

Сообщить("Период: " + ПараметрПериод.Значение);

КонецЕсли;

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

Полученные настройки можно изменить и вернуть обратно методом ЗагрузитьНастройки(Настройки), после чего сформировать отчет программно. Также настройки сериализуются: их можно выгрузить в XML через ЗаписьXML и хранить в файле или строковой переменной.

Получение настроек по умолчанию из схемы компоновки

Если нужны исходные настройки, заданные разработчиком, а не пользовательские, их берут из схемы компоновки данных. Схему получают методом ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных") у менеджера отчета, а настройки — из свойства НастройкиПоУмолчанию.

СхемаКД = Отчеты.ПродажиЗаПериод.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");

НастройкиПоУмолчанию = СхемаКД.НастройкиПоУмолчанию;

// Сброс компоновщика к настройкам по умолчанию

Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиПоУмолчанию);

Этот прием используют, когда нужно «откатить» отчет к заводскому состоянию или сформировать его с гарантированно известными настройками независимо от того, что накликал пользователь. Учтите: загрузка настроек по умолчанию затирает текущие пользовательские изменения в компоновщике, поэтому при необходимости их стоит предварительно сохранить через ПолучитьНастройки().

Как получить настройки из сохраненного варианта отчета

В конфигурациях на Библиотеке стандартных подсистем варианты хранятся в справочнике «ВариантыОтчетов». Программно вариант находят по ключу отчета и ключу варианта, а настройки извлекают из хранилища значения реквизита «Настройки».

Запрос = Новый Запрос(

"ВЫБРАТЬ Варианты.Настройки

|ИЗ Справочник.ВариантыОтчетов КАК Варианты

|ГДЕ Варианты.КлючВарианта = &КлючВарианта");

Запрос.УстановитьПараметр("КлючВарианта", "ПродажиЗаМесяц");

Выборка = Запрос.Выполнить().Выбрать();

Если Выборка.Следующий() Тогда

Настройки = Выборка.Настройки.Получить();

КонецЕсли;

Во внешних отчетах без БСП варианты могут храниться в файле настроек или в хранилище общих настроек (ХранилищеОбщихНастроек). Тогда настройки загружают методом ХранилищеОбщихНастроек.Загрузить() с указанием ключа объекта и ключа настроек. Точный механизм зависит от того, как реализовано сохранение в конкретной конфигурации.

Типичные ошибки при работе с настройками

Самая частая ошибка — попытка изменить настройки, полученные через ПолучитьНастройки(), без последующей загрузки обратно. Метод возвращает копию, и отчет формируется со старыми настройками, что выглядит как «код не работает».

Вторая ошибка — поиск параметра по имени строкой через ПараметрыДанных.Элементы. Надежнее использовать НайтиЗначениеПараметра с объектом ПараметрКомпоновкиДанных: это работает и для вложенных настроек. Третья ошибка — обращение к КомпоновщикНастроек на клиенте в тонком клиенте там, где объект отчета недоступен; программное формирование следует выполнять в серверной процедуре.

Типичные ошибки
01
Изменение копии настроек без ЗагрузитьНастройки() — отчет формируется со старыми параметрами
02
Поиск параметра по строковому имени вместо НайтиЗначениеПараметра — элемент не находится
03
Программное формирование отчета в клиентской процедуре — ошибка вызова серверных методов
04
Загрузка настроек по умолчанию без сохранения пользовательских — потеря настроек пользователя

Как проверить, что настройки получены правильно

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

Контрольные точки

Как проверить результат

Значения параметров
Норма

Параметры соответствуют заданным в варианте

Тревожный признак

Параметры пустые или содержат значения по умолчанию

Отборы
Норма

Количество и условия отборов совпадают с формой отчета

Тревожный признак

Отборы отсутствуют или дублируются

Результат отчета
Норма

Данные совпадают с ручным формированием того же варианта

Тревожный признак

Суммы и строки отличаются — настройки применены не полностью

Если результат расходится с ручным формированием, чаще всего причина в непримененных пользовательских настройках: сравните, что возвращает ПолучитьНастройки(), с тем, что видно в окне «Изменить вариант».

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

Чем отличается ПолучитьНастройки() от свойства Настройки компоновщика?

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

Как сохранить настройки отчета в файл?

Получите настройки через ПолучитьНастройки(), затем сериализуйте их через объект ЗаписьXML с помощью СериализаторXDTO и запишите результат в текстовый файл. Загрузка выполняется обратным способом через ЧтениеXML и ЗагрузитьНастройки().

Почему после ЗагрузитьНастройки() отчет формируется по-старому?

Чаще всего настройки загружены в компоновщик, но отчет формируется через СкомпоноватьРезультат с отдельно созданным компоновщиком макета, куда настройки не переданы. Передавайте те же настройки в компоновщик макета компоновки данных.

Можно ли получить настройки отчета другого пользователя?

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

Как сбросить настройки отчета к значениям по умолчанию?

В пользовательском режиме откройте «Изменить вариант» и используйте команду установки стандартных настроек. Программно — загрузите в компоновщик СхемаКомпоновкиДанных.НастройкиПоУмолчанию через ЗагрузитьНастройки().

Работает ли ПолучитьНастройки() для отчетов не на СКД?

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

Итог

Что важно запомнить

В пользовательском режиме настройки получают и сохраняют через варианты отчета. Программно текущие настройки возвращает Отчет.КомпоновщикНастроек.ПолучитьНастройки(), настройки по умолчанию — СхемаКомпоновкиДанных.НастройкиПоУмолчанию, а сохраненные варианты хранятся в справочнике «Варианты отчетов». Измененные настройки действуют только после ЗагрузитьНастройки().