Типы встроенного языка и свойства элемента проекта вида «КомандаСКомпонентом»

Элемент проекта КомандаСКомпонентом позволяет описать команду, привязанную к конкретному компоненту.

Тип <Имя-команды-с-компонентом>

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

Например, для команды с компонентом КомандаЗакрытьФорму будет создан тип КомандаЗакрытьФорму. В общем случае имя этого типа выглядит следующим образом: <Имя-команды-с-компонентом>.

Тип <Имя-команды-с-компонентом> доступен на клиенте. Данный тип, в отличие от других команд, не является типом-одиночкой, а имеет конструктор:

// Создать новый экземпляр команды с компонентом
знч МояФорма = новый Форма()
знч КомандаЗакрытьФорму = новый КомандаЗакрытьФорму(Компонент = МояФорма)

Модуль команды с компонентом

В проекте модуль, расширяющий тип <Имя-команды-с-компонентом>, называется модулем команды с компонентом. Он исполняется на клиенте.

В этом модуле вы можете разместить обработчик команды.
Совет: В модуле команды с компонентом может находиться реализация контрактов типа без свойств.

Иерархия наследования

Свойства элемента проекта

В проекте элемент КомандаСКомпонентом имеет следующие свойства:

Компонент
ТипКомпонента. Тип компонента, над которым будет выполнена команда.
Представление
Строка. Строка, которая будет показана как заголовок команды. Если не задано явно — генерируется автоматически по имени элемента проекта. Пример YAML-файла:
ВидЭлемента: КомандаСКомпонентом
Ид: 141df770-6a96-4650-8042-c8beb8801c5d
Имя: КомандаЗакрытьФорму
ОбластьВидимости: ВПодсистеме
Представление: Команда закрыть форму
ТипКомпонента: Форма
НастройкиТипа
Контракты, которые реализует команда с компонентом. Поддерживаются только контракты типа без свойств.
Контракты
Массив<Тип>. Имена контрактов типа, которые реализует данная команда.
Изображение
ДвоичныйОбъект.Ссылка?. Ссылка на ресурс картинки, которая будет показана в команде. Пример YAML-файла:
ВидЭлемента: КомандаСКомпонентом
Ид: 141df770-6a96-4650-8042-c8beb8801c5d
Имя: КомандаЗакрытьФорму
ОбластьВидимости: ВПодсистеме
Представление: Команда закрыть форму
ТипКомпонента: Форма
Изображение: icon.svg
Доступность
Булево. Управляет доступностью команды. Если Ложь, команда не доступна для выполнения.
Важность
ВажностьКоманды. Определяет приоритет при отображении нескольких команд. Например, команда с важностью Низкая будет отображаться в выпадающем меню «Еще». Возможные значения:
  • Высокая
  • Обычная
  • Низкая
Видимость
Булево. Управляет видимостью команды. Если Ложь, команда скрыта в интерфейсе.
Доступность
Булево. Управляет доступностью команды. Если Ложь, команда недоступна для выполнения.
ОпасностьДействия
ОпасностьДействия. Определяет опасность действия, совершаемого пользователем, например, может ли нажатие на кнопку привести к удалению данных. Возможные значения:
  • Высокая
  • Средняя
  • Отсутствует

Пример создания команды с компонентом

Описать команду закрытия формы можно следующим образом:

  1. Создайте элемент проекта КомандаСКомпонентом.
    • В свойстве ТипКомпонента укажите тип компонента, для которого описывается команда.
    ВидЭлемента: КомандаСКомпонентом
    Ид: 141df770-6a96-4650-8042-c8beb8801c5d
    Имя: КомандаЗакрытьФорму
    ОбластьВидимости: ВПодсистеме
    Представление: Команда закрыть форму
    ТипКомпонента: Форма
  2. В модуле элемента проекта объявите обработчик команды:
    @Обработчик
    метод Обработчик()
        знч Форма = этот.Компонент
        Форма.Закрыть()
    ;
  3. Далее добавьте в проект компонент интерфейса Форма и в свойстве ОсновнаяКоманда укажите имя команды с компонентом:
    ВидЭлемента: КомпонентИнтерфейса
    Ид: 468f8f1d-89f9-4cbe-87a0-56bc4f6bc350
    Имя: ФормаСКомандой
    ОбластьВидимости: ВПодсистеме
    Наследует:
        Тип: Форма
        ОсновнаяКоманда:
            Тип: КомандаЗакрытьФорму
            Компонент: =этот
    Команду с компонентом можно также добавить из встроенного языка. Например, вы можете добавить в модуль формы следующий метод:
    @ВПроекте
    метод ДобавитьКоманду()
        знч КомандаЗакрытьФорму = новый КомандаЗакрытьФорму(Компонент = этот)
        этот.ОсновнаяКоманда = КомандаЗакрытьФорму
    ;
    Для того чтобы команда с компонентом создалась, данный метод следует вызвать. Это можно сделать, например, из обработчика формы ПослеСоздания:
    @Обработчик
    метод ПослеСоздания()
        ДобавитьКоманду()
    ;