Допустим, мы создали отчёт в конструкторе СКД, и нам нужно передать в него какой-то параметр.
Сделать это можно из формы отчёта. То есть, пользователь задаёт значение в форме отчёта, например какую-то дату, и это значение должно передаваться в систему компоновки данных.
Первым делом создаём форму отчёта. Добавляем реквизит формы, назовём его "НашаДата". Тип реквизита укажем – "Дата". Вынесем реквизит на форму.
Откроем свойства созданного поля на форме. Создадим обработчик события "ПриИзменении".
Теперь в модуле формы организуем передачу параметра в СКД.
Для случая, когда параметры уже созданы в СКД, и нам нужно передать только значения, код будет таким:
&НаКлиенте Процедура ДатаПриИзменении(Элемент) ДатаПриИзмененииНаСервере(); КонецПроцедуры &НаСервере Процедура ДатаПриИзмененииНаСервере() ЭтаФорма.Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Дата", ЭтаФорма.НашаДата); КонецПроцедуры
В случае, когда параметры заданы в тексте запроса СКД, но не на вкладке "Параметры" конструктора, тогда код нужно настроить в соответствии со следующим примером:
Параметры = КомпоновщикНастроек.Настройки.ПараметрыДанных; Параметр = Параметры.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ПараметрУказанныйВЗапросе")); Если Параметр <> Неопределено Тогда Параметр.Значение = ЗначениеКотороеМыХотимУстановить; Параметр.Использование = Истина; КонецЕсли;