Имя: Пароль:
1C
1С v8
Сменить видимость интерфейса
0 orcdunaev
 
19.04.17
11:53
Всем привет.
Есть ЗУП 2.5
Хочу пользователю с основным интерфейсом "Интерфейс1" отключить все прочие интерфейсы (вместе с теми, у которых Переключаемый = ложь).

Нашел в инете такой код, пишу его в модуле обычного приложения в ПриНачалеРаботыСистемы():

ПользовательИБ = ПользователиИнформационнойБазы.ТекущийПользователь();

Если ПользовательИБ <> Неопределено
И ПользовательИБ.ОсновнойИнтерфейс <> Неопределено
И ПользовательИБ.ОсновнойИнтерфейс.Имя = "Интерфейс1" Тогда

Для каждого ТекИнтерфейс Из ГлавныйИнтерфейс Цикл
ТекИнтерфейс.Переключаемый = Ложь;
ТекИнтерфейс.Видимость = Ложь;
КонецЦикла;

//Задействуем интерфейс "Интерфейс1"
Интерфейс1 = ГлавныйИнтерфейс.Интерфейс1;
Интерфейс1.Переключаемый = Истина;
Интерфейс1.Видимость = Истина;
КонецЕсли;

В отладчике вижу, что при ТекИнтерфейс.Видимость = Ложь и Интерфейс1.Переключаемый = Истина свойства Видимость и Переключаемый не меняют свое значение. Т.е. реальной записи значений в свойства не происходит.
В чем может быть проблема?
Как убрать пользователю все интерфейсы, кроме Интерфейс1?
Ограничение: менять в конфигураторе свойства объектов Интерфейс нельзя, они настроены для других задач.
1 orcdunaev
 
19.04.17
12:29
Нашел решение. Людской логикой это не объяснить, но работает ВОТ ТАК:

ПользовательИБ = ПользователиИнформационнойБазы.ТекущийПользователь();
    Если РольДоступна("НужнаяРоль") Тогда
        Для каждого Интерфейс Из ГлавныйИнтерфейс Цикл
            Если Интерфейс <> ГлавныйИнтерфейс.Интерфейс1 Тогда
                Если Интерфейс.Переключаемый = Ложь Тогда //выглядит странно, но так надо.
                    Интерфейс.Переключаемый = Ложь;    
                КонецЕсли;
            КонецЕсли;
        КонецЦикла;     
        ГлавныйИнтерфейс.ПереключитьИнтерфейс("Интерфейс1");    
    КонецЕсли;
2 orcdunaev
 
19.04.17
12:31
Т.е. чтобы установить Переключаемый в значение Истина, надо присвоить ему Ложь.
3 Волшебник
 
модератор
19.04.17
12:32
(1) чушь какая-то
4 orcdunaev
 
19.04.17
12:39
(3) Согласен.
Вот здесь, как оказалось, тоже обсуждалось это странное обстоятельство: v8: Програмное изменение свойств интерфейса