Имя: Пароль:
1C
 
Как дать пользователю отключить отбор?
0 Хосе
 
07.05.20
19:18
Включаю отбор так, но после этого он не выключается.
И даже через настройки - отбор не отключается.
Как дать отключить?

    
    ИскЭлементОтбора = Неопределено;
    Для Каждого ЭлементОтбора ИЗ ЭтаФорма.Список.Отбор.Элементы Цикл
        Если ЭлементОтбора.Представление = "_Контрагент" Тогда
            ИскЭлементОтбора = ЭлементОтбора;
            Прервать;
        КонецЕсли;
    КонецЦикла;
    Если ИскЭлементОтбора = Неопределено Тогда
        ИскЭлементОтбора = ЭтаФорма.Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        ИскЭлементОтбора.Представление = "_Контрагент";
    КонецЕсли;
    ИскЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    ИскЭлементОтбора.ПравоеЗначение = Новый ПолеКомпоновкиДанных(ПолеКонтрагента);
    ИскЭлементОтбора.ЛевоеЗначение = ИскКонтрагент;
    ИскЭлементОтбора.Использование = ЗначениеЗаполнено(ИскКонтрагент);
    ИскЭлементОтбора.РежимОтображения  = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
1 vicof
 
07.05.20
19:54
Попутал левое и правое значение
2 Хосе
 
07.05.20
22:02
(1) не суть, работает. Как отключить то?
3 ГдеСобака Зарыта
 
07.05.20
22:11
Юзать не отбор списка, а настройки компоновщика настроек списка.
4 ГдеСобака Зарыта
 
07.05.20
22:16
Или пользовательские настройки компановщика. В этих настройках компановщика без стакана не разберешься.
5 Хосе
 
08.05.20
11:52
Вот тут пишут, что наоборот, надо неудаляемые настройки, код таой же как у меня, только наоборот делают запрет:
v8: Как пользователям запретить удаление условия отбора в форме списка?
6 Хосе
 
08.05.20
13:54
Сам зашел в настройки отбора, ввел их вручную, понял, что они заносятся в пользовательские настройки.

Сделал код через пользовательские настройки, но понял, что они не отключаются, т.к. на форму не выводится элемент, показывающий пользовательские настройки:


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

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


Посмотрел, как работает отбор, чтобы не сильно ломать типовое приложение, сделаю чтобы при накладывании отбора рядом с кнопкой вызова отбора появлялась кнопка отключения отбора. После нажатия она будет исчезать.
Это самый естественный вариант, остальные слишком нерациональные.

Вопрос закрыт.

(4) Большое спасибо за направление хода мысли.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.