|
Генерация данных для отчета СКД в самом отчете | ☑ | ||
---|---|---|---|---|
0
apd123
04.03.15
✎
13:35
|
Хочу сделать что бы данные, на основе которых строится отчет в СКД генерились прямо в процессе формирования отчета (после нажатия на кнопку "сформировать").
Алгоритм представляю себе так: 1) Пользователь открывает форму отчета и задает параметры 2) Нажимает кнопку "Сформировать" 3) Параметры передаются в процедуру, которая на их основе заполняет определенный регистр сведений 4) Отчет строится из данных, выбранных из этого регистра Проблема возникла в пункте 3, никак не могу получить значения параметров (параметр "Период" в данном случае). Пробовал массой способов, например в обработке события ОбработкаПроверкиЗаполненияНаСервере() формы отчета вот так: &НаСервере Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты) СхемаКомпоновкиДанных = Отчеты.ОтчетТест.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию; КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных; URLСхемы = ПоместитьВоВременноеХранилище(СхемаКомпоновкиДанных); КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(URLСхемы)); КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию); ТестПараметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Период")); Сообщить(ТестПараметр.Значение); КонецПроцедуры Выводится пустое сообщение. Пробовал через собитие ПриКомпоновкеРезультата модуля отчета. Пробовал подменять кнопку "Сформировать" своей командой, но оттуда тоже параметров не видно. Подскажите куда копать? |
|||
1
Адский плющ
04.03.15
✎
13:40
|
Вот, пример (не лучший, но рабочий) построения СКД отчета по данным из ТЗ
В модуле объекта отчета: Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) СтандартнаяОбработка = ложь; ТаблицаДокументов = ПрочитатьДокументы(); // в процедуре в ТЗ собираются данные откуда нужно ДокументРезультат.Очистить(); Настройки = КомпоновщикНастроек.ПолучитьНастройки(); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; //Передаем в макет компоновки схему, настройки и данные расшифровки МакетКомпоновки = КомпоновщикМакета.Выполнить( СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки,,Тип("ГенераторМакетаКомпоновкиДанных")); ВнешниеНаборыДанных = Новый Структура; ВнешниеНаборыДанных.Вставить("ТаблицаДокументов", ТаблицаДокументов); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать( МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки); // Выводим результат в табличный документ ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); КонецПроцедуры В СКД, соответственно, описан источник данных с колонками как в ТЗ. |
|||
2
apd123
04.03.15
✎
13:48
|
(1) Вот мне надо примерно тоже самое, только в ПрочитатьДокументы() нужно передавать параметры, которые пользователь выбрал в форме.
Никак не могу понять как их получить. |
|||
3
Адский плющ
04.03.15
✎
13:49
|
(2) Передать туда настройки
Настройки = КомпоновщикНастроек.ПолучитьНастройки(); ТаблицаДокументов = ПрочитатьДокументы(Настройки); // в процедуре в ТЗ собираются данные откуда нужно Состав настроек настроить в виде параметров в схеме. |
|||
4
rincewind
04.03.15
✎
13:53
|
(2) В отчете создать необходимые реквизиты, вынести их на форму отчета. В проц. ПриКомпоновкеРезультата можно будет их использовать.
|
|||
5
Адский плющ
04.03.15
✎
13:59
|
(4) И самое главное - никому не показывать, шоб не засмеяли.
|
|||
6
rincewind
04.03.15
✎
14:01
|
(4) Почему же? ТСу нужны параметры для предварительной подготовки данных. Зачем нужно их пихать в макет СКД, если они там использоваться не будут?
|
|||
7
fisher
04.03.15
✎
14:04
|
(0) Если УФ, то указанные пользователем значения параметров нужно доставать из КомпоновщикНастроек.ПользовательскиеНастройки
|
|||
8
Адский плющ
04.03.15
✎
14:05
|
(6) Как не будут? Если это параметры, то не обязательно что они должны быть в запросе. Зато они будут сохраняться с настройками и можно будет использовать стандартную морду БСП-ного отчета.
|
|||
9
apd123
04.03.15
✎
16:11
|
(3) Спасибо, работает. Только я решил передавать в функцию заполнения не целиком Настройки, а только нужный параметр. Так вроде покрасивее.
Кстати, изначально моя ошибка была в том что я не использовал ПолучитьНастройки(), поэтому параметры, к которым я обращался были пустыми. Правда непонятно почему не сработал метод компоновщика Инициализировать(), ну да ладно.. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |