From d186d5b43e80e73febee4c58dcfd6d71236b873d Mon Sep 17 00:00:00 2001 From: silverbook Date: Fri, 1 Aug 2025 08:51:32 +0500 Subject: [PATCH] new --- .../Программно открыть отчтет с параметрами и отборами.md | 120 ++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 src/content/docs/knowledge-base/Общие/СКД и отчеты/Программно открыть отчтет с параметрами и отборами.md diff --git a/src/content/docs/knowledge-base/Общие/СКД и отчеты/Программно открыть отчтет с параметрами и отборами.md b/src/content/docs/knowledge-base/Общие/СКД и отчеты/Программно открыть отчтет с параметрами и отборами.md new file mode 100644 index 0000000..fc15ea0 --- /dev/null +++ b/src/content/docs/knowledge-base/Общие/СКД и отчеты/Программно открыть отчтет с параметрами и отборами.md @@ -0,0 +1,120 @@ +--- +title: Программно открыть отчтет с параметрами и отборами +slug: общие-скд-и-отчеты/программно-открыть-отчтет-с-параметрами-и-отборами +--- + +```bsl +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ОткрытьОтчетАнализНоменклатурыПоПлануЗакупок(Команда) + + ФормаОтчета = +ПолучитьФорму("Отчет.АнализНоменклатурыПоПлануЗакупок.Форма"); + КомпоновщикНастроек = ФормаОтчета.Отчет.КомпоновщикНастроек; + + // Устанавливаем параметры + Период = Новый СтандартныйПериод; + Период.ДатаНачала = Объект.НачалоПериода; + Период.ДатаОкончания = Объект.ОкончаниеПериода; + УстановитьПользовательскийПараметрСКД(КомпоновщикНастроек, +"Период", Период); + + // Устанавливаем отборы + Если ЗначениеЗаполнено(Объект.Назначение) Тогда + ГруппаНаправлений = +ОбщегоНазначенияУТВызовСервера.ЗначениеРеквизитаОбъекта(Объект.Назначение, +"НаправлениеДеятельности.Родитель"); + УстановитьПользовательскийОтборСКД(КомпоновщикНастроек, +"ГруппаНаправлений", ГруппаНаправлений); + КонецЕсли; + + ТекДанн = Элементы.ТоварыПоПериодам.ТекущиеДанные; + Если ТекДанн <> Неопределено Тогда + УстановитьПользовательскийОтборСКД(КомпоновщикНастроек, +"Номенклатура", ТекДанн.Номенклатура); + КонецЕсли; + + // Открываем форму + ПараметрыФормы = Новый Структура(); + ПараметрыФормы.Вставить("СформироватьПриОткрытии", Истина); + ПараметрыФормы.Вставить("КлючВарианта", "Основной"); + ПараметрыФормы.Вставить("ПользовательскиеНастройки", +КомпоновщикНастроек.ПользовательскиеНастройки); + + ОткрытьФорму("Отчет.АнализНоменклатурыПоПлануЗакупок.Форма", +ПараметрыФормы, ЭтотОбъект); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура УстановитьПользовательскийПараметрСКД(КомпоновщикНастроек, +ИмяПараметра, Значение) + + Настройки = КомпоновщикНастроек.Настройки; + + ПараметрДанных = +Настройки.ПараметрыДанных.Элементы.Найти(ИмяПараметра); + + Если +ЗначениеЗаполнено(ПараметрДанных.ИдентификаторПользовательскойНастройки) +Тогда + + ПользовательскиеНастройки = +КомпоновщикНастроек.ПользовательскиеНастройки; + ПользовательскийПараметр = +ПользовательскиеНастройки.Элементы.Найти(ПараметрДанных.ИдентификаторПользовательскойНастройки); + ПользовательскийПараметр.Использование = Истина; + ПользовательскийПараметр.Значение = Значение; + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьПользовательскийОтборСКД(КомпоновщикНастроек, +ИмяОтбора, Значение, ВидСравнения = Неопределено) + + Настройки = КомпоновщикНастроек.Настройки; + + ПолеКД = Новый ПолеКомпоновкиДанных(ИмяОтбора); + + Для Каждого Элемент Из Настройки.Отбор.Элементы Цикл + + Если Элем.ЛевоеЗначение = ПолеКД Тогда + ЭлементОтбора = Элемент; + Прервать; + КонецЕсли; + + КонецЦикла; + + Если ЭлементОтбора = Неопределено Тогда + Возврат; + КонецЕсли; + + Если +ЗначениеЗаполнено(ЭлементОтбора.ИдентификаторПользовательскойНастройки) +Тогда + + ПользовательскиеНастройки = +КомпоновщикНастроек.ПользовательскиеНастройки; + ПользовательскийОтбор = +ПользовательскиеНастройки.Элементы.Найти(ЭлементОтбора.ИдентификаторПользовательскойНастройки); + ПользовательскийОтбор.Использование = (Значение <> Неопределено); + ПользовательскийОтбор.ВидСравнения = ?(ВидСравнения <> +Неопределено, ВидСравнения, ВидСравненияКомпоновкиДанных.Равно); + ПользовательскийОтбор.ПравоеЗначение = Значение; + ПользовательскийОтбор.РежимОтображения = +РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ; + + КонецЕсли; + +КонецПроцедуры + + +#КонецОбласти +``` \ No newline at end of file