Приветствую Вас ГостьВоскресенье, 19.05.2024, 05:07

Каталог статей


Программное формирование отчета

Сформировать отчет СКД программно можно 2 способами:

1. сформировать табличный документ, чтобы потом его показать или выполнит какие-то действия, например сохранить

&НаКлиенте
Процедура Печать(Команда)
    Результат = ВывестиСписокНоменклатуры();
    Результат.ОтображатьСетку = Ложь;
    Результат.ОтображатьЗаголовки = Ложь;
    Результат.Показать();
КонецПроцедуры

&НаСервереБезКонтекста
Функция ВывестиСписокНоменклатуры()

    // В качестве схемы компоновки данных используем макет отчета "Список Номенклатуры".
    СхемаКомпоновкиДанных = Отчеты.СписокНоменклатуры.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");

    // Получим настройки по умолчанию.
    Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;

    // Сформируем макет компоновки данных.     
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки);

    // Выполним компоновку данных.
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки);

    // Выведем результат компоновки в табличный документ.
    ДокументРезультат = Новый ТабличныйДокумент;
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);

    Возврат ДокументРезультат;

КонецФункции

2. открыть форму отчета СКД с параметром "СформироватьПриОткрытии"

&НаКлиенте
Процедура Отчет(Команда)

    ПараметрыФормы = Новый Структура("СформироватьПриОткрытии", Истина);
    ОткрытьФорму("Отчет.СписокНоменклатуры.Форма", ПараметрыФормы);

КонецПроцедуры

В данном случае отчет запускается с теми параметрами, которые были указаны в настройках при разработке. Если надо запустить отчет с другими параметрами, то надо их добавить в структуру параметров вызова формы отчета и обработать их в событии "ПередЗагрузкойВариантаНаСервере() и ПередЗагрузкойПользовательскихНастроекНаСервере(). Последний метод вызывается если отчет вызывался пользователем ранее и он изменил настройки.

Пример установки и обработки параметров отчета:

1.1. Добавляем нужные параметры перед открытием формы отчета:

ПараметрыФормы = Новый Структура("СформироватьПриОткрытии", Истина);

ПараметрыФормы.Вставить("Отделение", Отделение1)

1.2. Создаем основную форму отчета. В форме отчета создадим реквизиты ("Отделение") для хранения переданных параметров. Так же можно создать для формы ключевые параметры и передать значения в них.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

    Если Параметры.Свойство("Отделение") Тогда
        Отделение = Параметры.Отделение;
    КонецЕсли;

КонецПроцедуры

1.3. Переносим значения переданных параметров в настройки СКД

&НаСервере

Процедура ПередЗагрузкойВариантаНаСервере(Настройки)

    Настройки.ПараметрыВывода.УстановитьЗначениеПараметра("Отделение", Отделение);

КонецПроцедуры

&НаСервере

Процедура ПередЗагрузкойПользовательскихНастроекНаСервере(Настройки)

    Настройки.ПараметрыВывода.УстановитьЗначениеПараметра("Отделение", Отделение);

КонецПроцедуры

 

Если отчет открывается вручную через интерфейс, но надо, чтобы он сразу формировался, не дожидаясь нажатия на кнопку "Сформировать", то надо создать форму отчета и в модуле формы добавить:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

    Параметры.СформироватьПриОткрытии = Истина;

КонецПроцедуры

 

Бывают случаи, когда надо сформировать отчет из формы отчета с предварительной обработкой параметров. Для этого в форме отчета можно создать команду "Сформировать" и в её обработке, после выполнения преобразований параметров, вызвать метод СкомпоноватьРезультат().

Пример:

    ОтчетОбъект = РеквизитФормыВЗначение("Отчет");
    ОтчетОбъект.СкомпоноватьРезультат(Результат"); // Результат - это табличный документ. Параметр ИнформацияРасшифровки можно не указывать.

 

Категория: СКД | Добавил: leshic (22.11.2021)
Просмотров: 323 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Вход на сайт
Поиск
Категории раздела
СКД [48]
Регистры [7]
Формы [41]
Администрирование [35]
Запросы [10]
Объекты конфигурации и типы данных [20]
Взаимодействие с другими базами, приложениями и источниками данных [16]
Программирование [29]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0