КоманднаяПанель.Кнопки

Свойства · Buttons

Тип: КнопкиКоманднойПанели. Содержит коллекцию кнопок, образующих командную панель.

Полное описание, параметры и ограничения

КоманднаяПанель.Кнопки (CommandBar.Buttons)

КоманднаяПанель (CommandBar)

Кнопки (Buttons)

Доступен, начиная с версии 8.0.

Использование:
Только чтение.
Описание:
Тип: КнопкиКоманднойПанели.
Содержит коллекцию кнопок, образующих командную панель.
Доступность:

Толстый клиент.

Использование в версии:

Доступен, начиная с версии 8.0.

Методическая информация

Практические примеры

Отключить свою панель с возможностью включить её обратно

Внешняя кнопка остаётся доступной: выключенная панель не блокирует возможность обратного переключения.

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

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

Подготовка

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

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

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

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

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

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

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

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

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

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

  1. Изменяется доступность только собственной панели, а не формы или внешней кнопки.

  2. Данные формы и состав команд не очищаются. Проверяется число до/после и две сохранившиеся команды.

  3. Вспомогательная = Истина означает стандартное поведение панели; это не флаг отсутствия действий.

  4. Следующее нажатие внешней кнопки восстанавливает доступность. UI-запрет не является серверной проверкой прав.

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

  1. Первое нажатие: доступность Ложь и три Истина; команды панели недоступны.

  2. Второе: доступность Истина и три Истина; Добавить снова меняет только своё число.

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

Ограничение UI обратимо и не потеряло данные.

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

  1. Если кнопку переключения поместить внутрь отключаемой панели, обратное переключение станет недоступным.

  2. Не используйте Доступность как защиту от прямого вызова серверной процедуры.

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

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

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

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

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

Подготовка

  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С» и не аффилирован с ней.