вторник, 17 января 2017 г.

Программное формирование СКД (управляемая форма, установка параметров и вывод)


Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)

СтандартнаяОбработка = Ложь;

Настройки = КомпоновщикНастроек.Настройки;

УстановитьПараметрСКД(Настройки, "Блок0", Справочники.ПроектыСвойства.НайтиПоКоду("0"));
УстановитьПараметрСКД(Настройки, "Блок1", Справочники.ПроектыСвойства.НайтиПоКоду("1"));
УстановитьПараметрСКД(Настройки, "Блок2", Справочники.ПроектыСвойства.НайтиПоКоду("2"));
УстановитьПараметрСКД(Настройки, "Блок2ПК", Справочники.ПроектыСвойства.НайтиПоКоду("2ПК"));
УстановитьПараметрСКД(Настройки, "Здание0UZU", Справочники.ПроектыСвойства.НайтиПоКоду("0UZU"));
УстановитьПараметрСКД(Настройки, "Период", ТекущаяДата());

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

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

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

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

Процедура УстановитьПараметрСКД(Настройки, ИмяПараметра, Значение)

Параметр = Настройки.ПараметрыДанных.Элементы.Найти(ИмяПараметра);
Если Параметр <> Неопределено Тогда
Параметр.Значение = Значение;
Параметр.Использование = Истина;
КонецЕсли;

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

Установка отбора при открытии формы

Процедура УстановитьОтборПоУмолчанию()

УстановитьОтбор("Ссылка.Организация", УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ОсновнаяОрганизация"));
УстановитьОтбор("Ссылка.ПодразделениеОрганизации", УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ОсновноеПодразделениеОрганизации"));

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

Процедура УстановитьОтбор(ИмяОтбора, Значение)

ЭлементыОтбора = КомпоновщикНастроек.Настройки.Отбор.Элементы;
Для Каждого ЭлементОтбора Из ЭлементыОтбора Цикл
Если ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяОтбора) Тогда
ЭлементОтбора.ПравоеЗначение = Значение;
КонецЕсли;
КонецЦикла;

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

Пример отчета (Скачать)

Комментариев нет:

Отправить комментарий