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