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

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

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

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

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

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

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

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

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

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

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

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

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

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