![]() |
|
СКД Программный запуск отчета с параметром | ☑ | ||
---|---|---|---|---|
0
lg2marvel
20.09.19
✎
12:49
|
Привет.
Вызываю форму отчета: Форма = ПолучитьФорму("Отчет.ТабельБН.Форма"); НастройкиОтчета = ПолучитьНастройки(Форма.Отчет.КомпоновщикНастроек); // получаем настройки ПараметрПодразделение = НастройкиОтчета.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Подразделение")); ПараметрПодразделение.Значение = Подразделение; ПараметрПодразделение.Использование = истина; Форма.Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиОтчета); Форма.СкомпоноватьРезультат(); Форма.Открыть(); и обработка компоновщика: Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ДокументРезультат.Очистить(); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; Настройки = КомпоновщикНастроек.ПолучитьНастройки(); ИдентификаторыНесуществующихПользователейИБ = Новый Массив; ВнешниеНаборыДанных = Новый Структура; ВнешниеНаборыДанных.Вставить("ПользователиИБ", ПользователиИБ(ИдентификаторыНесуществующихПользователейИБ)); ВнешниеНаборыДанных.Вставить("КонтактнаяИнформация", КонтактнаяИнформация(Настройки)); Настройки.ПараметрыДанных.УстановитьЗначениеПараметра( "ИдентификаторыНесуществующихПользователейИБ", ИдентификаторыНесуществующихПользователейИБ); МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки, Истина); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.НачатьВывод(); ЭлементРезультата = ПроцессорКомпоновки.Следующий(); Пока ЭлементРезультата <> Неопределено Цикл ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата); ЭлементРезультата = ПроцессорКомпоновки.Следующий(); КонецЦикла; ПроцессорВывода.ЗакончитьВывод(); КонецПроцедуры Но проблема в следующем: на форме параметр меняется, а при формировании отчета не используется. Как использовать переданный параметр в отчете? До момента Настройки = КомпоновщикНастроек.ПолучитьНастройки(); параметр есть в КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы |
|||
1
toypaul
гуру
20.09.19
✎
12:53
|
вот так
Форма.Открыть(); Форма.Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиОтчета); Форма.СкомпоноватьРезультат(); |
|||
2
lg2marvel
20.09.19
✎
12:59
|
(1) Ничего не изменилось.
|
|||
3
toypaul
гуру
20.09.19
✎
13:03
|
Форма.Открыть();
Форма.Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра(блаблабла) Форма.СкомпоноватьРезультат(); |
|||
4
lg2marvel
20.09.19
✎
14:02
|
(3) Все то же самое
Форма.Открыть(); Форма.Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Подразделение",Подразделение); Форма.СкомпоноватьРезультат(); Может как-то надо подругому получать настроки при компоновке? Настройки = КомпоновщикНастроек.ПолучитьНастройки(); КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию); ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки); |
|||
5
toypaul
гуру
20.09.19
✎
14:07
|
ПолучитьНастройки формируется настройки с учетом пользовательских.
|
|||
6
toypaul
гуру
20.09.19
✎
14:09
|
Форма.Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра(блаблабла)
устанавливает значение источника, на который ссылается польз. настройка. я хз почему не работает. тут надо мозг включать и отладку. можно не делать ПолучитьНастройки, но это некрасиво можно установить значение параметра ч/з польз. настройки. но ... как-то это странно. если на форме параметр отображется при этом, значит параметр был через "просто настройки" установлен верно |
|||
7
lg2marvel
20.09.19
✎
14:38
|
ПараметрПодразделениеЗначение = неопределено;
Если не КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Подразделение").Значение = неопределено Тогда ПараметрПодразделениеЗначение = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Подразделение").Значение; КонецЕсли; Настройки = КомпоновщикНастроек.ПолучитьНастройки(); ПараметрПодразделение = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Подразделение")); ПараметрПодразделение.Значение = ПараметрПодразделениеЗначение; ПараметрПодразделение.Использование = истина; ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки); Так работает, но если отчет открывать не по команде в форме, то параметра подразделение он попросту не видит, только если открыть настройки (там параметр есть) и нажать закрыть и сформировать - тогда формируется правильно. |
|||
8
lg2marvel
20.09.19
✎
14:49
|
Так работает.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) СтандартнаяОбработка = ложь; СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); //костыль ПараметрПодразделениеЗначение = неопределено; Если не КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Подразделение").Значение = неопределено Тогда ПараметрПодразделениеЗначение = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Подразделение").Значение; КонецЕсли; Настройки = КомпоновщикНастроек.ПолучитьНастройки(); Если ЗначениеЗаполнено(ПараметрПодразделениеЗначение) Тогда ПараметрПодразделение = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Подразделение")); ПараметрПодразделение.Значение = ПараметрПодразделениеЗначение; ПараметрПодразделение.Использование = истина; КонецЕсли; ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки); тзС = Новый ТаблицаЗначений; ПодготовитьВходящиеДанные(тзС, МакетКомпоновки); ВнешнийНаборДанных = Новый Структура("ТаблицаЗначенийСотрудники", тзС); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешнийНаборДанных, ДанныеРасшифровки); ДокументРезультат.Очистить(); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |