Отчеты и Аналитика · 10 мин
Как получить настройки отчета в 1С
Как получить настройки отчета 1С: через форму, метод ПолучитьНастройки, схему компоновки данных и программно. Примеры кода, типичные ошибки и проверка результата.
Настройки отчета в 1С — это набор параметров, отборов, группировок, сортировок и выбранных полей, которые определяют, какие данные попадут в результат и как они будут представлены. В большинстве типовых конфигураций отчеты построены на системе компоновки данных (СКД), поэтому работа с настройками сводится к объекту «НастройкиКомпоновкиДанных» и компоновщику настроек.
Получить настройки может понадобиться в разных ситуациях: чтобы сохранить удачный вариант отчета, перенести настройки между базами, программно сформировать отчет с заданными параметрами, проанализировать, что именно выбрал пользователь, или восстановить настройки по умолчанию. Способ получения зависит от того, где вы работаете — в пользовательском режиме, в расширенной форме отчета или в коде модуля.
Ниже разобраны основные сценарии: от простого сохранения варианта в режиме «Предприятие» до программного получения настроек через метод ПолучитьНастройки() и работы со схемой компоновки данных напрямую.
Что такое настройки отчета и где они хранятся
В отчете на СКД настройки существуют на нескольких уровнях. Первый уровень — настройки по умолчанию, которые разработчик задал в схеме компоновки данных при создании отчета. Второй уровень — варианты отчета: предопределенные варианты из конфигурации и пользовательские варианты, сохраненные в режиме «Предприятие». Третий уровень — текущие пользовательские настройки, которые человек меняет в форме перед формированием.
Пользовательские варианты хранятся в справочнике «Варианты отчетов» (в конфигурациях на БСП) в виде сериализованных данных. Текущие настройки при работе формы живут в свойстве КомпоновщикНастроек объекта отчета. Понимание этой структуры важно: если вы программно меняете настройки по умолчанию, пользовательские варианты это не затронет, и наоборот.
Как получить настройки в пользовательском режиме
Если задача — забрать готовые настройки без программирования, откройте отчет, нажмите «Изменить вариант» (в типовых формах — через кнопку «Ещё»). Откроется окно настроек с закладками «Отбор», «Параметры», «Поля», «Группировка», «Сортировка». Здесь видно всё, что задано в текущем варианте.
Чтобы сохранить настройки как отдельный вариант, нажмите «Сохранить вариант отчета» и укажите название и доступность (только для себя или для всех пользователей — при наличии прав). Сохраненный вариант появится в панели вариантов, и к нему можно вернуться в любой момент.
Для переноса настроек между базами в типовых конфигурациях есть обмен вариантами отчетов: вариант можно выгрузить, если используется синхронизация или стандартные механизмы переноса настроек. В простых случаях достаточно вручную повторить отборы и параметры в другой базе, сверяясь с открытым окном настроек.
- 1Откройте отчет и сформируйте его, чтобы убедиться, что данные корректны
- 2Нажмите «Ещё — Изменить вариант» и проверьте отборы, параметры и группировки
- 3Нажмите «Сохранить вариант отчета», задайте понятное имя и доступность
- 4Переоткройте отчет и выберите сохраненный вариант — настройки должны подставиться автоматически
Как получить настройки программно: метод ПолучитьНастройки
Основной программный способ — обратиться к компоновщику настроек объекта отчета. У объекта «ОтчетОбъект» есть свойство КомпоновщикНастроек, а у него — метод ПолучитьНастройки(), который возвращает текущие настройки с учетом пользовательских изменений.
Настройки = Отчет.КомпоновщикНастроек.ПолучитьНастройки();
// Чтение значения параметра
ПараметрПериод = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(
Новый ПараметрКомпоновкиДанных("Период"));
Если ПараметрПериод <> Неопределено Тогда
Сообщить("Период: " + ПараметрПериод.Значение);
КонецЕсли;
Важно различать ПолучитьНастройки() и свойство Настройки компоновщика. ПолучитьНастройки() возвращает итоговые настройки с примененными пользовательскими изменениями — именно их отчет использует при формировании. Свойство Настройки содержит базовые настройки варианта без наложения пользовательских.
Полученные настройки можно изменить и вернуть обратно методом ЗагрузитьНастройки(Настройки), после чего сформировать отчет программно. Также настройки сериализуются: их можно выгрузить в XML через ЗаписьXML и хранить в файле или строковой переменной.
Получение настроек по умолчанию из схемы компоновки
Если нужны исходные настройки, заданные разработчиком, а не пользовательские, их берут из схемы компоновки данных. Схему получают методом ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных") у менеджера отчета, а настройки — из свойства НастройкиПоУмолчанию.
СхемаКД = Отчеты.ПродажиЗаПериод.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
НастройкиПоУмолчанию = СхемаКД.НастройкиПоУмолчанию;
// Сброс компоновщика к настройкам по умолчанию
Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиПоУмолчанию);
Этот прием используют, когда нужно «откатить» отчет к заводскому состоянию или сформировать его с гарантированно известными настройками независимо от того, что накликал пользователь. Учтите: загрузка настроек по умолчанию затирает текущие пользовательские изменения в компоновщике, поэтому при необходимости их стоит предварительно сохранить через ПолучитьНастройки().
Как получить настройки из сохраненного варианта отчета
В конфигурациях на Библиотеке стандартных подсистем варианты хранятся в справочнике «ВариантыОтчетов». Программно вариант находят по ключу отчета и ключу варианта, а настройки извлекают из хранилища значения реквизита «Настройки».
Запрос = Новый Запрос(
"ВЫБРАТЬ Варианты.Настройки
|ИЗ Справочник.ВариантыОтчетов КАК Варианты
|ГДЕ Варианты.КлючВарианта = &КлючВарианта");
Запрос.УстановитьПараметр("КлючВарианта", "ПродажиЗаМесяц");
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Настройки = Выборка.Настройки.Получить();
КонецЕсли;
Во внешних отчетах без БСП варианты могут храниться в файле настроек или в хранилище общих настроек (ХранилищеОбщихНастроек). Тогда настройки загружают методом ХранилищеОбщихНастроек.Загрузить() с указанием ключа объекта и ключа настроек. Точный механизм зависит от того, как реализовано сохранение в конкретной конфигурации.
Типичные ошибки при работе с настройками
Самая частая ошибка — попытка изменить настройки, полученные через ПолучитьНастройки(), без последующей загрузки обратно. Метод возвращает копию, и отчет формируется со старыми настройками, что выглядит как «код не работает».
Вторая ошибка — поиск параметра по имени строкой через ПараметрыДанных.Элементы. Надежнее использовать НайтиЗначениеПараметра с объектом ПараметрКомпоновкиДанных: это работает и для вложенных настроек. Третья ошибка — обращение к КомпоновщикНастроек на клиенте в тонком клиенте там, где объект отчета недоступен; программное формирование следует выполнять в серверной процедуре.
Как проверить, что настройки получены правильно
После получения настроек проверьте ключевые элементы: значения параметров данных, список активных отборов и состав выбранных полей. Для отладки удобно вывести значения в сообщения или журнал регистрации, а затем сформировать отчет и сравнить результат с эталонным вариантом, сформированным вручную.
Как проверить результат
Параметры соответствуют заданным в варианте
Параметры пустые или содержат значения по умолчанию
Количество и условия отборов совпадают с формой отчета
Отборы отсутствуют или дублируются
Данные совпадают с ручным формированием того же варианта
Суммы и строки отличаются — настройки применены не полностью
Если результат расходится с ручным формированием, чаще всего причина в непримененных пользовательских настройках: сравните, что возвращает ПолучитьНастройки(), с тем, что видно в окне «Изменить вариант».
Частые вопросы
Чем отличается ПолучитьНастройки() от свойства Настройки компоновщика?
ПолучитьНастройки() возвращает итоговые настройки с примененными пользовательскими изменениями — именно с ними отчет формируется. Свойство Настройки содержит базовые настройки загруженного варианта без наложения пользовательских правок.
Как сохранить настройки отчета в файл?
Получите настройки через ПолучитьНастройки(), затем сериализуйте их через объект ЗаписьXML с помощью СериализаторXDTO и запишите результат в текстовый файл. Загрузка выполняется обратным способом через ЧтениеXML и ЗагрузитьНастройки().
Почему после ЗагрузитьНастройки() отчет формируется по-старому?
Чаще всего настройки загружены в компоновщик, но отчет формируется через СкомпоноватьРезультат с отдельно созданным компоновщиком макета, куда настройки не переданы. Передавайте те же настройки в компоновщик макета компоновки данных.
Можно ли получить настройки отчета другого пользователя?
Да, если вариант сохранен как доступный всем пользователям — он находится в справочнике «Варианты отчетов». Личные варианты другого пользователя доступны только при работе с этим справочником с правами администратора.
Как сбросить настройки отчета к значениям по умолчанию?
В пользовательском режиме откройте «Изменить вариант» и используйте команду установки стандартных настроек. Программно — загрузите в компоновщик СхемаКомпоновкиДанных.НастройкиПоУмолчанию через ЗагрузитьНастройки().
Работает ли ПолучитьНастройки() для отчетов не на СКД?
Нет, компоновщик настроек существует только у отчетов на системе компоновки данных. Для отчетов с произвольной формой и программным выводом настройки хранятся так, как это реализовал разработчик — обычно в реквизитах формы или хранилище настроек.
Что важно запомнить
В пользовательском режиме настройки получают и сохраняют через варианты отчета. Программно текущие настройки возвращает Отчет.КомпоновщикНастроек.ПолучитьНастройки(), настройки по умолчанию — СхемаКомпоновкиДанных.НастройкиПоУмолчанию, а сохраненные варианты хранятся в справочнике «Варианты отчетов». Измененные настройки действуют только после ЗагрузитьНастройки().