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

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

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

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

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

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

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

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

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

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

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

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

КонецЕсли;

Комментарии   

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

Комментарии

  • Moby 05.07.2018 11:51
    Спасибо! По "Варианту 2" заработало только после добавления ресурса в выбранные поля группировки строк. Не помню что до этого менял, может ресурс там и был когда-то.

    Подробнее...

     
  • MariNew 20.06.2018 15:36
    Отлично!!! У меня получилось!!!! СПАСИБО!

    Подробнее...

     
  • Ирина 09.06.2018 13:05
    Спасибо большое! Пригодилось.

    Подробнее...