Skip to content

Программно открыть отчтет с параметрами и отборами

#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ОткрытьОтчетАнализНоменклатурыПоПлануЗакупок(Команда)
ФормаОтчета =
ПолучитьФорму("Отчет.АнализНоменклатурыПоПлануЗакупок.Форма");
КомпоновщикНастроек = ФормаОтчета.Отчет.КомпоновщикНастроек;
// Устанавливаем параметры
Период = Новый СтандартныйПериод;
Период.ДатаНачала = Объект.НачалоПериода;
Период.ДатаОкончания = Объект.ОкончаниеПериода;
УстановитьПользовательскийПараметрСКД(КомпоновщикНастроек,
"Период", Период);
// Устанавливаем отборы
Если ЗначениеЗаполнено(Объект.Назначение) Тогда
ГруппаНаправлений =
ОбщегоНазначенияУТВызовСервера.ЗначениеРеквизитаОбъекта(Объект.Назначение,
"НаправлениеДеятельности.Родитель");
УстановитьПользовательскийОтборСКД(КомпоновщикНастроек,
"ГруппаНаправлений", ГруппаНаправлений);
КонецЕсли;
ТекДанн = Элементы.ТоварыПоПериодам.ТекущиеДанные;
Если ТекДанн <> Неопределено Тогда
УстановитьПользовательскийОтборСКД(КомпоновщикНастроек,
"Номенклатура", ТекДанн.Номенклатура);
КонецЕсли;
// Открываем форму
ПараметрыФормы = Новый Структура();
ПараметрыФормы.Вставить("СформироватьПриОткрытии", Истина);
ПараметрыФормы.Вставить("КлючВарианта", "Основной");
ПараметрыФормы.Вставить("ПользовательскиеНастройки",
КомпоновщикНастроек.ПользовательскиеНастройки);
ОткрытьФорму("Отчет.АнализНоменклатурыПоПлануЗакупок.Форма",
ПараметрыФормы, ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаКлиенте
Процедура УстановитьПользовательскийПараметрСКД(КомпоновщикНастроек,
ИмяПараметра, Значение)
Настройки = КомпоновщикНастроек.Настройки;
ПараметрДанных =
Настройки.ПараметрыДанных.Элементы.Найти(ИмяПараметра);
Если
ЗначениеЗаполнено(ПараметрДанных.ИдентификаторПользовательскойНастройки)
Тогда
ПользовательскиеНастройки =
КомпоновщикНастроек.ПользовательскиеНастройки;
ПользовательскийПараметр =
ПользовательскиеНастройки.Элементы.Найти(ПараметрДанных.ИдентификаторПользовательскойНастройки);
ПользовательскийПараметр.Использование = Истина;
ПользовательскийПараметр.Значение = Значение;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УстановитьПользовательскийОтборСКД(КомпоновщикНастроек,
ИмяОтбора, Значение, ВидСравнения = Неопределено)
Настройки = КомпоновщикНастроек.Настройки;
ПолеКД = Новый ПолеКомпоновкиДанных(ИмяОтбора);
Для Каждого Элемент Из Настройки.Отбор.Элементы Цикл
Если Элем.ЛевоеЗначение = ПолеКД Тогда
ЭлементОтбора = Элемент;
Прервать;
КонецЕсли;
КонецЦикла;
Если ЭлементОтбора = Неопределено Тогда
Возврат;
КонецЕсли;
Если
ЗначениеЗаполнено(ЭлементОтбора.ИдентификаторПользовательскойНастройки)
Тогда
ПользовательскиеНастройки =
КомпоновщикНастроек.ПользовательскиеНастройки;
ПользовательскийОтбор =
ПользовательскиеНастройки.Элементы.Найти(ЭлементОтбора.ИдентификаторПользовательскойНастройки);
ПользовательскийОтбор.Использование = (Значение <> Неопределено);
ПользовательскийОтбор.ВидСравнения = ?(ВидСравнения <>
Неопределено, ВидСравнения, ВидСравненияКомпоновкиДанных.Равно);
ПользовательскийОтбор.ПравоеЗначение = Значение;
ПользовательскийОтбор.РежимОтображения =
РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
КонецЕсли;
КонецПроцедуры
#КонецОбласти