Имя: Пароль:
1C
1С v8
Передача параметра в отчет на СКД
0 RedTop
 
15.02.16
05:35
Необходимо передать параметр из Документа в Отчет, написанный на СКД (т.е. кроме СКД в нем ничего нет).
Параметр - ссылка на сам документ.

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

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

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

На закладке Параметры, в СКД, добавлен этот параметр "Ссылка" с типом документа...
И нифига СКД не хватает этот параметр...
Подскажите, куда чего дописать?
1 Михаил 1С
 
15.02.16
06:58
(0) "Параметр.Значение = Параметры.Ссылка;"
А ты попробуй еще написать Параметр.Использование = Истина;
2 RedTop
 
15.02.16
07:08
не помогает (
3 Михаил 1С
 
15.02.16
07:38
А ты когда запускаешь СКД, то, если нажмешь потом "Настройка", то твой параметр заполнен? Или он остался пустым?
4 ЧеловекДуши
 
15.02.16
07:43
(0) Используй при загрузки варианта или как-то так. :)
5 RedTop
 
15.02.16
07:48
Он "запоминает" то что я в него вручную сую.
Однако если

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

КонецПроцедуры
    
то будет именно моя передаваемая ссылка! Но она зараза никак не хочет залезть в параметры СКД
6 RedTop
 
15.02.16
07:50
7 Михаил 1С
 
15.02.16
07:54
(6) Это ты конфигуратор показываешь.
Интересно видеть уже в "1С: Предприятии" - нажми там кнопку "настройка", вкладка Параметры - и посмотри что стоит в этом параметре?

Кстати, а вот в конфигураторе, в том окне, где ты показал - должна стоять галка "Включать в доступные поля" и не стоять галка "Ограничение использования".
8 Михаил 1С
 
15.02.16
07:55
(5) Я у себя использую такой код:

КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Дата").Значение = Дата;    КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Дата").Использование = Истина;
9 RedTop
 
15.02.16
08:09
"Кстати, а вот в конфигураторе, в том окне, где ты показал - должна стоять галка "Включать в доступные поля" и не стоять галка "Ограничение использования"."

Да. все так.

https://i.gyazo.com/10a4926e4249a8524aea2e02a40ad79e.png

"
Я у себя использую такой код:

КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Дата").Значение = Дата;  "

Но ведь это "не внешний" параметр? у меня он идет из документа. Хотя конечно какая разница.. Но не работает хоть тресни... (
10 Михаил 1С
 
15.02.16
08:41
(9) Ты знаешь, наверное надо заполнять параметр в ПриОткрытии(). Я еще не спец в запуске СКД из управляемой формы. Но раз у тебя не выскакивает ошибки, но параметр остался пустым, то попробуй заполнять его в ПриОткрытии(). У меня там работает.

Наверняка ты не сможешь добраться до Параметров формы на клиенте. Чтож, подумай как это обойти :)
Если не получится - спроси, я скажу.
11 Михаил 1С
 
15.02.16
08:42
(10) "У меня там работает" - это в обычных формах. Но должно быть одинакого.
//может быть СКД инициализируется перед запуском ПриОткрытии().
12 RedTop
 
15.02.16
11:35
я понял в чем разница в наших примерах.
У вас параметр то "рождается" уже в форме скд.
А у меня передается из стороннего документа.

Собственно вопрос до сих пор актуальный, как передать параметр? (
13 ИС-2
 
naïve
15.02.16
11:50
(12) как понимаю параметр передался, но отчет не работает? Не знаю как выглядит отчет, но попробуй

    КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Ссылка",параметры.ссылка);

если выдаст ошибку, то надо добавить параметр в компоновщик настроек
14 RedTop
 
15.02.16
12:05
Ошибку не выдает... но параметр на форме отчета остается не заполненным (

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

    //Параметр.Использование = Истина;
    Параметр.Значение = Параметры.Ссылка;
    
    //Параметры.СформироватьПриОткрытии = Истина;
    //сообщить(Параметр.значение); // БЕЗ ПРОБЛЕМ ВЫСВЕТИТ МОЮ ССЫЛКУ

КонецПроцедуры
15 RedTop
 
15.02.16
14:04
хелп плиз (
16 Михаил 1С
 
18.02.16
13:43
(12) Да нет никакой разницы в наших задачах! Она только в том, что у меня Обычные формы, а у тебя УФ.

Какая разница откуда у тебя берется значение параметра? Я тоже делал отчеты, запускаемые из документов, СКД работала как надо.
Сделай так как я сказал в (10), и напиши что будет.
То есть - посылай параметр в процедуре ПриОткрытии(). И используй код, который дал я в (8).
У тебя будет одна трудность - в ПриОткрытии() ты не сможешь использовать параметры формы. Ну так создай еще реквизит формы, и в процедуре ПриСозданииНаСервере() запиши в него значение из Параметра формы. Далее реквизит уже будет доступен в ПриОткрытии().
17 Ma3eIIa
 
18.02.16
13:50
18 Ma3eIIa
 
18.02.16
13:51
(17) ну или сюда сходить.
http://forum.infostart.ru/forum26/topic107562/
Ошибка? Это не ошибка, это системная функция.