Имя: Пароль:
1C
1С v8
УФ: Отбор и группировка в форме списка
0 Mikhail Volkov
 
16.11.15
13:50
Для отбора нашел пример:

&НаСервере
Процедура УстановитьОтборПоИнициаторам()
    
    ИнициаторФизЛицо = ИнициаторФизЛицо();
    СписокПодчиненныхСотрудников = СписокПодчиненныхСотрудников();
    Если Не ИнициаторФизЛицо.Пустая() И СписокПодчиненныхСотрудников.НайтиПоЗначению(ИнициаторФизЛицо) = Неопределено Тогда
        СписокПодчиненныхСотрудников.Добавить(ИнициаторФизЛицо);
    КонецЕсли;
                      
    Если СписокПодчиненныхСотрудников.Количество() > 0 Тогда
            
           ПараметрОтбор = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        ПараметрОтбор.ЛевоеЗначение    = Новый ПолеКомпоновкиДанных("Инициатор");
        ПараметрОтбор.ВидСравнения       = ВидСравненияКомпоновкиДанных.ВСписке;
        ПараметрОтбор.Использование       = Истина;
    //    ПараметрОтбор.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
        ПараметрОтбор.ПравоеЗначение   = СписокПодчиненныхСотрудников;
            
    КонецЕсли;
        
КонецПроцедуры

Вызывается в ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Еще бы группировку по инициаторам (авторам задач)... как?
1 Горогуля
 
16.11.15
13:51
так же, как и руками, только программно
2 Mikhail Volkov
 
16.11.15
13:54
+ Еще желательно, чтобы группировка руководителя 1-я была, а после группировки его подчиненных.
(1) Да, программно при открытии формы.
3 aleks_default
 
16.11.15
14:07
(2) ты дин. список с отчетом не спутал?
4 Timon1405
 
16.11.15
14:11
(0)
&НаКлиенте
Процедура СгруппироватьПоКолонке(Знач ИмяКолонкиРевизита)
    
    РежимГруппировки = ИмяКолонкиРевизита;
    Список.Группировка.Элементы.Очистить();
    Если НЕ ПустаяСтрока(ИмяКолонкиРевизита) Тогда
        ПолеГруппировки = Список.Группировка.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
        ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных(ИмяКолонкиРевизита);
    КонецЕсли;
    
КонецПроцедуры

&НаКлиенте
Процедура СгруппироватьПоВладельцу(Команда)
    
    СгруппироватьПоКолонке("Владелец");
    
КонецПроцедуры
5 Mikhail Volkov
 
16.11.15
14:27
(4) Спс, работает:

&НаСервере
Процедура УстановитьОтборПоИнициаторам()
    
    ИнициаторФизЛицо = ИнициаторФизЛицо();
    СписокПодчиненныхСотрудников = СписокПодчиненныхСотрудников();
    Если Не ИнициаторФизЛицо.Пустая() И СписокПодчиненныхСотрудников.НайтиПоЗначению(ИнициаторФизЛицо) = Неопределено Тогда
        СписокПодчиненныхСотрудников.Добавить(ИнициаторФизЛицо);
    КонецЕсли;
                      
    Если СписокПодчиненныхСотрудников.Количество() > 0 Тогда
            
        ПараметрОтбор = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        ПараметрОтбор.ЛевоеЗначение    = Новый ПолеКомпоновкиДанных("Инициатор");
        ПараметрОтбор.ВидСравнения       = ВидСравненияКомпоновкиДанных.ВСписке;
        ПараметрОтбор.Использование       = Истина;
        ПараметрОтбор.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
        ПараметрОтбор.ПравоеЗначение   = СписокПодчиненныхСотрудников;
        
        ПолеГруппировки = Список.Группировка.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
        ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("Инициатор");
            
    КонецЕсли;
        
КонецПроцедуры

До кучи бы сортировку? Например добавлю в список поле Руководитель = СписокПодчиненныхСотрудников.Количество() > 0; чтобы для него 1-я группировка была?
6 Mikhail Volkov
 
16.11.15
19:23
По руководителю не очень надо. Понадобилось сменить сортировку по дате, сделать по убыванию. Как?
7 Mikhail Volkov
 
17.11.15
04:41
С сортировкой разобрался:

        УсловиеСортировки = Список.Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных"));
        УсловиеСортировки.Поле = Новый ПолеКомпоновкиДанных("Дата");
        УсловиеСортировки.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Убыв;

Теперь хотелось, чтобы при открытии формы все группировки были свернуты кроме группировки руководителя. Такое (пожелание пользователя) возможно?
8 Mikhail Volkov
 
17.11.15
08:26
Элементы.Список.НачальноеОтображениеДерева = НачальноеОтображениеДерева.НеРаскрывать; - работает. Как раскрыть группировку для Инициатор = ПараметрыСеанса.ТекущийПользователь.ФизЛицо ?
9 Mikhail Volkov
 
17.11.15
12:08
Как раскрыть только нужную группировку?
10 Mikhail Volkov
 
17.11.15
15:04
Похоже в УФ это невозможно, поскольку никому не нужно!? Пользователь открыл форму, и нужную ему группировку... поработал, закрыл программу. В следующий раз открывает программу, форма открывается именно в той группировке, и на той позиции, на которой пользователь закончил работать в прошлый раз.
А пожелание пользователя, чтобы форма всегда открывалась с группировкой, где он инициатор - из серии очередных хотелок.
Независимо от того, куда вы едете — это в гору и против ветра!