Имя: Пароль:
1C
1С v8
Параметр СКД
0 first_may
 
03.12.11
16:28
Добрый день!

Начал изучать СКД. Решил получить простейший отчет по запросу:
ВЫБРАТЬ
   Номенклатура.Ссылка,
   Номенклатура.Наименование
ИЗ
   Справочник.Номенклатура КАК Номенклатура
ГДЕ
   Номенклатура.Родитель = &Родитель

Подскажите пожалуйста, как сделать так, что бы параметр Родитель можно было изменять в форме, которая появляется при нажатии кнопки Настройка в отчете, сделанным на основе СКД?
1 Wobland
 
03.12.11
16:30
а сейчас параметр намертво указан?
2 first_may
 
03.12.11
16:40
Нет, запрос имено такой какой приведен здесь. Я даже его вижу на закладке Параметры в СКД. А на закладке Настройка, выделив Отчет внижней таблице вижу галочку "Отображать недоступныепараметры ...". Но вызывая отчет из предприятия, в настройках нет вожножности указать значение этого параметра.
3 first_may
 
03.12.11
16:44
То Wobland: могу прислать этот отчет. Он под 1С:Предприятие 8.2 (8.2.14.537). Может что то не так я делаю?
4 Armando
 
03.12.11
16:58
В СКД на закладке "Параметры" убери галку с "Ограничение доступности". Тогда этот параметр появится в настройках варианта на закладке "Параметры". Это там, где ты видишь флаг "Отображать недоступные параметры". В этой таблице встаешь на нужный параметр и нажимаешь на панели справа кнопку с "таблицей плюсиком и шестеренкой". Там ставишь флаг "Включить в пользовательские настройки". Тогда будешь видеть в режиме предприятия.
5 GROOVY
 
03.12.11
17:01
А если условие заключить в фигурные скобки то параметр станет не обязательным...
6 first_may
 
03.12.11
17:04
Спасибо, помогло убери галку с "Ограничение доступности". Флаг "Включить в пользовательские настройки" даже можно наверное и не ставить.
7 first_may
 
03.12.11
17:09
А может еще подскажите, если допустим надо вывести отчет для текущего документа (например приходная накладная), где в шапке дата, номер и контрагент итабличная часть. Такой отчет можно формировать с помощью СКД? Что бы не рисовать макет.
8 first_may
 
03.12.11
18:51
А можно ли этот параметр передавать программно? Внутри модуля отчета.
9 sergey yevsenya
 
03.12.11
19:00
(8) можно
10 sergey yevsenya
 
03.12.11
19:04
Настройки = ОтчетОбъект.КомпоновщикНастроек.Настройки;
Параметр = Настройки.ПараметрыДанных.Элементы[0];    
Параметр.Значение = значение;
Параметр.Использование = истина;
11 first_may
 
03.12.11
19:15
Я пишу следующим образом:

Процедура ОсновныеДействияФормыПечать(Кнопка)
   ТабличныйДокумент = Новый ТабличныйДокумент; // куда выводим
   СхемаКомпоновкиДанных = ПолучитьМакет("НачислениеПени");
   СтруктураПараметров = Новый Структура("Ссылка", Ссылка);
   ПолучитьДанныеНаОснованииСКД(СхемаКомпоновкиДанных, ТабличныйДокумент, СхемаКомпоновкиДанных.НастройкиПоУмолчанию, СтруктураПараметров); // как выводим
   УниверсальныеМеханизмы.НапечататьДокумент(ТабличныйДокумент); // можно было бы без этого, но так красивШЕ
КонецПроцедуры

Процедура ПолучитьДанныеНаОснованииСКД(СКД, ОбъектДляЗагрузки, ИсполняемыеНастройки = Неопределено, СтруктураПараметров = Неопределено, РасшифровкаСКД = Неопределено, МакетКомпоновки = Неопределено, ВнешниеНаборыДанных = Неопределено) Экспорт

   КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;

   Если ТипЗнч(ОбъектДляЗагрузки) = Тип("ПолеТабличногоДокумента") ИЛИ ТипЗнч(ОбъектДляЗагрузки) = Тип("ТабличныйДокумент") Тогда
       ТипГенератора = Тип("ГенераторМакетаКомпоновкиДанных");
   Иначе
       ТипГенератора = Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений");
   КонецЕсли;

   Если ИсполняемыеНастройки = Неопределено Тогда

       ИсполняемыеНастройки = СКД.НастройкиПоУмолчанию;

   КонецЕсли;

   Если СтруктураПараметров <> Неопределено Тогда

       КоллекцияЗначенийПараметров = ИсполняемыеНастройки.ПараметрыДанных.Элементы;

       Для каждого Параметр Из СтруктураПараметров Цикл

           НайденноеЗначениеПараметра = КоллекцияЗначенийПараметров.Найти(Параметр.Ключ);

           Если НайденноеЗначениеПараметра <> Неопределено Тогда

               НайденноеЗначениеПараметра.Использование = Истина;

               НайденноеЗначениеПараметра.Значение = Параметр.Значение;

           КонецЕсли;

       КонецЦикла;

   КонецЕсли;

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

   ПроцессорКомпановки = Новый ПроцессорКомпоновкиДанных;

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

   Если ТипЗнч(ОбъектДляЗагрузки) = Тип("ПолеТабличногоДокумента") ИЛИ ТипЗнч(ОбъектДляЗагрузки) = Тип("ТабличныйДокумент") Тогда

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

       ПроцессорВывода.УстановитьДокумент(ОбъектДляЗагрузки);

   Иначе

       ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;

       ПроцессорВывода.УстановитьОбъект(ОбъектДляЗагрузки);

   КонецЕсли;

   ПроцессорВывода.ОтображатьПроцентВывода = Истина;

   ПроцессорВывода.Вывести(ПроцессорКомпановки, Истина);

КонецПроцедуры // ПолучитьДанныеНаОснованииСКД()

Так вот выскакивает сообщение
{(11, 40)}: Не задано значение параметра "Ссылка"
...Ссылка = <<?>>&Ссылка
хотя ссылка задана.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший