Имя: Пароль:
1C
1С v8
Програмно добавлять и удалять отборы в построитель отчета
0 serg-lom89
 
08.10.15
16:10
Добрый день.Прошу помощи ребята.
Есть отчет и для него нужно допилить "быстрые" отборы.
на форму вынес списки значений заполнил их.
как теперь мне програмно добавлять отборы и удалять их если поле очищено?
Вот кусок небольшого прогрмного кода

    отборы =  ПостроительОтчета.Отбор;
    Для Каждого ЭлементОтбора Из отборы  Цикл
        Если ЭлементОтбора.ПутьКданным   =Имя Тогда
            
            
        КонецЕсли;
        
    КонецЦикла;    
    ОтборДобавленный=     отборы.Добавить(Имя);
    //ОтборДобавленный.Значение =ВыбОтветственныйМенеджер ;    
    ОтборДобавленный.Использование= истина;
    ОтборДобавленный.ВидСравнения=ВидСравнения.Равно;
    
    //отбор =ПостроительОтчета.Отбор;

добавлять добавляет но ругается на поле сравнения...(значение не вяляется обьектным типом")
и как мне програмно удалять поля с отборов?
1 Господин ПЖ
 
08.10.15
16:12
из типовой взять нельзя? там все готовое есть... только описать надо - сама нарисует
2 serg-lom89
 
08.10.15
16:14
(1) ну мне бы в первую очередь разобраться как нить в этом...как то для компоновщика делал так получилось..тут что то никак
3 PuhUfa
 
08.10.15
16:31
Примечание:

Добавление возможно только из коллекции доступных полей.
Пример:

Отбор = ОтчетОстатки.ПостроительОтчета.Отбор;
Если Отбор.Найти("Номенклатура") = Неопределено Тогда
    Отбор.Добавить("Номенклатура");
КонецЕсли;
Отбор["Номенклатура"].Использование = Истина;
Отбор["Номенклатура"].Значение      = Номенклатура;
Отбор["Номенклатура"].ВидСравнения  =
        ?(Номенклатура.ЭтоГруппа,
            ВидСравнения.ВСпискеПоИерархии,
            ВидСравнения.Равно);

(с) СП
4 serg-lom89
 
08.10.15
16:37
(3) спс.
а как удалить определенный отбор?
5 Михаил Козлов
 
08.10.15
16:40
Найти и удалить:
ненужныйОтбор = Отбор.Найти("Номенклатура");
Если ненужныйОтбор<>Неопределено Тогда
    Отбор.Удалить(ненужныйОтбор);
КонецЕсли;
6 serg-lom89
 
08.10.15
16:41
т.е. если я по кнопке настройки могу отобрать то програмно я никак не смогу это сделать,так?
7 serg-lom89
 
08.10.15
16:48
(5)         ненужныйОтбор = ПостроительОтчета.Отбор.Найти("Номенклатура");
        Если ненужныйОтбор<>Неопределено Тогда
            ПостроительОтчета.Отбор.Удалить(ненужныйОтбор);
        КонецЕсли;

для этого кода почему то пишет
Несоответствие типов (параметр номер '1')
;
8 Eugene_life
 
08.10.15
17:20
(7) Как вариант - отключать Использование у фильтра, вместо удаления.
9 serg-lom89
 
08.10.15
18:07
(8) как вариант
2 + 2 = 3.9999999999999999999999999999999...