|   |   | 
| 
 | Открыть отчет на СКД с отбором программно. | ☑ | ||
|---|---|---|---|---|
| 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 ЭлементОтбора = ЭлементыОтбора.Получить(Новый ПолеКомпоновкиДанных("Контрагент")); Если ЭлементОтбора = Неопределено Тогда //Отбора по полю МоёПоле ещё нет, добавляем строку отбора ЭлементОтбора = Форма.КомпоновщикНастроекПользователя.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Контрагент"); КонецЕсли; ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбора.ПравоеЗначение = Плательщик; ЭлементОтбора.Использование = Истина; Форма.Открыть(); Форма.ОбновитьОтчет(); | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |