Имя: Пароль:
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) Большое спасибо за направление хода мысли.