Имя: Пароль:
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 метод, который возвращает "НастройкиКомпоновкиДанных", то странно, почему настройки получаются именно из одного свойства того же компоновщика...
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn