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