gifts2017

СКД: Установка параметров программно в созданную программным образом схему

Опубликовал sockor sockor (sockor) в раздел Программирование - Практика программирования

Установить параметры в отчет, где есть объект "КомпоновщикНастроек", просто, а если схема создана программным образом, требуется перехват процедуры формирования.

Обычным образом 

КомпоновщикНастроекСКД = ОтчетОбъект.КомпоновщикНастроек;
ПараметрСКД = КомпоновщикНастроекСКД.Настройки.ПараметрыДанных.Элементы.Найти(ИмяПараметра);
ПараметрСКД.Использование = Истина;
ПараметрСКД.Значение      = Значение;

При формировании схемы программным путем

ТаблицаСШагом = Новый ТаблицаЗначений;
	ТаблицаСШагом.Колонки.Добавить("Шаг",            Новый ОписаниеТипов("Число",,  Новый КвалификаторыЧисла(3, 0, ДОпустимыйЗнак.Неотрицательный)));
	ТаблицаСШагом.Колонки.Добавить("Наименование",   Новый ОписаниеТипов("Строка",, Новый КвалификаторыСтроки(3, ДопустимаяДлина.Фиксированная)));
	ЗаполнитьТаблицуСШагом(ТаблицаСШагом);
	
	СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
	
	// компоновщик настроек, выгрузка, настройка и загрузка
	Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
	КомпНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
    КомпНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
    КомпНастроек.ЗагрузитьНастройки(Настройки);
	СтруктураПараметров = ПолучитьСтруктуруПараметров(); ЗаполнитьПараметрыПоСтруктуреПараметров(КомпНастроек.Настройки,СтруктураПараметров); Настройки = КомпНастроек.ПолучитьНастройки();
	
	ДанныеРасшифровки         = Новый ДанныеРасшифровкиКомпоновкиДанных;
	КомпоновщикМакета         = Новый КомпоновщикМакетаКомпоновкиДанных;
	МакетКомпоновки           = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
	ВнешнийНаборДанных        = Новый Структура("ТаблицаСШагом", ТаблицаСШагом);
	ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
	ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешнийНаборДанных, ДанныеРасшифровки);
	
	ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
	ПроцессорВывода.УстановитьДокумент(ЭлементыФормы.Результат);
	ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);

где

Функция ПолучитьСтруктуруПараметров()
 
    Структура = Новый Структура; //Ключ структуры - Имя параметра схемы компановки; Значение структуры - Значение реквизита с формы
	
	СписокНежелательныхГрупп = новый СписокЗначений;
	Поиск = Справочники.Номенклатура.НайтиПоКоду("С597");
	Если Поиск<>Справочники.Номенклатура.ПустаяСсылка() Тогда
		СписокНежелательныхГрупп.Добавить(Поиск);
	КонецЕсли; 
    Структура.Вставить("СписокНежелательныхГрупп",СписокНежелательныхГрупп); 
    
    Возврат Структура;
 
КонецФункции
 
Процедура ЗаполнитьПараметрыПоСтруктуреПараметров(Настройки,СтруктураПараметров)
 
    Для Каждого Стр Из СтруктураПараметров Цикл 
        Параметр = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных(Стр.Ключ));
        Если НЕ Параметр = Неопределено Тогда 
            Параметр.Значение = Стр.Значение;
            Параметр.Использование = Истина;
        КонецЕсли;  
    КонецЦикла; 
 
КонецПроцедуры

В СКД представлен способ формирования прайс-листа с заданным шагом прироста цены.

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
ОтчетПример
.erf 11,78Kb
03.03.15
1
.erf 11,78Kb 1 Скачать

См. также

Подписаться Добавить вознаграждение
В этой теме еще нет сообщений.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа