Перейти к основному содержимому

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

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

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

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

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

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

Тип <Имя-команды-с-компонентом> доступен на клиенте. Может быть задан с помощью конструктора:

КомандаСКомпонентом(
Компонент: ТипКомпонента,
Обработчик: (КомандаСКомпонентом<ТипКомпонента>)->ничто,
Представление: Строка,
Изображение: ДвоичныйОбъект.Ссылка? = Неопределено,
Важность: ВажностьКоманды = ВажностьКоманды.Обычная,
Доступность: Булево = Истина,
Видимость: Булево = Истина,
ОпасностьДействия: ОпасностьДействия = ОпасностьДействия.Отсутствует
)

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

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

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

В этом модуле вы можете разместить обработчик команды.

Для команды с компонентом, созданной для компонента интерфейса, также можно задать обработчик. Для этого в панели свойств команды перейдите к свойству Обработчик:

Обработчик

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

Чтобы создать новый обработчик, введите для него имя и нажмите на значок лупы — обработчик будет автоматически создан и добавлен в модуль компонента.

Если не вводить имя для обработчика, то оно также будет сгенерировано автоматически, на основе следующей схемы:

  • Если представление команды не указано:

    • КомандаСКомпонентомОбработчик.
  • Если представление команды указано:

    • Представление + «Обработчик».
совет

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

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

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

Важность

ВажностьКоманды. Определяет приоритет при отображении нескольких команд. Например, команда с важностью Низкая будет отображаться в выпадающем меню «Еще». Возможные значения:

  • Высокая,
  • Обычная,
  • Низкая.

Видимость

Булево. Управляет видимостью команды. Если Ложь, команда скрыта в интерфейсе.

ВидЭлемента

Вид элемента проекта (подробнее).

Доступность

Булево. Управляет доступностью команды. Если Ложь, команда не доступна для выполнения.

Ид

Идентификатор элемента проекта. «1С:Шина» создает этот идентификатор автоматически.

Изображение

ДвоичныйОбъект.Ссылка?. Ссылка на ресурс картинки, которая будет показана в команде. Пример YAML-файла:

ВидЭлемента: КомандаСКомпонентом
Ид: 141df770-6a96-4650-8042-c8beb8801c5d
Имя: КомандаЗакрытьФорму
ОбластьВидимости: ВПодсистеме
Представление: Команда закрыть форму
ТипКомпонента: Форма
Изображение: icon.svg

Импорт

Список импортированных пространств имен (подробнее).

Имя

Имя элемента проекта.

Компонент

ТипКомпонента. Тип компонента, над которым будет выполнена команда.

НастройкиТипа

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

  • Контракты Массив<Тип>. Имена контрактов типа, которые реализует данная команда.

ОбластьВидимости

Видимость элемента проекта (подробнее):

  • ВПодсистеме — элемент виден внутри одной подсистемы во всех пакетах. Значение по умолчанию.
  • ВПроекте — элемент виден во всех подсистемах одного проекта.
  • Глобально — элемент виден во всех подсистемах всех проектов.

ОпасностьДействия

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

  • Высокая,
  • Средняя,
  • Отсутствует.

Представление

Строка. Строка, которая будет показана как заголовок команды. Если не задано явно — генерируется автоматически по имени элемента проекта. Пример YAML-файла:

ВидЭлемента: КомандаСКомпонентом
Ид: 141df770-6a96-4650-8042-c8beb8801c5d
Имя: КомандаЗакрытьФорму
ОбластьВидимости: ВПодсистеме
Представление: Команда закрыть форму
ТипКомпонента: Форма

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

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

  1. Создайте элемент проекта КомандаСКомпонентом.

    В свойстве ТипКомпонента укажите тип компонента, для которого описывается команда.

    ВидЭлемента: КомандаСКомпонентом
    Ид: 141df770-6a96-4650-8042-c8beb8801c5d
    Имя: КомандаЗакрытьФорму
    ОбластьВидимости: ВПодсистеме
    Представление: Команда закрыть форму
    ТипКомпонента: Форма
  2. В модуле элемента проекта объявите обработчик команды:

    @Обработчик
    метод Обработчик()
    знч Форма = этот.Компонент
    Форма.Закрыть()
    ;
  3. Далее добавьте в проект компонент интерфейса Форма и в свойстве ОсновнаяКоманда укажите имя команды с компонентом:

    ВидЭлемента: КомпонентИнтерфейса
    Ид: 468f8f1d-89f9-4cbe-87a0-56bc4f6bc350
    Имя: ФормаСКомандой
    ОбластьВидимости: ВПодсистеме
    Наследует:
    Тип: Форма
    ОсновнаяКоманда:
    Тип: КомандаЗакрытьФорму
    Компонент: =этот

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

    @ВПроекте
    метод ДобавитьКоманду()
    знч КомандаЗакрытьФорму = новый КомандаЗакрытьФорму(Компонент = этот)
    этот.ОсновнаяКоманда = КомандаЗакрытьФорму
    ;

    Для того чтобы команда с компонентом создалась, данный метод следует вызвать. Это можно сделать, например, из обработчика формы ПослеСоздания:

    @Обработчик
    метод ПослеСоздания()
    ДобавитьКоманду()
    ;