|
СКД не работают отборы | ☑ | ||
---|---|---|---|---|
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 метод, который возвращает "НастройкиКомпоновкиДанных", то странно, почему настройки получаются именно из одного свойства того же компоновщика... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |