Имя: Пароль:
1C
1С v8
как выбрать вариант отчета программно
0 aleksejafonkin
 
06.12.17
14:50
Процедура ПриКомпоновкеРезультата(ДокументРезультат,
ДанныеРасшифровки, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;
    
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
        МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки);
                    
        ////////////////////
        ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
        ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);
        
        ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
        ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
        ПроцессорВывода.Вывести(ПроцессорКомпоновки);
        
КонецПроцедуры

Я понимаю что варианты находятся тут СхемаКомпоновкиДанных.ВариантыНастроек , но не понимаю как выбрать нужный. Подскажите пожалуйста и просьба пишите по делу.
1 Mankubus
 
06.12.17
15:37
(0) взять нужный вариатн из схемы, тем более уже знаешь где это. Выгрузить его настройки. Загрузить их в компоновщик
2 Гипервизор
 
06.12.17
15:52
Процедура УстановитьВариантыНастроек()
    
лКомПанель = ЭлементыФормы.ДействияФормы;
лНоваяКнопка = лКомПанель.Кнопки.Вставить(0, "ВариантыОтчетов", ТипКнопкиКоманднойПанели.Подменю, "Варианты отчетов");
лНовоеДействие = Новый Действие("СменаВариантаНастройки");
    
Для каждого лНастройка Из СхемаКомпоновкиДанных.ВариантыНастроек Цикл
лНастройка = СхемаКомпоновкиДанных.ВариантыНастроек[Сч];
лНоваяКнопка = лКомПанель.Кнопки.ВариантыОтчетов.Кнопки.Добавить("Вариант" + Строка(Сч), ТипКнопкиКоманднойПанели.Действие, лНастройка.Представление, лНовоеДействие);
Сч = Сч + 1;
КонецЦикла;
    
КонецПроцедуры

Процедура СменаВариантаНастройки(Элемент)
    
Для каждого лНастройка Из СхемаКомпоновкиДанных.ВариантыНастроек Цикл
Если Элемент.Текст = лНастройка.Представление Тогда
КомпоновщикНастроек.ЗагрузитьНастройки(лНастройка.Настройки);
Заголовок = Элемент.Текст;
Прервать;
КонецЕсли;
КонецЦикла;
    
КонецПроцедуры
3 Franchiser
 
гуру
06.12.17
15:54
КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.ВариантыНастроек.Найти("ТвойВариант").Настройки);
4 aleksejafonkin
 
06.12.17
16:03
(1) (2) (3) Спасибо! Сейчас прожую и сделаю
5 aleksejafonkin
 
06.12.17
16:19
(3) (1)
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;
    
    НастройкиОтчета = КомпоновщикНастроек.ПолучитьНастройки();
    
    Для Каждого ВариантОтчета из СхемаКомпоновкиДанных.ВариантыНастроек Цикл
        Если НастройкиОтчета.ПараметрыДанных.Элементы[0].Значение = Перечисления.РазделыУчета_ПлатежиПоступлений.КредитПоступление Тогда
            Если ВариантОтчета.Имя = "КредитнаяЛиния" Тогда
                лкВариантОтчета = СхемаКомпоновкиДанных.ВариантыНастроек.Найти("КредитнаяЛиния");
                КомпоновщикНастроек.ЗагрузитьНастройки(лкВариантОтчета.Настройки);
            КонецЕсли;
        ИначеЕсли НастройкиОтчета.ПараметрыДанных.Элементы[0].Значение = Перечисления.РазделыУчета_ПлатежиСписаний.Кредит Тогда
            Если ВариантОтчета.Имя = "ВозвратКредитов" Тогда
                лкВариантОтчета = СхемаКомпоновкиДанных.ВариантыНастроек.Найти("ВозвратКредитов");
                КомпоновщикНастроек.ЗагрузитьНастройки(лкВариантОтчета.Настройки);
            КонецЕсли;    
        КонецЕсли;
    КонецЦикла;    
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки);
    
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);
    
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
    
КонецПроцедуры
Что я делаю не так?
лкВариантОтчета = СхемаКомпоновкиДанных.ВариантыНастроек.Найти("КредитнаяЛиния");
КомпоновщикНастроек.ЗагрузитьНастройки(лкВариантОтчета.Настройки);
тут всё хорошо, а тут
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки);
берет он так же первый вариант отчете "ВозвратКредитов"
не понимаю...
6 Franchiser
 
гуру
06.12.17
16:33
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки);

Где тут твои новые настройки?
7 Franchiser
 
гуру
06.12.17
16:35
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, ДанныеРасшифровки);

Или так:
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, лкВариантОтчета.Настройки, ДанныеРасшифровки);
8 aleksejafonkin
 
06.12.17
16:39
(7) огромное тебе спасибо!
9 Franchiser
 
гуру
06.12.17
16:57
(8) в 1-м случае только КомпоновщикНастроек.ПолучитьНастройки() а не Настройки