|
Открыть отчет на СКД с отбором программно. | ☑ | ||
---|---|---|---|---|
0
unknown181538
14.09.14
✎
22:31
|
Была ветка Программно добавить отбор в отчет на СКД . Но когда я вернулся к проблеме, утонула в архив.
Короче, мне нужно открыть отчет с отбором. Весь код ниже, включая закомменченный не работает. Кто-нибудь может подсказать, как правильно? Отчет на шаблоне типового отчета. Обычные формы. ОтчетПоСобытиям = Отчеты.ОтчетПоСобытиямХанза.Создать(); // КОД ОТ КУБА! ЭлементыОтбора = Новый Соответствие; Для Каждого ЭлементОтбора Из ОтчетПоСобытиям.КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл Если Тип(ЭлементОтбора) = Тип("ЭлементОтбораКомпоновкиДанных") Тогда ЭлементыОтбора.Вставить(ЭлементОтбора.ЛевоеЗначение, ЭлементОтбора); КонецЕсли; КонецЦикла; //Устанавливаем отбор по полю МоёПоле1 ЭлементОтбора = ЭлементыОтбора.Получить(Новый ПолеКомпоновкиДанных("Контрагент")); Если ЭлементОтбора = Неопределено Тогда //Отбора по полю МоёПоле ещё нет, добавляем строку отбора ЭлементОтбора = ОтчетПоСобытиям.КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Контрагент"); КонецЕсли; ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбора.ПравоеЗначение = Плательщик; ЭлементОтбора.Использование = Истина; // -- КОД ОТ КУБА //ТиповыеОтчеты.ДобавитьОтбор(ОтчетПоСобытиям.КомпоновщикНастроек,"Контрагент",Плательщик,ВидСравненияКомпоновкиДанных.Равно,Истина); Форма = ОтчетПоСобытиям.ПолучитьФорму(); Форма.Открыть(); //ТиповыеОтчеты.ДобавитьОтбор(ОтчетПоСобытиям.КомпоновщикНастроек,"Контрагент",Плательщик,ВидСравненияКомпоновкиДанных.Равно,Истина); //НовыйЭлементОтбора = ОтчетПоСобытиям.КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); //ПолеОтбора = Новый ПолеКомпоновкиДанных("Контрагент"); //НовыйЭлементОтбора.ЛевоеЗначение = ПолеОтбора; //НовыйЭлементОтбора.Использование = Истина; //НовыйЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; //НовыйЭлементОтбора.ПравоеЗначение = Плательщик; //НовОтбор = Форма.КомпоновщикНастроекПользователя.Настройки.Отбор.Добавить(); // ПолеОтбора = Новый ПолеКомпоновкиДанных("Контрагент"); // НовОтбор.ЛевоеЗначение = ПолеОтбора; // НовОтбор.Использование = Истина; // НовОтбор.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; // НовОтбор.ПравоеЗначение = Плательщик; Форма.ОбновитьОтчет(); |
|||
1
Defender aka LINN
14.09.14
✎
22:42
|
(0) Кому-нибудь приходило в голову, что при открытии формы может какой-нибудь код выполняться?
|
|||
2
unknown181538
14.09.14
✎
22:51
|
(1) Учитывая, что это шаблон типового отчета, то конечно...
Возможно, что мой вопрос лишен смысла, т.к. иного выхода, кроме как разбираться, что там понаписано, нет. Но вдруг, кто-то действительно с этим сталкивался. |
|||
3
unknown181538
14.09.14
✎
23:04
|
(0) Разобрался. Если кому вдруг будет надо:
ОтчетПоСобытиям = Отчеты.ОтчетПоСобытиямХанза.Создать(); Форма = ОтчетПоСобытиям.ПолучитьФорму(); Форма.ОбновлениеОтображения(); // ВОТ ЭТА СТРОКА ДОЛЖНА БЫТЬ ДО ОТБОРА ЭлементыОтбора = Новый Соответствие; Для Каждого ЭлементОтбора Из Форма.КомпоновщикНастроекПользователя.Настройки.Отбор.Элементы Цикл // ОТБОР УСТАНОВИЛ ДЛЯ КОМПОНОВЩИКА - РЕКВИЗИТА ФОРМЫ Если Тип(ЭлементОтбора) = Тип("ЭлементОтбораКомпоновкиДанных") Тогда ЭлементыОтбора.Вставить(ЭлементОтбора.ЛевоеЗначение, ЭлементОтбора); КонецЕсли; КонецЦикла; //Устанавливаем отбор по полю МоёПоле1 ЭлементОтбора = ЭлементыОтбора.Получить(Новый ПолеКомпоновкиДанных("Контрагент")); Если ЭлементОтбора = Неопределено Тогда //Отбора по полю МоёПоле ещё нет, добавляем строку отбора ЭлементОтбора = Форма.КомпоновщикНастроекПользователя.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Контрагент"); КонецЕсли; ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбора.ПравоеЗначение = Плательщик; ЭлементОтбора.Использование = Истина; Форма.Открыть(); Форма.ОбновитьОтчет(); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |