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