Допустим, мы создали отчёт в конструкторе СКД, и нам нужно передать в него какой-то параметр.

Сделать это можно из формы отчёта. То есть, пользователь задаёт значение в форме отчёта, например какую-то дату, и это значение должно передаваться в систему компоновки данных.

Первым делом создаём форму отчёта. Добавляем реквизит формы, назовём его "НашаДата". Тип реквизита укажем – "Дата". Вынесем реквизит на форму.

Откроем свойства созданного поля на форме. Создадим обработчик события "ПриИзменении".

Теперь в модуле формы организуем передачу параметра в СКД.

Для случая, когда параметры уже созданы в СКД, и нам нужно передать только значения, код будет таким:

&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
	ДатаПриИзмененииНаСервере();
КонецПроцедуры

&НаСервере
Процедура ДатаПриИзмененииНаСервере()
	
	ЭтаФорма.Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Дата", ЭтаФорма.НашаДата);
	
КонецПроцедуры

В случае, когда параметры заданы в тексте запроса СКД, но не на вкладке "Параметры" конструктора, тогда код нужно настроить в соответствии со следующим примером:

Параметры = КомпоновщикНастроек.Настройки.ПараметрыДанных;
Параметр = Параметры.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ПараметрУказанныйВЗапросе"));

Если Параметр <> Неопределено Тогда

    Параметр.Значение = ЗначениеКотороеМыХотимУстановить;
	Параметр.Использование = Истина;

КонецЕсли;

Комментарии   

+1 #1 Программер 20.04.2017 12:28
Спасибо, помогло!
Цитировать