--- title: Изменение доступности элементов рекурсивно slug: 1с-1-общие-управляемые-формы/изменение-доступности-элементов-рекурсивно --- ```bsl // Процедура - устанавливает значения свойств "Доступность" и "Только просмотр" // // Параметры: // Форма - ФормаКлиентскогоПриложения - // Элемент - ЭлементыФормы, Строка - // Доступность - Булево - Значение свойства "Доступность". Свойство "Только просмотр" = Не "Доступность" // ТолькоПросмотрГрупп - Булево - Устанавливает значение свойства "Только просмотр" для групп. По умолчанию ЛОЖЬ // Процедура УстановитьДоступностьЭлементовРекурсивно(Форма, Элемент, Доступность, ТолькоПросмотрГрупп = Ложь) Экспорт ИзменяемыйЭлемент = Элемент; Если ТипЗнч(Элемент) = Тип("Строка") Тогда ИзменяемыйЭлемент = Форма.Элементы.Найти(Элемент); КонецЕсли; Если ИзменяемыйЭлемент = Неопределено Тогда Возврат; КонецЕсли; Если ТипЗнч(ИзменяемыйЭлемент) = Тип("ГруппаФормы") Или ТипЗнч(ИзменяемыйЭлемент) = Тип("ФормаКлиентскогоПриложения") Тогда ИзменяемыйЭлемент.ТолькоПросмотр = ТолькоПросмотрГрупп; Для Каждого ПодчиненныйЭлемент Из ИзменяемыйЭлемент.ПодчиненныеЭлементы Цикл УстановитьДоступностьЭлементовРекурсивно(Форма, ПодчиненныйЭлемент, Доступность, ТолькоПросмотрГрупп); КонецЦикла; ИначеЕсли ТипЗнч(ИзменяемыйЭлемент) = Тип("КнопкаФормы") Или ТипЗнч(ИзменяемыйЭлемент) = Тип("ТаблицаФормы") Тогда ИзменяемыйЭлемент.Доступность = Доступность; ИначеЕсли ТипЗнч(ИзменяемыйЭлемент) = Тип("ПолеФормы") Тогда ИзменяемыйЭлемент.ТолькоПросмотр = Не Доступность; ИзменяемыйЭлемент.Доступность = Истина; // Поле ввода всегда доступно, управляем "ТолькоПросмотр" КонецЕсли; КонецПроцедуры ```