Передать параметры в Скд с формы

1. sajmon45 06.03.20 10:58 Сейчас в теме
Передаю так параметры в СКД, но КомпоновщикНастроек не работает в тонком клиенте как сделать по другому, чтобы работало и в тонком?
&НаКлиенте
Процедура ПриОткрытии(Отказ)
			Настройки = Отчет.КомпоновщикНастроек.ПолучитьНастройки();
	
	Для Каждого ПараметрДанных Из Настройки.ПараметрыДанных.Элементы Цикл 
		
		Если ПараметрДанных.Параметр = Новый ПараметрКомпоновкиДанных("Ссылка") Тогда 
			
			ПараметрДанных.Использование = Истина;
			ПараметрДанных.Значение = ВладелецФормы.Объект.Ссылка;
			
		КонецЕсли; 
		
		Если ПараметрДанных.Параметр = Новый ПараметрКомпоновкиДанных("Месяц") Тогда 
			
			ПараметрДанных.Использование = Истина;
			ПараметрДанных.Значение = ВладелецФормы.Объект.ПериодРегистрации;
			
		КонецЕсли; 
		
	КонецЦикла;
	
	Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
	
	СкомпоноватьРезультат();

КонецПроцедуры
Показать
user811769; +1 Ответить
По теме из базы знаний
Найденные решения
13. sajmon45 06.03.20 13:21 Сейчас в теме
Сделал проще создал реквизиты на форме в них в модуле формы передал реквизиты с Владельца формы, а в модуле объекта эти реквизиты принял
Модуль формы
&НаКлиенте
Процедура ПриОткрытии(Отказ)
	Отчет.Ссылка = ВладелецФормы.Объект.Ссылка;

	Отчет.Месяц = ВладелецФормы.Объект.ПериодРегистрации;
    

	
	СкомпоноватьРезультат();

КонецПроцедуры
Показать

Модуль объекта
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
	Настройки = КомпоновщикНастроек.ПолучитьНастройки();
    
    Для Каждого ПараметрДанных Из Настройки.ПараметрыДанных.Элементы Цикл 
        
        Если ПараметрДанных.Параметр = Новый ПараметрКомпоновкиДанных("Ссылка") Тогда 
            
            ПараметрДанных.Использование = Истина;
            ПараметрДанных.Значение = Ссылка;
            
        КонецЕсли; 
        
        Если ПараметрДанных.Параметр = Новый ПараметрКомпоновкиДанных("Месяц") Тогда 
            
            ПараметрДанных.Использование = Истина;
            ПараметрДанных.Значение = Формат(Месяц,"ДФ='ММММ yyyy'");
            
        КонецЕсли; 
        
    КонецЦикла;
    
    КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
    
КонецПроцедуры
Показать
user811769; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
12. herfis 499 06.03.20 12:12 Сейчас в теме
(1) Попробуй свой "ПараметрДанных" для последующего редактирования вот так получать:
ПараметрМесяца = УправлениеОтчетамиКлиентСервер.ПолучитьПользовательскийПараметр("Период", Отчет.КомпоновщикНастроек);


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

Функция ПолучитьПредопределенныйЭлементПользовательскихНастроек(ЭлементНастроекВарианта, ПользовательскиеНастройки) Экспорт
	
	НайденныйЭлемент = Неопределено;
	
	Если ЭлементНастроекВарианта <> Неопределено Тогда
		
		НайденныйЭлемент = ПользовательскиеНастройки.Элементы.Найти(ЭлементНастроекВарианта.ИдентификаторПользовательскойНастройки);
		
	КонецЕсли;
		
	Возврат НайденныйЭлемент;
	
КонецФункции
Показать
2. succub1_5 89 06.03.20 11:46 Сейчас в теме
СКД на сервере формируется, процедура в модуле объекта:
&НаСервере 
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
    
    Для Каждого ПараметрДанных Из Настройки.ПараметрыДанных.Элементы Цикл 
        
        Если ПараметрДанных.Параметр = Новый ПараметрКомпоновкиДанных("Ссылка") Тогда 
            
            ПараметрДанных.Использование = Истина;
            ПараметрДанных.Значение = Ссылка;
            
        КонецЕсли; 
        
        Если ПараметрДанных.Параметр = Новый ПараметрКомпоновкиДанных("Месяц") Тогда 
            
            ПараметрДанных.Использование = Истина;
            ПараметрДанных.Значение = ПериодРегистрации;
            
        КонецЕсли; 
        
    КонецЦикла;
    
    КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
    

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

Показать
3. sajmon45 06.03.20 11:49 Сейчас в теме
(2) Переменная не определена (Отчет) и Переменная не определена (ВладелецФормы) что делать?
4. SaschaL 06.03.20 11:56 Сейчас в теме
Отчет у вас внешний или внутри конфигурации?
5. sajmon45 06.03.20 11:59 Сейчас в теме
6. SaschaL 06.03.20 11:59 Сейчас в теме
А вот так попробуйте

Настройки = КомпоновщикНастроек.ПолучитьНастройки();

Я у себя так во внешнем сделал , у меня работает
7. herfis 499 06.03.20 12:00 Сейчас в теме
Чой-то компоновщик настроек в тонком клиенте не работает? Должен работать.
Я правда не пробовал менять пользовательские настройки через ЗагрузитьНастройки(), хотя по описанию должно.
Всегда редактировал напрямую через КомпоновщикНастроек.ПользовательскиеНастройки
8. SaschaL 06.03.20 12:03 Сейчас в теме
я делаю немного другой отчет, передаю таблицу значений в СКД, отчет внешний

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

//Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
// - Если сделать так, как показано выше(рекомендуют на некоторых ресурсах), то при изменении настроек в режиме клиента
// этих изменений Вы не увидите, потому что настройки всегда будут по умолчанию. Как правильно - вариант ниже
Настройки = КомпоновщикНастроек.ПолучитьНастройки();

ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;

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

//ВнешнийНаборДанных = Новый Структура("ПримерТаблицыЗначений", ТЗВывод);
ВнешнийНаборДанных = Новый Структура("ТаблицаМатериалы", ТаблицаМатериалы);

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

ДокументРезультат.Очистить();

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


Пример рабочий, потому что отчет работает
9. sajmon45 06.03.20 12:04 Сейчас в теме
(8) А где параметры передаются?
10. SaschaL 06.03.20 12:06 Сейчас в теме
(9)ВнешнийНаборДанных = Новый Структура("ТаблицаМатериалы", ТаблицаМатериалы);

Вот тут я передал таблицу значений, она формировалась ранее, тоже программно
11. herfis 499 06.03.20 12:08 Сейчас в теме
(9) Пробросить параметры в ПриКомпоновке можно, но не нужно. Все должно и с клиента прекрасно устанавливаться.
13. sajmon45 06.03.20 13:21 Сейчас в теме
Сделал проще создал реквизиты на форме в них в модуле формы передал реквизиты с Владельца формы, а в модуле объекта эти реквизиты принял
Модуль формы
&НаКлиенте
Процедура ПриОткрытии(Отказ)
	Отчет.Ссылка = ВладелецФормы.Объект.Ссылка;

	Отчет.Месяц = ВладелецФормы.Объект.ПериодРегистрации;
    

	
	СкомпоноватьРезультат();

КонецПроцедуры
Показать

Модуль объекта
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
	Настройки = КомпоновщикНастроек.ПолучитьНастройки();
    
    Для Каждого ПараметрДанных Из Настройки.ПараметрыДанных.Элементы Цикл 
        
        Если ПараметрДанных.Параметр = Новый ПараметрКомпоновкиДанных("Ссылка") Тогда 
            
            ПараметрДанных.Использование = Истина;
            ПараметрДанных.Значение = Ссылка;
            
        КонецЕсли; 
        
        Если ПараметрДанных.Параметр = Новый ПараметрКомпоновкиДанных("Месяц") Тогда 
            
            ПараметрДанных.Использование = Истина;
            ПараметрДанных.Значение = Формат(Месяц,"ДФ='ММММ yyyy'");
            
        КонецЕсли; 
        
    КонецЦикла;
    
    КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
    
КонецПроцедуры
Показать
user811769; +1 Ответить
14. herfis 499 06.03.20 15:01 Сейчас в теме
(13) Интересно. А когда-то реквизиты отчетов/обработок не пробрасывались в модуль объекта на сервере. Это было одно из первых моих "спотыканий" при изучении УФ.
15. sajmon45 06.03.20 23:38 Сейчас в теме
(14) Сам не знал, но ограниченность времени и метод тыка привел меня к такому результату
17. spacecraft 22.04.22 08:33 Сейчас в теме
(14)
А когда-то реквизиты отчетов/обработок не пробрасывались в модуль объекта на сервере.

Что-то не припомню такого. Это же реквизиты самого объекта и они доступны в модуле объекта напрямую. Это не реквизиты формы (просто (13) не правильно выразился "создал реквизиты на форме", на самом деле были созданы реквизиты самого отчета).
16. sys1c 22.04.22 06:46 Сейчас в теме
(13) Подскажите, как у вас удалось передать параметры в ПриКомпоновкеРезультата
сделал по вашему примеру. Но у меня не передаются параметры в Настройки.ПараметрыДанных.Элементы из ПриОткрытии, да и честно говоря не понимаю, почему реквизит формы должен туда попасть.
Оставьте свое сообщение

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