Имя: Пароль:
1C
1С v8
ВЫбор СКД на форме
,
0 Mandel
 
06.06.12
00:18
Подскажите пожалуйста. На форме есть реквизиты Вариант отчета, Дата.
1. Как мне в зависимости от варианта отчета сформировать ту или иную схему СКД с первой настройкой?
2. Передать СКД в параметр значение Дата?

Спасибо.
1 mirosh
 
06.06.12
00:38
(0)
http://www.miko.ru/blogs/metalblog/101/

ПРОГРАММНЫЙ ВЫВОД ОТЧЕТА

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

//Из схемы возьмем настройки по умолчанию
Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;

//Помещаем в переменную данные о расшифровке данных
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;

//Формируем макет, с помощью компоновщика макета
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;

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

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

//Очищаем поле табличного документа
Результат = ЭлементыФормы.Результат;
Результат.Очистить();

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

ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
2 mirosh
 
06.06.12
00:39
т.е. заменяешь код

//Получаем схему из макета

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

на

//Получаем схему из макета
Если ВариантОтчета = Вариант1 Тогда
СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных1");
Иначе
 СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных2");
КонецЕсли
3 mirosh
 
06.06.12
00:40
Параметры задаешь так.

Настройки = КомпоновщикНастроек.Настройки;
Настройки[0].Значение = ТвояДата;
Настройки[0].Использование = Истина;

Тут вместо 0 может быть другая цифра, смотря какой номер по порядку у параметра дата.
4 Mandel
 
06.06.12
08:48
Спасибо.
5 Mandel
 
06.06.12
10:00
Подскажите что не так?

   Если ВариантОтчета = 1 Тогда
       СхемаКомпоновкиДанных = ПолучитьМакет("Вариант1");
   Иначе
       СхемаКомпоновкиДанных = ПолучитьМакет("Вариант23");
   КонецЕсли;
   
   КомпоновщикМакетаКомпоновкиДанных = Новый КомпоновщикМакетаКомпоновкиДанных;
   
   КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ВариантОтчета", ВариантОтчета);
   КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Дата", Дата);
   КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("МассивСклады", Склады);

   
   МакетКомпоновкиДанных = КомпоновщикМакетаКомпоновкиДанных.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, ДанныеРасшифровки, , );
   
   ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;  
   ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных,,ДанныеРасшифровки);
   
   ПроцессорВыводаВТабличныйДокумент = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
   
   ЭлементыФормы.Результат.Очистить();
   ПроцессорВыводаВТабличныйДокумент.УстановитьДокумент(ЭлементыФормы.Результат);
   ПроцессорВыводаВТабличныйДокумент.Вывести(ПроцессорКомпоновкиДанных);
6 Mandel
 
06.06.12
10:01
настройки не подцепляются (группировки, поля) и т.п.
7 Mandel
 
06.06.12
10:32
Не хватает как я понл настроекпоумолчанию, но где их указать?
8 vtolga
 
06.06.12
10:45
см. п.1 //Получаем схему из макета

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

//Из схемы возьмем настройки по умолчанию

Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
9 Mandel
 
06.06.12
10:47
Все равно не подцепляются настройки этих схем
10 Mandel
 
06.06.12
10:47
Если ВариантОтчета = 1 Тогда
       СхемаКомпоновкиДанных = ПолучитьМакет("Вариант1");
   Иначе
       СхемаКомпоновкиДанных = ПолучитьМакет("Вариант23");
   КонецЕсли;
11 Mandel
 
06.06.12
11:04
Берет почему-то настройку из указанной в обработке (реквизите) "Основная схема компоновки данных".
12 Mandel
 
06.06.12
12:28
В чем может быть дело?
13 Mandel
 
06.06.12
13:51
Как загрузить или выбрать программно настройки вариантов в СКД?
Закон Брукера: Даже маленькая практика стоит большой теории.