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