Оформить подменю 8.5 и не путать важность с правами доступа

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

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

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

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

Подготовка

  1. В отдельной своей конфигурации УчебнаяКонфигурацияСинтаксиса создайте новую внешнюю обработку с пустой управляемой основной формой. Вставьте весь модуль выбранного опыта.

  2. Назначьте событию ПриСозданииНаСервере одноимённый обработчик. Не создавайте вручную реквизиты, панель, группу, команды или кнопки: всё добавляется кодом.

  3. В памяти формы собственная Книга: количество 3, цена 250, сумма 750. Кнопка +1 меняет количество, кнопка Вернуть 3 возвращает его, сумма пересчитывается.

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

  5. Настольный тонкий/толстый клиент Windows 8.5.1.1343. Важность подменю появилась в 8.5.1. Фактическую фигуру, цвета и компактность проверьте глазами в активной теме.

  6. Только во втором опыте нужна своя общая картинка УчебныйМаркер: импортируйте lesson-assets/owned-book-marker-32.png в общую картинку своей учебной конфигурации и обновите её.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Реквизиты = Новый Массив;
    Реквизиты.Добавить(Новый РеквизитФормы("Количество", Новый ОписаниеТипов("Число")));
    Реквизиты.Добавить(Новый РеквизитФормы("Сумма", Новый ОписаниеТипов("Число")));
    ЭтаФорма.ИзменитьРеквизиты(Реквизиты);
    Количество = 3;
    Сумма = Количество * 250;
    Для Каждого Имя Из СтрРазделить("Количество,Сумма", ",") Цикл
        Поле = Элементы.Добавить("УчебноеПоле" + Имя, Тип("ПолеФормы"));
        Поле.Вид = ВидПоляФормы.ПолеНадписи;
        Поле.ПутьКДанным = Имя;
        Поле.Заголовок = "Книга: " + Имя;
    КонецЦикла;
    Панель = Элементы.Добавить("УчебнаяКоманднаяПанель", Тип("ГруппаФормы"));
    Панель.Вид = ВидГруппыФормы.КоманднаяПанель;
    Группа = Элементы.Добавить("УчебнаяГруппаКоманд", Тип("ГруппаФормы"), Панель);
    Группа.Заголовок = "Действия с собственной Книгой";
    Группа.Вид = ВидГруппыФормы.Подменю;
    Группа.Важность = ВажностьКнопки.Обычная;
    Группа.Фигура = ФигураКнопки.Овал;
    Группа.ОтображениеФигуры = ОтображениеФигурыКнопки.Всегда;
    Группа.ЦветРамки = Новый Цвет(50, 100, 150);
    Группа.ЦветФона = Новый Цвет(230, 242, 255);
    СоздатьСвоюКоманду("УвеличитьКоличество", "+1 Книга", Группа, ВидКнопкиФормы.КнопкаКоманднойПанели);
    СоздатьСвоюКоманду("ВернутьТри", "Вернуть 3", Группа, ВидКнопкиФормы.КнопкаКоманднойПанели);
    СоздатьСвоюКоманду("СменитьОтображение", "Сменить отображение", Неопределено, ВидКнопкиФормы.ОбычнаяКнопка);
КонецПроцедуры

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

&НаКлиенте
Процедура УвеличитьКоличество(Команда)
    Количество = Количество + 1;
    Сумма = Количество * 250;
    Сообщить("Собственная Книга: " + Строка(Количество) + ", сумма " + Строка(Сумма));
КонецПроцедуры

&НаКлиенте
Процедура ВернутьТри(Команда)
    Количество = 3;
    Сумма = Количество * 250;
    Сообщить(Количество = 3 И Сумма = 750);
КонецПроцедуры

&НаКлиенте
Процедура СменитьОтображение(Команда)
    Группа = Элементы.УчебнаяГруппаКоманд;
    Если Группа.ОтображениеФигуры = ОтображениеФигурыКнопки.Всегда Тогда
        Группа.ОтображениеФигуры = ОтображениеФигурыКнопки.ПриАктивности;
    Иначе
        Группа.ОтображениеФигуры = ОтображениеФигурыКнопки.Всегда;
    КонецЕсли;
    Сообщить("Показ фигуры: " + Строка(Группа.ОтображениеФигуры));
    Сообщить(Группа.Важность = ВажностьКнопки.Обычная);
    Сообщить(Группа.Фигура = ФигураКнопки.Овал);
    Сообщить(Группа.ЦветРамки = Новый Цвет(50, 100, 150));
    Сообщить(Группа.ЦветФона = Новый Цвет(230, 242, 255));
    Сообщить(Сумма = Количество * 250);
КонецПроцедуры

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

  1. У собственной кнопки подменю задать обычную важность 8.5, овальную фигуру и показ фигуры Всегда.

  2. Задать свои цвета рамки и фона. Это настройки оформления, не установка безопасного режима или роли.

  3. Внешняя команда меняет только правило показа фигуры: Всегда/ПриАктивности.

  4. Проверить фигуру при наведении и активности в своём клиенте. Сохранённые свойства не доказывают одинаковый вид в каждой теме.

  5. Команды внутри подменю продолжают увеличивать количество и возвращать 3.

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

  1. Команда выводит режим фигуры и пять Истина: важность, форма, два цвета и согласованная сумма.

  2. В режиме ПриАктивности сравните неактивную, наведённую и активную кнопку; затем верните Всегда.

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

Оформление подменю проверяется отдельно от обработки его пунктов.

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

  1. Важность Главная у подменю интерпретируется как Обычная, не превращает его в основную команду приложения.

  2. Фигура и цвет не дают прав на данные и не означают, что команда безопасна.

  3. Свойство Важность подменю доступно начиная с 8.5.1; пример нельзя без проверки переносить на 8.3.

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

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

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

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

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