|
Перенос параметров между вариантами отчета скд (управляемые формы) | ☑ | ||
---|---|---|---|---|
0
Anabella
10.03.15
✎
16:40
|
Открывается отчет с параметрами дата1 и дата2 в пользовательских настройках. Задачу поставили такую: при нажатии на кнопку чтобы из этого отчета вызывался второй вариант этого отчета, причем с теми же значениями дата1 и дата2. вот код кнопки "сформировать":
ОтчетОбъект = РеквизитФормыВЗначение("Отчет"); Схема = ОтчетОбъект.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); Варианты = Схема.ВариантыНастроек; Настройки1 = Схема.ВариантыНастроек[3].Настройки; Дата1 = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы[0]; Дата2 = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы[1]; КомпоновщикНастроекДанных = Новый КомпоновщикНастроекКомпоновкиДанных; КомпоновщикНастроекДанных.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(Схема)); КомпоновщикНастроекДанных.ЗагрузитьНастройки(Схема.НастройкиПоУмолчанию); КомпоновщикНастроекДанных.ЗагрузитьНастройки(Настройки1); КомпоновщикНастроекДанных.ПользовательскиеНастройки.Элементы[0].Значение = Дата1.Значение; КомпоновщикНастроекДанных.ПользовательскиеНастройки.Элементы[1].Значение = Дата2.Значение; КомпоновщикНастроекДанных.Настройки.ПараметрыДанных.Элементы[2].Значение = Дата1.Значение; КомпоновщикНастроекДанных.Настройки.ПараметрыДанных.Элементы[3].Значение = Дата2.Значение; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; Макет = КомпоновщикМакета.Выполнить(Схема, КомпоновщикНастроекДанных.ПолучитьНастройки()); //Макет.ЗначенияПараметров.Дата1.Значение = Дата1.Значение.Дата; //Макет.ЗначенияПараметров.Дата2.Значение = Дата2.Значение.Дата; ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(Макет); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(Результат); ПроцессорВывода.Вывести(ПроцессорКомпоновки); Вот в этом месте возникает ошибка: {Форма.ФормаОтчета.Форма(77)}: Ошибка при вызове метода контекста (Вывести) ПроцессорВывода.Вывести(ПроцессорКомпоновки); по причине: Ошибка вывода результата по причине: Ошибка при выводе результата по причине: Ошибка получения данных по причине: Ошибка создания набора данных "НаборДанных1" по причине: Ошибка при исполнении запроса набора данных по причине: {(186, 48)}: Не задано значение параметра "Дата1" ЗаказыКлиентовОбороты.ЗаказКлиента.Дата МЕЖДУ <<?>>&Дата1 И &Дата2 Значения Дата1 и Дата2 я проверяла в отладчике, они соответствуют. |
|||
1
Anabella
10.03.15
✎
17:06
|
ап. надеюсь и верю.
|
|||
2
Anabella
11.03.15
✎
08:50
|
Может с утра кто-то откликнется ?
|
|||
3
Anabella
11.03.15
✎
10:04
|
ап
|
|||
4
Anabella
11.03.15
✎
11:08
|
ап!
|
|||
5
fisher
11.03.15
✎
11:22
|
Здесь несколько вариантов боков может быть.
Для начала, сделай Дата1 = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы[0].Значение; Дата2 = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы[1].Значение; Сейчас у тебя ссылки на элементы пользовательских настроек, а они потом инициализируются заново. |
|||
6
Anabella
11.03.15
✎
11:35
|
(5) Ура! Живая душа!
Сделала. Никаких результатов. Что ещё посоветуете? |
|||
7
fisher
11.03.15
✎
11:50
|
(6) Да кучу всего. Как в том анекдоте про Хрущева и коров :)
Именно такую реализацию я не делал, но подозреваю что переключение варианта отчета в УФ делается принципиально по-другому. Может, подойдет готовый кусок кода, но с открытием второго варианта отдельной формой? Такое есть у меня. |
|||
8
Anabella
11.03.15
✎
12:24
|
(7) С передачей параметров ? Тогда да, годится!
|
|||
9
fisher
11.03.15
✎
12:26
|
Вся эта хрень &НаКлиенте
// получим форму отчета для расшифровки ФормаОтчетаРасшифровки = ПолучитьФорму(ЭтаФорма.ИмяФормы, Новый Структура("КлючВарианта", НазваниеВарианта), ЭтаФорма, Истина); // перенесем дату отчета в отчет-расшифровку ПараметрДатыЭтогоОтчета = УправлениеОтчетамиКлиентСервер.ПолучитьПользовательскийПараметр("НачалоПериода", Отчет.КомпоновщикНастроек); ПараметрДатыОтчетаРасшифровки = УправлениеОтчетамиКлиентСервер.ПолучитьПользовательскийПараметр("НачалоПериода", ФормаОтчетаРасшифровки.Отчет.КомпоновщикНастроек); Если ПараметрДатыЭтогоОтчета <> Неопределено И ПараметрДатыОтчетаРасшифровки <> Неопределено Тогда ЗаполнитьЗначенияСвойств(ПараметрДатыОтчетаРасшифровки,ПараметрДатыЭтогоОтчета,"Значение,Использование"); КонецЕсли; ФормаОтчетаРасшифровки.Открыть(); ФормаОтчетаРасшифровки.СкомпоноватьРезультат(); |
|||
10
fisher
11.03.15
✎
12:28
|
Функция ПолучитьПредопределенныйЭлементПользовательскихНастроек(ЭлементНастроекВарианта, ПользовательскиеНастройки) Экспорт
НайденныйЭлемент = Неопределено; Если ЭлементНастроекВарианта <> Неопределено Тогда НайденныйЭлемент = ПользовательскиеНастройки.Элементы.Найти(ЭлементНастроекВарианта.ИдентификаторПользовательскойНастройки); КонецЕсли; Возврат НайденныйЭлемент; КонецФункции Функция ПолучитьПользовательскийПараметр(ИмяПараметра, КомпоновщикНастроек) Экспорт НайденныйПараметр = Неопределено; НайденныйПараметрВарианта = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(ИмяПараметра); Если НайденныйПараметрВарианта <> Неопределено Тогда НайденныйПараметр = ПолучитьПредопределенныйЭлементПользовательскихНастроек(НайденныйПараметрВарианта, КомпоновщикНастроек.ПользовательскиеНастройки); КонецЕсли; Возврат НайденныйПараметр; КонецФункции |
|||
11
Anabella
11.03.15
✎
12:29
|
(9)Сейчас попробую! А может, здесь тоже подскажете? Ну, пожалуйста!
Отключение группировки с диаграммой в СКД (управляемые формы) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |