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

Разработка и Конфигурация · 8 мин

Параметризация 1С: что это и как работать с параметрами

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

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

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

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

Что такое параметр в 1С и где он встречается

Параметр — это именованное значение, которое передаётся механизму перед его выполнением. В конфигураторе и в пользовательском режиме параметры выглядят по-разному, но идея одинаковая: есть место, куда подставляется значение, и есть код или настройка, которые это значение используют.

Основные места, где встречаются параметры: виртуальные таблицы регистров (например, Остатки(&Период, Склад = &Склад)), условия запросов, настройки отчётов на системе компоновки данных, параметры сеанса (текущий пользователь, дата запрета изменения данных), параметры форм и команд, а также настройки планов обмена.

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

Параметры в отчётах на СКД

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

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

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

Как добавить параметр в отчёт на СКД

Порядок действий
  1. 1
    Откройте схему компоновки данных отчёта и перейдите на закладку «Параметры».
  2. 2
    Добавьте параметр, укажите имя (например, Организация) и тип (СправочникСсылка.Организации).
  3. 3
    В тексте запроса набора данных используйте параметр: ВЫБОР КОГДА &Организация = ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка) ТОГДА ИСТИНА ИНАЧЕ Организация = &Организация КОНЕЦ — либо пометьте параметр как «Ограничение доступности».
  4. 4
    Задайте значение по умолчанию, чтобы отчёт открывался с осмысленными настройками.
  5. 5
    Сохраните, откройте отчёт в режиме предприятия и проверьте, что параметр виден в настройках и влияет на результат.

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

Параметры в запросах и виртуальных таблицах

В языке запросов 1С параметры обозначаются символом «&». Они бывают двух видов: параметры условий (в секции ГДЕ) и параметры виртуальных таблиц (в скобках после имени таблицы). Разница принципиальна для производительности.

Параметр виртуальной таблицы применяется на уровне построения самой таблицы: РегистрНакопления.ТоварыНаСкладах.Остатки(&Период, Склад = &Склад) сначала отберёт остатки по нужному складу и только потом вернёт результат. Условие в секции ГДЕ применяется уже к готовой выборке, что на больших объёмах данных работает медленнее.

При программной работе параметры запроса заполняются через метод Запрос.УстановитьПараметр("Склад", СсылкаНаСклад). Если параметр объявлен в тексте, но не установлен, запрос выдаст ошибку — поэтому перед выполнением полезно проверять, что все параметры заданы.

Параметры сеанса и функциональные опции

Параметры сеанса — это глобальные значения, доступные в течение всего сеанса пользователя: текущий пользователь, дата запрета редактирования, значения настроек RLS. Они устанавливаются в модуле сеанса при входе и дальше используются везде без передачи «вручную».

Функциональные опции — механизм параметризации самой конфигурации: они включают или скрывают целые блоки функциональности (учёт по нескольким складам, валютный учёт, серии номенклатуры). Администратор включает опцию в настройках, и интерфейс перестраивается без доработки кода.

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

Параметризация обработок и обменов данными

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

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

Типичные ошибки и как их проверить

Типичные ошибки
01
Параметр объявлен в запросе, но не установлен через УстановитьПараметр — запрос падает с ошибкой или возвращает пустоту.
02
Отбор размещён в ГДЕ вместо параметров виртуальной таблицы — отчёт «тормозит» на больших данных.
03
Параметр без значения по умолчанию — пользователь открывает отчёт и видит пустой результат.
04
Несовпадение типа параметра и типа поля (строка вместо ссылки) — сравнение молча не срабатывает.
05
Хардкод значений в коде вместо параметров — каждая смена условий требует доработки конфигурации.
Контрольные точки

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

Отчёт с параметром
Норма

Меняем значение параметра — результат отчёта меняется соответственно

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

Результат одинаков при любых значениях: параметр не связан с запросом

Запрос в консоли
Норма

Все параметры установлены, запрос выполняется без ошибок

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

Ошибка «Параметр не найден» или пустая выборка при заполненных данных

Производительность
Норма

Отбор в параметрах виртуальной таблицы, запрос выполняется быстро

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

Отбор в ГДЕ по большой таблице, заметные задержки

Простой способ диагностики — консоль запросов: вставьте текст запроса, заполните параметры вручную и посмотрите результат. Если в консоли данные есть, а в отчёте нет, проблема в передаче параметров из настроек СКД, а не в самом запросе.

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

Чем параметр отличается от отбора в отчёте СКД?

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

Можно ли параметризовать отчёт без доступа к конфигуратору?

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

Почему отчёт с параметром возвращает пустой результат?

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

Что такое параметризуемая команда?

Это команда, которой при вызове передаётся значение — например, ссылка на документ при вызове печатной формы. Обработчик команды получает параметр и строит поведение на его основе.

Где хранятся значения параметров сеанса?

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

Итог

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

Параметризация — это управление поведением 1С через изменяемые параметры вместо правки кода. Ключевые места: параметры отчётов СКД, параметры запросов и виртуальных таблиц, параметры сеанса и настройки обменов. Проверяйте типы, значения по умолчанию и переносите отборы в параметры виртуальных таблиц для скорости.