Подскажите, плиз. На форме много очень элементов. Как можно управлять доступностью программно без обращения к каждому?
Допустим эти элементы можно разделить на три группы, можно как-нибудь группами управлять их доступность?
Вот код из БП 3.0, как пример.
Может быть, как идея, подойдет?
// Принимает в качестве параметра форму и для всех реквизитов,
// для которых определен механизм, блокирует их редактирование.
//
// Параметры:
// Форма - УправляемаяФорма объекта, которая будет настроена.
//
// СпециальнаяПолеГруппыДляКнопкиЗапрета - переопределяет стандартное размещение
// кнопки запрета в форме объекта.
//
Процедура ЗаблокироватьРеквизиты(Форма, СпециальнаяПолеГруппыДляКнопкиЗапрета = Неопределено) Экспорт
// Определение, форма уже подготовлена при предыдущем вызове
ФормаПодготовлена = Ложь;
РеквизитыФормы = Форма.ПолучитьРеквизиты();
Для Каждого РеквизитФормы Из РеквизитыФормы Цикл
Если РеквизитФормы.Имя = "ПараметрыЗапретаРедактированияРеквизитов" Тогда
ФормаПодготовлена = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Если Не ФормаПодготовлена Тогда
ПодготовитьФорму(Форма, Форма.Объект.Ссылка, СпециальнаяПолеГруппыДляКнопкиЗапрета);
КонецЕсли;
ЭтоНовыйОбъект = Форма.Объект.Ссылка.Пустая();
// Блокировка редактирования элементов формы, связанных с заданными реквизитами
Для Каждого ОписаниеБлокируемогоРеквизита Из Форма.ПараметрыЗапретаРедактированияРеквизитов Цикл
Для Каждого ОписаниеЭлементаФормы Из ОписаниеБлокируемогоРеквизита.БлокируемыеЭлементы Цикл
ОписаниеБлокируемогоРеквизита.РедактированиеРазрешено =
ОписаниеБлокируемогоРеквизита.ПравоРедактирования И ЭтоНовыйОбъект;
ЭлементФормы = Форма.Элементы.Найти(ОписаниеЭлементаФормы.Значение);
Если ЭлементФормы <> Неопределено Тогда
Если ТипЗнч(ЭлементФормы) = Тип("ПолеФормы")
ИЛИ ТипЗнч(ЭлементФормы) = Тип("ТаблицаФормы") Тогда
ЭлементФормы.ТолькоПросмотр = НЕ ОписаниеБлокируемогоРеквизита.РедактированиеРазрешено;
Иначе
ЭлементФормы.Доступность = ОписаниеБлокируемогоРеквизита.РедактированиеРазрешено;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЦикла;
Если Форма.Элементы.Найти("РазрешитьРедактированиеРеквизитовОбъекта") <> Неопределено Тогда
Форма.Элементы.РазрешитьРедактированиеРеквизитовОбъекта.Доступность = Истина;
КонецЕсли;
КонецПроцедуры
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший