Создать собственную панель с двумя учебными действиями

Учебные задачи

АвтоЗаполнение выключено: в новой пустой панели добавлены две явные команды. Одна увеличивает число книг, вторая только читает его.

Где и как запускать

Полный модуль собственной обычной формы; толстый клиент. Не командная панель управляемой формы.

Подготовка

  1. Создайте внешнюю обработку с новой обычной формой в отдельной учебной базе. Реквизит УчебноеКоличество: Число 9.0, поле ввода УчебноеКоличество связано с ним.

  2. Добавьте пустую командную панель УчебнаяПанель, Источник действий оставьте пустым. Внешнюю обычную кнопку УчебнаяКоманда расположите вне панели. Не используйте существующую панель рабочей формы.

  3. ПриОткрытии свяжите с одноимённой процедурой. Остальные действия вручную не назначайте: они связываются кодом через Действие. Экспортные действия панели принимают Кнопка, а обработчик внешней обычной кнопки — Элемент; ПриОткрытии самой формы остаётся без параметров.

  4. Каждый урок — полный модуль отдельной копии формы. Толстый клиент с обычными формами. Два действия меняют или проверяют только своё число в памяти.

Процедура ПриОткрытии()
    УчебноеКоличество = 3;
    Панель = ЭтаФорма.ЭлементыФормы.УчебнаяПанель;
    Панель.АвтоЗаполнение = Ложь;
    Кнопки = Панель.Кнопки;
    Если Кнопки.Количество() <> 0 Тогда
        ВызватьИсключение "Для урока нужна новая пустая собственная панель";
    КонецЕсли;
    Кнопки.Добавить("Добавить", ТипКнопкиКоманднойПанели.Действие, "Добавить одну книгу", Новый Действие("ДобавитьУчебнуюКнигу"));
    Кнопки.Добавить("Проверить", ТипКнопкиКоманднойПанели.Действие, "Проверить количество", Новый Действие("ПроверитьУчебноеКоличество"));
    Кнопка = ЭтаФорма.ЭлементыФормы.УчебнаяКоманда;
    Кнопка.УстановитьДействие("Нажатие", Новый Действие("ВыполнитьУчебноеДействие"));
    Панель.Ориентация = Ориентация.Горизонтально;
    Панель.ВыравниваниеКнопок = ВыравниваниеКнопокКоманднойПанели.Лево;
    Панель.Вспомогательная = Ложь;
    Панель.Подсказка = "Два действия только для собственного числа";

КонецПроцедуры

Процедура ВыполнитьУчебноеДействие(Элемент) Экспорт
    Панель = ЭтаФорма.ЭлементыФормы.УчебнаяПанель;
    Сообщить(НЕ Панель.АвтоЗаполнение);
    Сообщить(Панель.Кнопки.Количество() = 2);
    Добавить = Панель.Кнопки.Найти("Добавить");
    Проверить = Панель.Кнопки.Найти("Проверить");
    Если Добавить = Неопределено ИЛИ Проверить = Неопределено Тогда
        ВызватьИсключение "Не найдены две собственные команды";
    КонецЕсли;
    Сообщить(Добавить.ТипКнопки = ТипКнопкиКоманднойПанели.Действие);
    Сообщить(Проверить.ТипКнопки = ТипКнопкиКоманднойПанели.Действие);
    Сообщить("Своё число: " + Строка(УчебноеКоличество));
КонецПроцедуры

Процедура ДобавитьУчебнуюКнигу(Кнопка) Экспорт
    Если УчебноеКоличество < 0 Тогда
        Сообщить("Сначала исправьте отрицательное учебное количество");
        Возврат;
    КонецЕсли;
    УчебноеКоличество = УчебноеКоличество + 1;
    Сообщить("Своих книг: " + Строка(УчебноеКоличество));
КонецПроцедуры

Процедура ПроверитьУчебноеКоличество(Кнопка) Экспорт
    Сообщить("Учебное количество: " + Строка(УчебноеКоличество));
КонецПроцедуры

Разбор по шагам

  1. Сначала проверяется пустая собственная панель. Код не очищает случайные чужие команды.

  2. АвтоЗаполнение = Ложь оставляет состав под контролем этого модуля. При Истина команды предоставлял бы ИсточникДействий, чего здесь не настроено.

  3. Кнопки — ссылка только для чтения на изменяемую коллекцию. Присваивание Панель.Кнопки не используется.

  4. Добавить создаёт два действия с реальными процедурами. Найти проверяет внутренние имена, а не текст кнопок.

  5. Вспомогательная = Ложь включает панель в обход TAB с сохранением активности в ней после действия. Проверяется в клиенте вручную.

Как проверить результат

  1. Внешняя кнопка: четыре Истина и число 3. Добавить одну книгу: 4; Проверить количество: 4 без изменения.

  2. В поле задайте -1: Добавить покажет предупреждение и не увеличит число. Верните неотрицательное значение.

Ожидаемый результат

Состав панели и эффекты двух разных действий проверяемы новичком.

На что обратить внимание

  1. Панель обычной формы не является ГруппаФормы или КоманднаяПанельФормы.

  2. АвтоЗаполнение не включает автоматически права записи данных.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.