Имя: Пароль:
1C
1С v8
СКД не работают отборы
0 VladSt
 
23.12.15
13:56
Добрый день
Есть отчет на СКД. Все работало. Сделал, чтобы в шапке и в подвале отчета выводились собственные макеты. И они выводятся. Но не работают отборы и т.д. Что они есть, что их нет. Т.е. формируется полностью отчет со стандартными настройками. Даже даты периодов стандартные.

Когда делал, я так понимаю, что-то намутил с Процессором компоновки данных. Надо же было сделать, чтобы сначала вывелась моя шапка, потом весь отчет, потом мой подвал. Я сделал это в Модуле отчета. Вот код, подскажите:

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    Пользователь    = ПользователиКлиентСервер.ТекущийПользователь();
    Организация        = уатОбщегоНазначенияПовтИсп.ПолучитьЗначениеПоУмолчаниюПользователя(Пользователь,"ОсновнаяОрганизация");
    
    НаДату            = этотобъект.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ДатаКон").Значение.Дата;
    Руководители    = уатОбщегоНазначенияТиповые.уатОтветственныеЛицаОрганизаций(Организация, НаДату);
    ГлИнженер        = Руководители.ГлавныйИнженер;
    
    Настройки =    КомпоновщикНастроек.Настройки;
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
        
    // Инициализируем процессор СКД
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    //ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки);
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки);
  
    Макет = ПолучитьОбщийМакет("ШапкаИПодвалОтчетов");
    ОбластьШапка = Макет.ПолучитьОбласть("ШапкаУтверждаю");
    ОбластьШапка.Параметры.Организация    = Организация.НаименованиеСокращенное;
    ОбластьШапка.Параметры.ГлИнженер    = ГлИнженер;
    
    ОбластьПодвал = Макет.ПолучитьОбласть("ПодвалТехник");
    ДокументРезультат.Вывести(ОбластьШапка);
    
    // Инициализируем процессор вывода
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
    
    ДокументРезультат.Вывести(ОбластьПодвал);
    
    ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
    ДокументРезультат.АвтоМасштаб = Истина;
КонецПроцедуры
1 los_hooliganos
 
23.12.15
13:59
Настройки =    КомпоновщикНастроек.Настройки;

Вот через это и установи отбор нужный тебе.
2 los_hooliganos
 
23.12.15
14:01
Настройки.Отбор.Элементы
3 VladSt
 
23.12.15
14:02
Так они же и установились в макет:

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

или нет?
4 VladSt
 
23.12.15
14:13
Если заремливаю
СтандартнаяОбработка = Ложь;
Тогда выводит два отчета - один полный по умолчанию, 2-й с отборами
5 VladSt
 
23.12.15
14:23
Взял в отладчике:
Настройки.ПараметрыДанных.Элементы[0].Значение    01.01.0001 0:00:00    Дата

Настройки пустые. И как это понять?
6 Defender aka LINN
 
23.12.15
14:38
(3) Рекомендую изучить МЕТОДЫ КомпоновщикаНастроек
7 VladSt
 
23.12.15
16:10
Воспользовался советами, получилось с отборами, вот код:


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



Но все равно не работают параметры, выбранные поля и т.д.
Т.е. для них все осталось по умолчанию.
Вопрос: так что, теперь таким способом настраивать, чтобы учесть все остальные пользовательские настройки?
Как то очень много кода придется писать ((
8 Defender aka LINN
 
24.12.15
08:02
(7) Нихрена ты не воспользовался
9 LordCMEPTb
 
24.12.15
08:11
(7) На самом деле в (6) дали хороший совет.
А если учитывать факт, что у компоновщика настроек только 1 метод, который возвращает "НастройкиКомпоновкиДанных", то странно, почему настройки получаются именно из одного свойства того же компоновщика...