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