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

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

Что такое параметр в 1С и как с ним работать

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

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

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

Понимание того, как работают параметры, позволяет гибко настраивать отчёты без доработки конфигурации, писать безопасные запросы без риска SQL-инъекций и создавать универсальные процедуры вместо дублирования кода. Ниже разобраны основные виды параметров и практические приёмы работы с ними.

Параметры отчётов на СКД: что видит пользователь

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

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

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

Параметры запросов: как безопасно фильтровать данные

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

bsl
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Номенклатура, КоличествоОстаток
|ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(&Период, Склад = &Склад) КАК Остатки";
Запрос.УстановитьПараметр("Период", КонецДня(ТекущаяДатаСеанса()));
Запрос.УстановитьПараметр("Склад", Склад);
Результат = Запрос.Выполнить().Выгрузить();

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

Если параметр объявлен в тексте запроса, но значение ему не присвоено, при выполнении возникнет ошибка. Поэтому в коде принято устанавливать все параметры явно, даже если значение пустое: пустая дата, пустая ссылка или пустой массив — корректные значения, а отсутствие установки — ошибка.

Типичные ошибки с параметрами запросов
01
Склейка значений прямо в текст запроса вместо параметра — приводит к ошибкам с датами, кавычками и риску некорректной подстановки
02
Передача списка строкой вместо массива — условие В (&Список) не срабатывает, выборка пустая
03
Неустановленный параметр виртуальной таблицы — платформа либо выдаёт ошибку, либо строит выборку по всей таблице, что резко замедляет выполнение

Параметры процедур и функций в коде

Во встроенном языке 1С параметры объявляются в заголовке процедуры или функции в круглых скобках. Перед именем параметра может стоять ключевое слово Знач — оно определяет способ передачи. Без Знач параметр передаётся по ссылке: изменения внутри процедуры затронут переменную вызывающего кода. Со словом Знач передаётся копия, и исходная переменная не изменится.

Параметрам можно назначать значения по умолчанию: Процедура СформироватьОтчет(Период, ВключатьНДС = Истина). Такой параметр можно не указывать при вызове — подставится значение по умолчанию. Важное ограничение: параметры со значениями по умолчанию должны идти в конце списка, иначе вызов станет неоднозначным.

Параметры форм и сеанса

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

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

Где какие параметры использовать

Параметры запроса

Для фильтрации данных в выборках. Обязательны при работе с виртуальными таблицами регистров

Параметры СКД

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

Параметры процедур и функций

Для передачи данных между фрагментами кода. Делают методы универсальными

Параметры сеанса

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

Параметры формы

Для управления поведением открываемой формы: отбор, режим выбора, ключ записи

Как задать и проверить параметр на практике

Порядок работы зависит от контекста, но общая логика одинакова: объявить параметр, присвоить значение, проверить результат. Ниже типовой сценарий для отчёта на СКД, который пользователь настраивает самостоятельно.

Настройка параметров отчёта
  1. 1
    Откройте отчёт и нажмите «Настройки» (или «Ещё → Изменить вариант» в типовых конфигурациях)
  2. 2
    На закладке «Параметры» найдите нужный параметр и заполните значение: дату, организацию, склад
  3. 3
    Убедитесь, что флажок использования параметра установлен — незадействованный параметр игнорируется
  4. 4
    Сформируйте отчёт и проверьте, что данные соответствуют заданным ограничениям
  5. 5
    Если настройка нужна постоянно, сохраните вариант отчёта под понятным именем

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

Контрольные точки

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

Состав данных в отчёте
Норма

Попадают только записи за выбранный период и по выбранным объектам

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

Лишние записи или пустой результат при наличии данных

Скорость формирования
Норма

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

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

Формирование занимает минуты — вероятно, не задан период

Сообщения платформы
Норма

Отчёт формируется без предупреждений

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

Ошибка об обязательном или неустановленном параметре

Частые ошибки и ограничения

Начинающие разработчики часто путают параметры СКД и параметры запроса внутри компоновки. В СКД параметр запроса автоматически становится параметром компоновки, но его имя и тип можно переопределить на закладке «Компоновка данных». Если тип задан неверно (например, строка вместо ссылки), пользователь не сможет выбрать значение из справочника — поле примет любой текст, и отбор не сработает.

Ещё одна типичная проблема — даты в параметрах. Конец периода следует задавать как конец дня (КонецДня()) или использовать границу, иначе документы, проведённые в течение последнего дня, выпадут из выборки. В пользовательских настройках типовых отчётов эта проблема обычно решена стандартным периодом, но в собственных доработках её легко упустить.

Полезная привычка при отладке запросов — выводить установленные параметры в консоль запросов или журнал регистрации перед выполнением. Большинство «странных» пустых выборок объясняется не логикой запроса, а неожиданным значением параметра: пустой ссылкой, датой без времени или неверным типом.
ПЗ
Практическое замечание

FAQ: частые вопросы о параметрах в 1С

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

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

Почему отчёт выдаёт ошибку «Параметр не установлен»?

Один из обязательных параметров объявлен в запросе, но ему не присвоено значение — ни пользователем в настройках, ни кодом. Откройте настройки отчёта, найдите незаполненный параметр и задайте значение. Разработчику следует проверить, что все параметры устанавливаются перед выполнением запроса, либо снять у параметра признак обязательности.

Можно ли передать в параметр список значений?

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

Что означает слово «Знач» перед параметром процедуры?

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

Где посмотреть, какие параметры есть у формы?

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

Что такое параметры сеанса и когда их применяют?

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

Итог

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

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