Как установить параметр в СКД программно
Этот вопрос задавался на 1с-ных форумах миллионы раз, но новички упорно спрашивают вновь и вновь. Так зафиксируем же ответ, и будем кидаться в новичков этой ссылкой.
Пример установки параметра СКД программно:
КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ИмяПараметра", Значение); |
или
ПараметрСКД = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ИмяПараметра"); ПараметрСКД.Использование = Истина; ПараметрСКД.Значение = Значение; |
Не помешали бы пояснения типа что это за объект “КомпоновщикНастроек”, а что это за свойство у него такое “Настройки” и т.д.
А про синтакс-помощник слышали?? Выделите “КомпоновщикНастроек” в коде программы и нажмите . И будет описание объекта, его методов и свойств.. Читайте …
нажмите КОНТРОЛ-ФЭ-ОДИН
1. “Устанавливать параметр будем в ПриОткрытии:” при открытии чего? если формы то это событие не срабатывает, срабатывает ПередОткрытием()
2. И даже если этот програмный код вставить при обработке события ПередОткрытием() выкинет с ошибкой “на 2ю строку.
*8.1
Значение не является значение объектного типа (Использование)
Спасибо! Чудесно отработало на 8.2, немного видоизменил (модуль объекта):
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
КомпоновщикНастроек = Отчет.КомпоновщикНастроек;
ПараметрСКД = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(“Город”);
ПараметрСКД.Использование = Истина;
ПараметрСКД.Значение = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию(“Город”);
ПараметрСКД = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(“Ответственный”);
ПараметрСКД.Использование = Истина;
ПараметрСКД.Значение = ПараметрыСеанса.ТекущийПользователь;
КонецПроцедуры
стоп. поспешил )
Вот так работает. Фиксированные настройки видит, Настройки – нет. Вероятно, надо почитать мануал, но решительно нет времени. КомпоновщикНастроек Отчету присваивать нет нужды.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
КомпоновщикНастроек = Отчет.КомпоновщикНастроек;
ПараметрСКД = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(“Город”);
ПараметрСКД.Использование = Истина;
ПараметрСКД.Значение = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию(“Город”);
ПараметрСКДФикс = КомпоновщикНастроек.ФиксированныеНастройки.ПараметрыДанных.Элементы.Найти(“Город”);
ПараметрСКДФикс.Использование = Истина;
ПараметрСКДФикс.Значение = ПараметрСКД.Значение;
ПараметрСКД = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(“Ответственный”);
ПараметрСКД.Использование = Истина;
ПараметрСКД.Значение = ПараметрыСеанса.ТекущийПользователь;
ПараметрСКДФикс = КомпоновщикНастроек.ФиксированныеНастройки.ПараметрыДанных.Элементы.Найти(“Ответственный”);
ПараметрСКДФикс.Использование = Истина;
ПараметрСКДФикс.Значение = ПараметрСКД.Значение;
КонецПроцедуры
При изменении настроек, после формирования отчета и попытке закрыть форму спрашивает, сохранитиь ли измененный вариант. Кто подскажет, как избаиться от этого?
&НаКлиенте
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
ВариантМодифицирован = Ложь;
КонецПроцедуры