Имя: Пароль:
1C
1С v8
как программно отключить пользовательскую настройку в 1с
0 ZanZiBar
 
28.04.14
06:33
Поймал тупняк. Нужно что бы по нажатию кнопки переставала действовать пользовательская настройка(действие аналогичное снятию галочки.


Процедура ПолеВвода1Очистка(Элемент, СтандартнаяОбработка)
    
    ПараметрОтбор = ЭтотОбъект.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы[0];
    ПараметрОтбор.Использование=Ложь;    
    ПараметрОтбор.ПравоеЗначение = ПолеВвода1;

КонецПроцедуры


Использование Ложь не работает
1 Cube
 
28.04.14
06:36
(0) Думаю, что надо в КомпоновщикНастроек.Настройки галочку снимать, а не в КомпоновщикНастроек.ПользовательскиеНастройки.
2 ZanZiBar
 
28.04.14
07:23
Не проходит этот фокус
3 Cube
 
28.04.14
07:25
(2) Какой? Ты программист или дворник? Говори техническим языком.
4 ZanZiBar
 
28.04.14
07:33
(3) КомпоновщикНастроек.Настройки не видит Пользовательскую настройку. Пишет ошибку не найдено.

Включал вот таким образом. Работает корректно


Процедура ПолеВвода1ПриИзменении(Элемент)
    
    
    ПараметрОтбор = ЭтотОбъект.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы[0];

    ПараметрОтбор.Использование=Истина;        
    ПараметрОтбор.ПравоеЗначение = ПолеВвода1;

КонецПроцедуры


Соответственно и выключать её необходимо, очевидно, через пользовательские. Вот только использование-ложь не отключает.
5 ZanZiBar
 
28.04.14
07:35
Думал из за того что забыл убрать строчку

    ПараметрОтбор.ПравоеЗначение = ПолеВвода1;

Опять не так.
6 Cube
 
28.04.14
07:35
(4) Это что за настройка вообще? Что это? Выбранное поле? Отбор? Параметр? Условное оформление?
7 ZanZiBar
 
28.04.14
07:37
Отбор.
8 Cube
 
28.04.14
07:39
(7) Тогда выкинь свой код и делай так:

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