Запрет изменений управляемой формы

Случается так, что мы хотим запретить любые действия пользователя на форме программно. Для этой цели я написал небольшую процедурку. Она принимает форму и устанавливает или снимает запрет использования элементов. Вызывать можно, например, при создании на сервере.

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

Вот как выглядит форма с запретом изменения: