Имя: Пароль:
1C
1С v8
Пользовательский отбор в отчетах СКД с использованием Набора данных объект
0 Lancer666
 
29.07.13
15:59
Здравствуйте, уважаемые коллеги. Интересует следующий вопрос. Создаю отчет на СКД, добавляю внешний набор данных ОБЪЕКТ, которому передаю в качестве значения Таблицу значения в коде. Всё хорошо, всё работает, отчет выводит все необходимые данные. Но когда я добавляю быстрый пользовательский отбор (на панели настроек справа), выбираю что то в этот пользовательском отборе, он просто не срабатывает. Это как то связано с использованием НАБОРА ДАННЫХ ОБЪЕКТ вместо НАБОРА ДАННЫХ ЗАПРОС или я что то делаю не так? Заранее спасибо.
1 Bober
 
29.07.13
17:39
(0) какая версия платформы?
2 Lancer666
 
29.07.13
18:51
Bober, платформа 8.2.16.362
3 Lancer666
 
29.07.13
21:56
Всё, сам добрался до истины. Брал часть коды для полной замены в функции ОбновитьОтчет из описанных в интернете для добавления Источника данных Объект, оказывается этот код в отличие от замененной части кода в функции ОбновитьОтчет не подцепляет настройки из пользовательской панели. Может кому то будет интересно. Окончательный код для функции ОбновитьОтчет модуля формы отчета СКД, который во-первых добавляет внешний набор данных ТЗ, во-вторых, учитывает значения внесенные на пользовательской панеле (например, пользовательские "быстрые" отборы):


Процедура ОбновитьОтчет() Экспорт
ЭлементыФормы.Результат.Очистить();

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