У меня было в определенный момент

```1c

```
ЭтаФорма.ТолькоПРосмотр = Истина
оказалось для пары элементов так делать не надо, и как?
пробовал

```1c
    Для Квждого ЭлФ из ЭлементыФормы цикл
    Если ЭлФ.Имя <>"чето" Тогда
    ЭлФ.ТолькоПросмотр = Истина
    КонецЕсли
    КонецЦикла;
```

Не получилось - не у всех есть это свойство
---
Долго ломал голову, в результате сделал от обратного, у меня большая часть элементов становиться доступна той или иной роли. Так и сделал - остальные тоже сделал только для чтения, и открыл эти два реквизита в одном случае
---
Доступность
---
Тоже пробовал, го на форме есть страницы - они перестают переключатся, видно только первую
---
проверку на вид ЭУ нужно делать внутри цикла
---
по типу элемента управления проверяй тогда в цикле
---
Если не заморачиваться, то сделайте через попытку.

Если заморочится, то нужно сделать проверку что то типо:

Для Квждого ЭлФ из ЭлементыФормы цикл
      Если ЭлФ.Имя <>"чето" Тогда

Если ТипЗНЧ(ЭлФ) = Тип("ПолеФормы") Тогда
              ЭлФ.ТолькоПросмотр = Истина
КонецЕсли;
     КонецЕсли
КонецЦикла;

Код писал по памяти,так что имена типов и синтаксис может быть с ошибкой
---
вместо
```1c
    Если ЭлФ.Имя <>"чето" Тогда
```
лучше писать
```1c
    Если ЭлФ<>Элементы.чето Тогда
```
---
а ещё вариант:
```1c
    ТолькоПросмотрИстина = структура новый("ТолькоПросмотр", Истина);
    Для Квждого ЭлФ из ЭлементыФормы цикл
    Если НЕ ЭлФ=Элементы.чето Тогда
    ЗаполнитьЗначенияСвойств(ЭлФ,ТолькоПросмотрИстина);
    КонецЕсли
    КонецЦикла;
```

PS ну а лучше, как сказали выше, проверять тип.
привер кода из типовых:

```1c
    Если ТипЗнч(ЭлементФормы) = Тип("ПолеФормы")
    ИЛИ ТипЗнч(ЭлементФормы) = Тип("ТаблицаФормы") Тогда
    ЭлементФормы.ТолькоПросмотр = НЕ РазрешитьИзменение;
    Иначе
    ЭлементФормы.Доступность = РазрешитьИзменение;
    КонецЕсли;
```
---
Я перебираю все элементы. Там не у каждого элемента есть доступность, получается не слишком... эмм... в общем на экзамене меня бы выгнали. Но работает годами и совершенно универсально )

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

    Если Кнопка.ТипКнопки = ТипКнопкиКоманднойПанели.Подменю Тогда
    Для Каждого КнопкаКнопки Из Кнопка.Кнопки Цикл
    КнопкаКнопки.Доступность = Истина;
    КонецЦикла;
    КонецЕсли;
    КонецЦикла;
    ИначеЕсли Элем = ЭлементыФормы.КоманднаяПанельСборщики И ДоступенСписокСборщиков Тогда
    // это разрешаем кому надо
    Для Каждого Кнопка Из Элем.Кнопки Цикл
    Кнопка.Доступность = Истина;

    Если Кнопка.ТипКнопки = ТипКнопкиКоманднойПанели.Подменю Тогда
    Для Каждого КнопкаКнопки Из Кнопка.Кнопки Цикл
    КнопкаКнопки.Доступность = Истина;
    КонецЦикла;
    КонецЕсли;
    КонецЦикла;
    ИначеЕсли Элем = ЭлементыФормы.Сборщики И ДоступенСписокСборщиков Тогда
    Элем.Доступность = Истина;
    ИначеЕсли ТипЭлем = ТипКомПанель Тогда
    Для Каждого Кнопка Из Элем.Кнопки Цикл
    Кнопка.Доступность = РазрешаетсяРедактированиеФормы;

    Если Кнопка.ТипКнопки = ТипКнопкиКоманднойПанели.Подменю Тогда
    Для Каждого КнопкаКнопки Из Кнопка.Кнопки Цикл
    КнопкаКнопки.Доступность = РазрешаетсяРедактированиеФормы;
    КонецЦикла;
    КонецЕсли;
    КонецЦикла;
    ИначеЕсли ТипЭлем = ТипКнопка Тогда
    Элем.Доступность = РазрешаетсяРедактированиеФормы;
    Продолжить;
    ИначеЕсли Элем = ЭлементыФормы.ПримечаниеКСборке И ДоступенКомментарийСборки Тогда
    Элем.Доступность = Истина;
    Иначе
    Попытка
    Элем.ТолькоПросмотр = НЕ РазрешаетсяРедактированиеФормы;
    Исключение
    Сообщить(" + Элем);
    КонецПопытки;
    КонецЕсли;
    КонецЦикла;
```
---
Долго ломал голову, в результате сделал от обратного, у меня большая часть элементов становиться доступна той или иной роли. Так и сделал - остальные тоже сделал только для чтения, и открыл эти два реквизита в одном случае
---
Я бы создал некий реквизит формы, допустим: "МоиПрава"
При открытии формы (или ещё как) задавал бы ему значение.
А остальное - Условное оформление формы с "опорой" на этот реквизит...
---
Эта разработка в 8.2 - я у нее не видел условного оформления
---
Можно ЭтаФорма.ТолькоПросмотр = Истина, а нужные реквизиты вынести в отдельную форму, например как в публикации