|
Управляемые формы открыть отчет с отбором | ☑ | ||
---|---|---|---|---|
0
Midzgun
06.03.14
✎
06:24
|
Добрый день, коллеги!
Есть УТ 11.1.2.22. Платформа 8.2.19.76. Нужно открыть из документа отчет и программно в нем установить отбор по номенклатуре из табличной части документа. Отчет на СКД. С обычными формами было все просто. Получаем объект отчета и лезем в компоновщик настроек -> настройки. А с управляемыми как? Там же используется метод ОткрытьФорму. Как потом получить ссылку на компоновщик настроек отчета? Заранее благодарен за помощь. |
|||
1
Любопытная
06.03.14
✎
06:33
|
в параметрах указываешь отбор.
&НаКлиенте Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) //Вставить содержимое обработчика. УсловияОтбора = новый Структура(); УсловияОтбора.Вставить("Контрагент",ПараметрКоманды); ПараметрыФормы = Новый Структура("Отбор, СформироватьПриОткрытии", УсловияОтбора, Истина); ОткрытьФорму("Отчет.СписокЗадачПоКонтрагенту.Форма", ПараметрыФормы, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно); КонецПроцедуры Примерно так |
|||
2
Midzgun
06.03.14
✎
08:18
|
(1) Попробовал так:
ИмяОбработки = ДополнительныеОтчетыИОбработкиВызовСервера.ПодключитьВнешнююОбработку(ДопОтчетДинамика); СхемаКомпоновкиДанных = ПолучитьМакетДинамика(); КомпоновщикНастроекКомпоновкиДанных = Новый КомпоновщикНастроекКомпоновкиДанных; КомпоновщикНастроекКомпоновкиДанных.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных)); КомпоновщикНастроекКомпоновкиДанных.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию); сткОтбор = Новый Структура("Номенклатура", СписокНоменклатуры); сткПараметры = Новый Структура("Отбор, СформироватьПриОткрытии, ПользовательскиеНастройки", сткОтбор, Истина, КомпоновщикНастроекКомпоновкиДанных.ПользовательскиеНастройки); ОткрытьФорму("ВнешнийОтчет."+ ИмяОбработки +".Форма", сткПараметры, ЭтаФорма); Но тогда пользовательский отбор не функционирует. Когда пользователь пытается по номенклатуре отборать - получаем ошибку: "Невозможно применить фиксированные настройки. Пересекаются элементы отбора". А как бы оставить пользователю возможность менять отбор? |
|||
3
Midzgun
06.03.14
✎
08:39
|
Ура, товарищи!!! Получилось! Нужно было просто в настройки компоновки залезть, а отбор не передавать в параметрах. Вот так сделал:
ИмяОбработки = ДополнительныеОтчетыИОбработкиВызовСервера.ПодключитьВнешнююОбработку(ДопОтчетДинамика); СхемаКомпоновкиДанных = ПолучитьМакетДинамика(); НастройкиКомпоновки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию; // ищем искомый отбор Флаг = Ложь; инд = 0; ЭлементыОтбора = НастройкиКомпоновки.Отбор.Элементы; МаксИнд = ЭлементыОтбора.Количество() - 1; Пока Не Флаг Цикл ЭлОтбора = ЭлементыОтбора[инд]; Если ЭлОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Номенклатура") Или инд = МаксИнд Тогда Флаг = Истина; КонецЕсли; инд = инд + 1; КонецЦикла; Если Инд = МаксИнд Тогда ЭлОтбора = ЭлементыОтбора.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке; ЭлОтбора.Использование = Истина; ЭлОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Номенклатура"); КонецЕсли; ЭлОтбора.ПравоеЗначение = СписокНоменклатуры; КомпоновщикНастроекКомпоновкиДанных = Новый КомпоновщикНастроекКомпоновкиДанных; КомпоновщикНастроекКомпоновкиДанных.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных)); КомпоновщикНастроекКомпоновкиДанных.ЗагрузитьНастройки(НастройкиКомпоновки); //сткОтбор = Новый Структура("Номенклатура", СписокНоменклатуры); сткПараметры = Новый Структура("Отбор, СформироватьПриОткрытии, ПользовательскиеНастройки", , Истина, КомпоновщикНастроекКомпоновкиДанных.ПользовательскиеНастройки); ОткрытьФорму("ВнешнийОтчет."+ ИмяОбработки +".Форма", сткПараметры, ЭтаФорма); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |