Получение значения параметра в СКД зависит от того, где именно вы хотите его перехватить: в самой схеме (эталонные настройки) или в настройках конкретного отчета, которые изменил пользователь на форме.
Обычно программная работа с параметрами требуется перед выводом отчета в процедуре ПриКомпоновкеРезультата.
Это самый частый случай. Когда пользователь нажал «Сформировать», его настройки (выбранные даты, склады и т.д.) попадают в объект КомпоновщикНастроек.
// В модуле отчета
Процедура ПриКомпоновкеРезультата(ДанныеРасшифровки, СтандартнаяОбработка)
// Получаем доступ к значениям параметров, которые видит пользователь
ПараметрыДанных = КомпоновщикНастроек.Настройки.ПараметрыДанных;
// Ищем нужный параметр по имени
ПараметрДата = ПараметрыДанных.Элементы.Найти("НачалоПериода");
Если ПараметрДата <> Неопределено Тогда
ЗначениеПараметра = ПараметрДата.Значение;
Использование = ПараметрДата.Использование;
Сообщить("Выбранная дата: " + ЗначениеПараметра);
КонецЕсли;
КонецПроцедуры
Если вы не уверены, что параметр выведен в пользовательские настройки, но он точно есть в схеме, можно использовать более универсальный обход:
// Находим индекс параметра по его имени в метаданных схемы
Индекс = КомпоновщикНастроек.Настройки.ПараметрыДанных.ДоступныеПараметры.Элементы.Найти("Склад").Идентификатор;
// Получаем текущее установленное значение
Значение = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[Индекс].Значение;
В платформе 8.3 значения параметров часто «улетают» в отдельную коллекцию ПользовательскиеНастройки. Если код выше возвращает пустое значение, хотя на форме все заполнено, нужно проверять именно их:
// Функция для надежного получения значения параметра
Функция ПолучитьЗначениеПараметраСКД(ИмяПараметра)
Для Каждого Элемент Из КомпоновщикНастроек.ПользовательскиеНастройки.Элементы Цикл
// Ищем элемент, который связан с нашим параметром по ИдентификаторуПользовательскойНастройки
Если ТипЗнч(Элемент) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда
// Здесь нужна дополнительная проверка связи,
// но для простых отчетов достаточно поиска по метаданным
КонецЕсли;
КонецЦикла;
// Проще всего использовать встроенный метод получения реальных настроек:
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
Параметр = Настройки.ПараметрыДанных.Найти(ИмяПараметра);
Возврат ?(Параметр <> Неопределено, Параметр.Значение, Неопределено);
КонецФункции
Если вам нужно узнать, какое значение прописано в конфигураторе «по умолчанию» (без учета того, что нажал пользователь):
// Схема - это объект СхемаКомпоновкиДанных
ПараметрСхемы = СхемаКомпоновкиДанных.Параметры.Найти("Организация");
ЗначениеПоУмолчанию = ПараметрСхемы.Значение;
Ищите в КомпоновщикНастроек.Настройки.ПараметрыДанных, если работаете с кодом внутри отчета.
Используйте КомпоновщикНастроек.ПолучитьНастройки(), если нужно получить финальные значения с учетом всех правок пользователя и пользовательских настроек (самый надежный способ).
Остались вопросы?
Мы расскажем вам все про 1С в облаке, ответим на любые вопросы и поделимся полезными материалами по обучению.
Расскажите, как сервис 42Clouds помог вашему бизнесу. Отзыв будет опубликован после проверки модератором.