Внешняя кнопка остаётся доступной: выключенная панель не блокирует возможность обратного переключения.
Где и как запускать
Полный модуль собственной обычной формы; толстый клиент. Не командная панель управляемой формы.
Подготовка
Создайте внешнюю обработку с новой обычной формой в отдельной учебной базе. Реквизит УчебноеКоличество: Число 9.0, поле ввода УчебноеКоличество связано с ним.
Добавьте пустую командную панель УчебнаяПанель, Источник действий оставьте пустым. Внешнюю обычную кнопку УчебнаяКоманда расположите вне панели. Не используйте существующую панель рабочей формы.
ПриОткрытии свяжите с одноимённой процедурой. Остальные действия вручную не назначайте: они связываются кодом через Действие. Экспортные действия панели принимают Кнопка, а обработчик внешней обычной кнопки — Элемент; ПриОткрытии самой формы остаётся без параметров.
Каждый урок — полный модуль отдельной копии формы. Толстый клиент с обычными формами. Два действия меняют или проверяют только своё число в памяти.
Процедура ПриОткрытии()
УчебноеКоличество = 3;
Панель = ЭтаФорма.ЭлементыФормы.УчебнаяПанель;
Панель.АвтоЗаполнение = Ложь;
Кнопки = Панель.Кнопки;
Если Кнопки.Количество() <> 0 Тогда
ВызватьИсключение "Для урока нужна новая пустая собственная панель";
КонецЕсли;
Кнопки.Добавить("Добавить", ТипКнопкиКоманднойПанели.Действие, "Добавить одну книгу", Новый Действие("ДобавитьУчебнуюКнигу"));
Кнопки.Добавить("Проверить", ТипКнопкиКоманднойПанели.Действие, "Проверить количество", Новый Действие("ПроверитьУчебноеКоличество"));
Кнопка = ЭтаФорма.ЭлементыФормы.УчебнаяКоманда;
Кнопка.УстановитьДействие("Нажатие", Новый Действие("ВыполнитьУчебноеДействие"));
Панель.Доступность = Истина;
Панель.Вспомогательная = Истина;
КонецПроцедуры
Процедура ВыполнитьУчебноеДействие(Элемент) Экспорт
Панель = ЭтаФорма.ЭлементыФормы.УчебнаяПанель;
ИсходноеКоличество = УчебноеКоличество;
Панель.Доступность = НЕ Панель.Доступность;
Сообщить("Доступность панели: " + Строка(Панель.Доступность));
Сообщить(УчебноеКоличество = ИсходноеКоличество);
Сообщить(Панель.Кнопки.Количество() = 2);
Сообщить(Панель.Вспомогательная);
КонецПроцедуры
Процедура ДобавитьУчебнуюКнигу(Кнопка) Экспорт
Если УчебноеКоличество < 0 Тогда
Сообщить("Сначала исправьте отрицательное учебное количество");
Возврат;
КонецЕсли;
УчебноеКоличество = УчебноеКоличество + 1;
Сообщить("Своих книг: " + Строка(УчебноеКоличество));
КонецПроцедуры
Процедура ПроверитьУчебноеКоличество(Кнопка) Экспорт
Сообщить("Учебное количество: " + Строка(УчебноеКоличество));
КонецПроцедуры
Разбор по шагам
Изменяется доступность только собственной панели, а не формы или внешней кнопки.
Данные формы и состав команд не очищаются. Проверяется число до/после и две сохранившиеся команды.
Вспомогательная = Истина означает стандартное поведение панели; это не флаг отсутствия действий.
Следующее нажатие внешней кнопки восстанавливает доступность. UI-запрет не является серверной проверкой прав.
Как проверить результат
Первое нажатие: доступность Ложь и три Истина; команды панели недоступны.
Второе: доступность Истина и три Истина; Добавить снова меняет только своё число.
Ожидаемый результат
Ограничение UI обратимо и не потеряло данные.
На что обратить внимание
Если кнопку переключения поместить внутрь отключаемой панели, обратное переключение станет недоступным.
Не используйте Доступность как защиту от прямого вызова серверной процедуры.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.