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

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

Как убрать параметр «Период» в СКД 1С

Как убрать параметр «Период» в СКД 1С: настройка дат начала и окончания, ограничение доступности, работа с выражением параметра и типовые ошибки.

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

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

Ниже разобраны все рабочие способы: от простого снятия флага доступности до переписывания запроса без параметра. Также даны варианты, когда параметр убирать нельзя, но можно сделать его невидимым для пользователя.

Откуда берётся параметр «Период» в СКД

Параметр «Период» появляется в схеме компоновки по трём основным причинам. Первая — вы сами добавили его на закладке «Параметры», чтобы фильтровать данные отчёта. Вторая — конструктор СКД автоматически создал параметры по тексту запроса: всё, что указано в запросе через символ «&», становится параметрами компоновки. Третья — в запросе используется виртуальная таблица регистра (Остатки, Обороты, ОстаткиИОбороты), у которой в скобках заданы параметры, например РегистрНакопления.Товары.Остатки(&Период, ).

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

Параметр есть в тексте запросаСвязан с запросом

Удалять только вместе с правкой запроса

Параметр в скобках виртуальной таблицыПараметр таблицы регистра

Убирается из параметров таблицы в запросе

Параметр только на закладке «Параметры»Ручной параметр

Можно удалить или скрыть без правки запроса

Как полностью удалить параметр из схемы компоновки

Если параметр «Период» не используется в тексте запроса и не нужен отчёту, удалите его целиком. Откройте схему компоновки данных (в конфигураторе: отчёт → «Основная схема компоновки данных» → кнопка «Открыть схему компоновки данных»), перейдите на закладку «Параметры». Найдите строку с параметром «Период», выделите её и нажмите кнопку удаления или клавишу Delete.

После удаления нажмите «ОК» и сохраните конфигурацию. Затем сформируйте отчёт — если запрос нигде не ссылается на удалённый параметр, отчёт построится без ошибок, а поле «Период» исчезнет из настроек пользователя. Если появилась ошибка вида «Параметр &Период не найден» или «Ошибка получения данных», значит параметр всё-таки используется в запросе, в выражениях вычисляемых полей или в отборе — верните его и переходите к способу скрытия.

Порядок удаления параметра
  1. 1
    Откройте схему компоновки данных отчёта
  2. 2
    Перейдите на закладку «Параметры»
  3. 3
    Убедитесь, что параметр не используется в тексте запроса (Ctrl+F по «&Период»)
  4. 4
    Удалите строку параметра и нажмите «ОК»
  5. 5
    Сохраните конфигурацию и сформируйте отчёт для проверки

Как скрыть параметр, не удаляя его

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

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

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

Как убрать параметр из виртуальной таблицы регистра

Когда «Период» приходит из параметров виртуальной таблицы, например РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, , ), править нужно сам текст запроса. Откройте закладку «Наборы данных», дважды щёлкните по набору и отредактируйте запрос: удалите параметр из скобок виртуальной таблицы, оставив нужное количество запятых-разделителей, например Обороты(, , , ) или просто уберите скобки целиком, если параметров не осталось.

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

Альтернатива — перенести условие из параметров виртуальной таблицы в секцию ГДЕ запроса с условием в фигурных скобках {ГДЕ (Период >= &НачалоПериода)}. Тогда отбор станет необязательным: если пользователь не задал значение, СКД просто не применит условие, а параметр можно скрыть или удалить из пользовательских настроек.

Как убрать параметр программно в модуле отчёта

Если схема компоновки используется в нескольких вариантах отчёта и параметр нужно скрывать динамически, это делается кодом в модуле объекта отчёта или формы. Типовой приём — при компоновке настроек найти параметр в коллекции Настройки.ПараметрыДанных и установить свойства видимости и значение.

Пример кода для события «ПриКомпоновкеРезультата» модуля объекта отчёта:

bsl
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
	Настройки = КомпоновщикНастроек.ПолучитьНастройки();
	Парам = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Период"));
	Если Парам <> Неопределено Тогда
		Парам.Использование = Истина;
		Парам.Значение = ТекущаяДатаСеанса();
	КонецЕсли;
КонецПроцедуры

Программный способ удобен, когда значение периода должно вычисляться автоматически (текущая дата, начало месяца, дата из другого параметра). Но помните: код в модуле объекта применяется только при стандартном формировании отчёта; если схема компонуется из внешней обработки, аналогичный код нужно продублировать там.

Типовые ошибки и способы их проверки

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

Вторая ошибка — параметр скрыт, но значение ему не задано. Отчёт формируется без ошибок, но данные пустые или за неверный период. Лечится установкой значения по умолчанию на закладке «Параметры» или программным присвоением значения перед компоновкой.

Третья ситуация — параметр убрали из схемы, но он остался в пользовательских настройках конкретного варианта отчёта, сохранённых ранее. Пользователь видит старое поле или ошибку. Решение: сбросить настройки варианта отчёта (в пользовательском режиме — «Ещё → Изменить вариант → Сбросить» или очистка сохранённых настроек через «Стандартные → Управление настройками»).

Типичные ошибки
01
Удаление параметра, используемого в вычисляемых полях — отчёт падает с ошибкой при формировании
02
Скрытие параметра без значения по умолчанию — отчёт возвращает пустые данные
03
Удаление параметра из виртуальной таблицы без оценки производительности — отчёт выполняется слишком долго
04
Забытые старые пользовательские настройки варианта — параметр продолжает отображаться у пользователей
Контрольные точки

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

Форма отчёта в пользовательском режиме
Норма

Поля «Период» нет в настройках

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

Поле видно или доступно для редактирования

Формирование отчёта
Норма

Отчёт строится без ошибок, данные корректны

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

Ошибка «параметр не найден» или пустой результат

Время формирования
Норма

Сопоставимо с прежним

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

Резко выросло после удаления параметра из виртуальной таблицы

Варианты отчёта у пользователей
Норма

Настройки сброшены, старого поля нет

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

Осталось поле из сохранённых настроек

Часто задаваемые вопросы

Почему параметр «Период» появляется сам, хотя я его не добавлял?

СКД автоматически создаёт параметры по всем вхождениям «&ИмяПараметра» в тексте запроса набора данных и по параметрам виртуальных таблиц регистров. Если вы использовали конструктор запроса с виртуальной таблицей остатков или оборотов, параметры периода добавились вместе с ней. Убрать их можно только правкой запроса или скрытием на закладке «Параметры».

Можно ли убрать параметр только из быстрых пользовательских настроек?

Да. Откройте настройки отчёта (закладка «Настройки» в схеме или режим «Изменить вариант» в пользовательском режиме), найдите параметр в разделе «Параметры данных» и снимите у него флажок включения в пользовательские настройки либо смените режим редактирования с «Быстрый доступ» на «Обычный» или «Недоступный». Параметр останется в схеме, но не будет показан на панели быстрых настроек.

Чем отличается «Ограничение доступности» от «Включать в доступные поля»?

«Включать в доступные поля» разрешает использовать параметр в отборах и настройках. «Ограничение доступности» запрещает пользователю изменять параметр в настройках отчёта — он становится служебным. Для полного скрытия обычно ставят ограничение доступности и убирают параметр из пользовательских настроек варианта.

Отчёт после удаления параметра стал формироваться очень долго. Что делать?

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

Как задать параметру «Период» значение по умолчанию, например текущую дату?

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

У пользователей осталось поле «Период», хотя в схеме я его убрал. Почему?

Настройки вариантов отчётов сохраняются в базе отдельно от схемы компоновки. Старые сохранённые настройки содержат ссылку на удалённый параметр. Попросите пользователей сбросить настройки варианта через «Ещё → Изменить вариант → Сбросить к стандартным» или очистите сохранённые настройки централизованно через обработку управления настройками отчётов.

Итог

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

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