Передача параметра в отчет на СКД

1. sys1c 14.02.16 14:28 Сейчас в теме
Просто мозг сломал. Тут понаходил тоже кучу про это..

Из модуля формы документа, командой:
&НаКлиенте
Процедура ПоказатьБазуРаспределения(Команда)
	
	ПараметрыФормы = Новый Структура;
	ПараметрыФормы.Вставить("Ссылка", Объект.Ссылка);
	
	ОткрытьФорму("Отчет.РасшифровкаДопУслуг.Форма.ФормаОтчета", 
				ПараметрыФормы);
				
КонецПроцедуры
Показать


т.е. в отчет РасшифровкаДопУслуг, мне нужно передать ссылку на документ, из которого она вызывается.

В самом отчете на СКД РасшифровкаДопУслуг, в модуле формы:

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

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

&НаКлиенте
Процедура ПриОткрытии(Отказ)
        
	Параметр = ЭтаФорма.Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Ссылка"));
 КонецПроцедуры
Показать


в СКД, на закладке Параметры прописан это параметр: Имя - Ссылка, Заголовок - Ссылка, Тип - Документ.ПоступлениеТовара

и нифига.. никак не могу засунуть в СКД ссылку (
user811769; +1
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Swetlana 25 14.02.16 15:34 Сейчас в теме
Непонятно. А задача то в чем?
Насколько я помню это делается в команде документа при вызове отчета
+
3. sys1c 14.02.16 16:29 Сейчас в теме
Задача: передать из формы модуля документа, ссылку на этот документ, в отчет, на СКД, чтобы отчет сформировался по этой ссылке. По этому параметру.
+
4. Swetlana 25 14.02.16 20:59 Сейчас в теме
(3) sys1c, отчеты формируются в модуле менеджера. там все есть уже. смотри по аналогии
+
5. sys1c 15.02.16 14:28 Сейчас в теме
В итоге родил вот такой код:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	Параметр = ЭтаФорма.Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Ссылка"));
	
	Параметр.Значение = Параметры.Ссылка;
	Параметр.Использование = Истина;
	//сообщить(Параметр.значение); //<- работает! мое значение, передаваемое из документа
	
КонецПроцедуры
Показать


НО все равно, параметр в отчет не заполняется. Хелп плиз.

+
6. AllexSoft 15.02.16 14:47 Сейчас в теме
(5) sys1c, вам установка параметра на форме ничем не поможет.. вам нужно курить ПриКомпоновкеРезультата и только там устанавливать ваши параметры.. как вы туда передадите значения параметров это уже дело другое )
+
7. herfis 498 15.02.16 14:55 Сейчас в теме
Вероятно, ваш параметр вынесен в пользовательские настройки отчета. Нужно либо убрать его из пользовательских настроек либо заполнять через КомпоновщикНастроек.ПользовательскиеНастройки.
ЗЫ. Вообще, в подобных случаях правильнее рулить отчетами не через параметры, а через отборы СКД. Тогда не нужны костыли вроде специального параметра для специального фильтра. Если же это не отчет, а по сути развесистая печатная форма - тогда логичнее засунуть ее в макеты документа.
+
8. Eaysmax 1 15.02.16 15:10 Сейчас в теме
НужныйПараметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[0] /// ну или Элементы[1] Элементы[2] смотря каким твой параметр в СКД стоит
НужныйПараметр.Значение = ТоЧтоВПараметрНадоЗасунуть;
Настройки = КомпоновщикНастроек.Настройки;

Примерно так
+
9. herfis 498 15.02.16 15:17 Сейчас в теме
Может, пригодится... Ниже пример для расшифровки одного отчета СКД другим отчетом СКД. Там используются некоторые нетиповые функции, но смысл понятен. Если надо, могу и их выложить.
// получим форму отчета для расшифровки
ФормаОтчетаРасшифровки = ПолучитьФорму(ЭтаФорма.ИмяФормы, Новый Структура("КлючВарианта", "КомплектовочныеЛисты"), ЭтаФорма, Истина);

// перенесем дату отчета в отчет-расшифровку
ПараметрДатыЭтогоОтчета = УправлениеОтчетамиКлиентСервер.ПолучитьПользовательскийПараметр("НачалоПериода", Отчет.КомпоновщикНастроек);
ПараметрДатыОтчетаРасшифровки = УправлениеОтчетамиКлиентСервер.ПолучитьПользовательскийПараметр("НачалоПериода", ФормаОтчетаРасшифровки.Отчет.КомпоновщикНастроек);
Если ПараметрДатыЭтогоОтчета <> Неопределено И ПараметрДатыОтчетаРасшифровки <> Неопределено Тогда
	ЗаполнитьЗначенияСвойств(ПараметрДатыОтчетаРасшифровки,ПараметрДатыЭтогоОтчета,"Значение,Использование");
КонецЕсли;

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

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

ФормаОтчетаРасшифровки.Открыть();
ФормаОтчетаРасшифровки.СкомпоноватьРезультат();
Показать
igee12; +1
Внимание! Тема сдана в архив

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