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

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

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


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

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

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

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

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


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

и нифига.. никак не могу засунуть в СКД ссылку (
user811769; +1 Ответить
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. Swetlana 20 14.02.16 15:34 Сейчас в теме
Непонятно. А задача то в чем?
Насколько я помню это делается в команде документа при вызове отчета
3. sys1c 14.02.16 16:29 Сейчас в теме
Задача: передать из формы модуля документа, ссылку на этот документ, в отчет, на СКД, чтобы отчет сформировался по этой ссылке. По этому параметру.
4. Swetlana 20 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 421 15.02.16 14:55 Сейчас в теме
Вероятно, ваш параметр вынесен в пользовательские настройки отчета. Нужно либо убрать его из пользовательских настроек либо заполнять через КомпоновщикНастроек.ПользовательскиеНастройки.
ЗЫ. Вообще, в подобных случаях правильнее рулить отчетами не через параметры, а через отборы СКД. Тогда не нужны костыли вроде специального параметра для специального фильтра. Если же это не отчет, а по сути развесистая печатная форма - тогда логичнее засунуть ее в макеты документа.
8. Eaysmax 15.02.16 15:10 Сейчас в теме
НужныйПараметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[0] /// ну или Элементы[1] Элементы[2] смотря каким твой параметр в СКД стоит
НужныйПараметр.Значение = ТоЧтоВПараметрНадоЗасунуть;
Настройки = КомпоновщикНастроек.Настройки;

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

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

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

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

ФормаОтчетаРасшифровки.Открыть();
ФормаОтчетаРасшифровки.СкомпоноватьРезультат();
Показать
Оставьте свое сообщение
Вопросы с вознаграждением
Вакансии
Программист 1С
Пермь
зарплата до 120 000 руб.
Полный день

Программист 1С
Новосибирск
зарплата от 150 000 руб.
Полный день

Программист 1С
Нижний Новгород
зарплата от 70 000 руб.
Полный день

Программист 1С
Москва
зарплата от 170 000 руб.
Полный день

Программист 1С
Казань
зарплата от 100 000 руб.
Полный день