Дата публикации: 9 ноября 2025

Как программно получить значение параметра в системе 1С: СКД?

В системе 1С можно получить значение параметра программно через объект Справочники.ПараметрыСистемы. Получение значения параметра зависит от его типа, и может быть выполнено разными методами.

Получение значения параметра в СКД зависит от того, где именно вы хотите его перехватить: в самой схеме (эталонные настройки) или в настройках конкретного отчета, которые изменил пользователь на форме.

Обычно программная работа с параметрами требуется перед выводом отчета в процедуре ПриКомпоновкеРезультата.


1. Получение значения из текущих настроек (Пользовательских)

Это самый частый случай. Когда пользователь нажал «Сформировать», его настройки (выбранные даты, склады и т.д.) попадают в объект КомпоновщикНастроек.

// В модуле отчета
Процедура ПриКомпоновкеРезультата(ДанныеРасшифровки, СтандартнаяОбработка)

// Получаем доступ к значениям параметров, которые видит пользователь
ПараметрыДанных = КомпоновщикНастроек.Настройки.ПараметрыДанных;

// Ищем нужный параметр по имени
ПараметрДата = ПараметрыДанных.Элементы.Найти("НачалоПериода");

Если ПараметрДата <> Неопределено Тогда
ЗначениеПараметра = ПараметрДата.Значение;
Использование = ПараметрДата.Использование;

Сообщить("Выбранная дата: " + ЗначениеПараметра);
КонецЕсли;

КонецПроцедуры

2. Получение значения через «Доступные параметры»

Если вы не уверены, что параметр выведен в пользовательские настройки, но он точно есть в схеме, можно использовать более универсальный обход:

// Находим индекс параметра по его имени в метаданных схемы
Индекс = КомпоновщикНастроек.Настройки.ПараметрыДанных.ДоступныеПараметры.Элементы.Найти("Склад").Идентификатор;

// Получаем текущее установленное значение
Значение = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[Индекс].Значение;

3. Важный нюанс: Пользовательские настройки (User Settings)

В платформе 8.3 значения параметров часто «улетают» в отдельную коллекцию ПользовательскиеНастройки. Если код выше возвращает пустое значение, хотя на форме все заполнено, нужно проверять именно их:

// Функция для надежного получения значения параметра
Функция ПолучитьЗначениеПараметраСКД(ИмяПараметра)

Для Каждого Элемент Из КомпоновщикНастроек.ПользовательскиеНастройки.Элементы Цикл
// Ищем элемент, который связан с нашим параметром по ИдентификаторуПользовательскойНастройки
Если ТипЗнч(Элемент) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда
// Здесь нужна дополнительная проверка связи,
// но для простых отчетов достаточно поиска по метаданным
КонецЕсли;
КонецЦикла;

// Проще всего использовать встроенный метод получения реальных настроек:
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
Параметр = Настройки.ПараметрыДанных.Найти(ИмяПараметра);

Возврат ?(Параметр <> Неопределено, Параметр.Значение, Неопределено);
КонецФункции

4. Получение значения из самой схемы (Default)

Если вам нужно узнать, какое значение прописано в конфигураторе «по умолчанию» (без учета того, что нажал пользователь):

// Схема - это объект СхемаКомпоновкиДанных
ПараметрСхемы = СхемаКомпоновкиДанных.Параметры.Найти("Организация");
ЗначениеПоУмолчанию = ПараметрСхемы.Значение;

Резюме:

  • Ищите в КомпоновщикНастроек.Настройки.ПараметрыДанных, если работаете с кодом внутри отчета.

  • Используйте КомпоновщикНастроек.ПолучитьНастройки(), если нужно получить финальные значения с учетом всех правок пользователя и пользовательских настроек (самый надежный способ).

Остались вопросы?

Мы расскажем вам все про 1С в облаке, ответим на любые вопросы и поделимся полезными материалами по обучению.

Оставьте заявку. Мы свяжемся с вами в самое ближайшее время
Оставьте заявку. Мы свяжемся с вами в самое ближайшее время
Оставьте отзыв о нас

Расскажите, как сервис 42Clouds помог вашему бизнесу. Отзыв будет опубликован после проверки модератором.