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