Установить значение параметра макета СКД

1. JasonT 03.02.23 17:49 Сейчас в теме
Здравствуйте.
Есть документ. У него есть реквизит табличный документ. Заполняется этот реквизит с помощью компоновки макета СКД. Возникла проблема в непонимании как передать параметры в этот макет или компоновщик

Об = РеквизитФормыВЗначение("Объект");
Схема = Об.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
Настройки = Схема.НастройкиПоУмолчанию;
ПараметрКомпоновки = Новый ПараметрКомпоновкиДанных("ДатаНачала");
ПараметрСКД = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(ПараметрКомпоновки);


Код который приведен выше устанавливает значение переменной ПараметрСКД равной Неопределено. И, следовательно, нельзя задать значение параметра. Как нужно передавать параметры в моем случае? Помогите, пожалуйста.
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
2. DesertPunk 03.02.23 18:26 Сейчас в теме
(1) Я вот так программно формировал таблицу на СКД:
Функция Отчет()
	
	СхемаКомпоновкиДанных  = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
	
	КомпоновщикНастроек1 = Новый КомпоновщикНастроекКомпоновкиДанных;
	КомпоновщикНастроек1.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
	КомпоновщикНастроек1.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
	КомпоновщикНастроек1.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Период", ЭтотОбъект.Период);	
	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
	МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,КомпоновщикНастроек1.Настройки,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
	ПроцессорКомпоновки = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
	
	ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
	ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
	
	ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
	Результат = Новый ТаблицаЗначений;
	
	
	ПроцессорВывода.УстановитьОбъект(Результат);
	ПроцессорВывода.Вывести(ПроцессорКомпоновки);
	
	КвалификаторДаты = Новый КвалификаторыДаты(ЧастиДаты.ДатаВремя);
	КвалификаторЧисла = Новый КвалификаторыЧисла(15,2,ДопустимыйЗнак.Неотрицательный);
	
	ТабИтог = новый ТаблицаЗначений;
	ТабИтог.Колонки.Добавить("Объект", Новый ОписаниеТипов("СправочникСсылка.Склады"));
	ТабИтог.Колонки.Добавить("ГруппаРаспределения", Новый ОписаниеТипов("СправочникСсылка.ГруппыРаспределения"));
	ТабИтог.Колонки.Добавить("ЗП", Новый ОписаниеТипов("Число",,,КвалификаторЧисла));
	ТабИтог.Колонки.Добавить("ПериодНачисления", Новый ОписаниеТипов("Дата",,,КвалификаторДаты));
	
	ТабИтог = Результат;
	Отбор = Новый Структура("ПериодНачисления");
	МассивПустыхСтрок = ТабИтог.НайтиСтроки(Отбор);
	Для Каждого СтрокаМассива из МассивПустыхСтрок Цикл
		ТабИтог.Удалить(СтрокаМассива);
	КонецЦикла;
	
	
	Возврат ТабИтог;
КонецФункции
Показать


Весь код тебе не нужен, что-нибудь может пригодиться.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. DesertPunk 03.02.23 18:26 Сейчас в теме
(1) Я вот так программно формировал таблицу на СКД:
Функция Отчет()
	
	СхемаКомпоновкиДанных  = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
	
	КомпоновщикНастроек1 = Новый КомпоновщикНастроекКомпоновкиДанных;
	КомпоновщикНастроек1.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
	КомпоновщикНастроек1.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
	КомпоновщикНастроек1.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Период", ЭтотОбъект.Период);	
	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
	МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,КомпоновщикНастроек1.Настройки,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
	ПроцессорКомпоновки = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
	
	ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
	ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
	
	ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
	Результат = Новый ТаблицаЗначений;
	
	
	ПроцессорВывода.УстановитьОбъект(Результат);
	ПроцессорВывода.Вывести(ПроцессорКомпоновки);
	
	КвалификаторДаты = Новый КвалификаторыДаты(ЧастиДаты.ДатаВремя);
	КвалификаторЧисла = Новый КвалификаторыЧисла(15,2,ДопустимыйЗнак.Неотрицательный);
	
	ТабИтог = новый ТаблицаЗначений;
	ТабИтог.Колонки.Добавить("Объект", Новый ОписаниеТипов("СправочникСсылка.Склады"));
	ТабИтог.Колонки.Добавить("ГруппаРаспределения", Новый ОписаниеТипов("СправочникСсылка.ГруппыРаспределения"));
	ТабИтог.Колонки.Добавить("ЗП", Новый ОписаниеТипов("Число",,,КвалификаторЧисла));
	ТабИтог.Колонки.Добавить("ПериодНачисления", Новый ОписаниеТипов("Дата",,,КвалификаторДаты));
	
	ТабИтог = Результат;
	Отбор = Новый Структура("ПериодНачисления");
	МассивПустыхСтрок = ТабИтог.НайтиСтроки(Отбор);
	Для Каждого СтрокаМассива из МассивПустыхСтрок Цикл
		ТабИтог.Удалить(СтрокаМассива);
	КонецЦикла;
	
	
	Возврат ТабИтог;
КонецФункции
Показать


Весь код тебе не нужен, что-нибудь может пригодиться.
4. JasonT 06.02.23 12:34 Сейчас в теме
(2)
КомпоновщикНастроек1.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);


Спасибо. То что нужно. Нужна была только эта часть кода:

 КомпоновщикНастроек1 = Новый КомпоновщикНастроекКомпоновкиДанных;
 КомпоновщикНастроек1.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
 КомпоновщикНастроек1.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
 КомпоновщикНастроек1.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Период", ЭтотОбъект.Период);


И спасибо за все остальное, пригодится.
3. echo77 1908 05.02.23 15:04 Сейчас в теме
(1) Ключевое в этом вопросе - использовать объект КомпоновщикНастроек и использовать этот объект при компоновке СКД.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот