Системные компоненты и компоненты интерфейса

Пользовательский интерфейс описывают специальные типы — компоненты, которые можно разделить на две группы:
  • системные компоненты;
  • компоненты интерфейса.

Системные компоненты — это типы встроенного языка, существующие в изначально и не зависящие от конкретного проекта. Полный список этих типов вы можете посмотреть здесь.

Компоненты интерфейса — это типы, описанные в проекте. Вы можете добавить в проект элемент вида КомпонентИнтерфейса, унаследованный от одного из системных компонентов. Например, от компонента Картинка:

ВидЭлемента: КомпонентИнтерфейса
Ид: fca3d12c-6233-45d6-8ff4-5ff1ff969767
Имя: МояКартинка
ОбластьВидимости: ВПодсистеме
Наследует:
    Тип: Картинка
    Изображение: Колокольчик.svg
    ДополнительноеЗначение:
        Тип: Число
        Значение: 0
    ОписаниеЗначкаДополнительногоЗначения:
        Тип: ОписаниеЗначка
        ОтображатьНоль: Ложь

Компонент интерфейса получает все свойства, методы и события базового компонента (системного компонента, от которого он унаследован). Вы можете добавить ему собственные свойства и события или переопределить базовые. Тем самым вы создаете собственный компонент, который в дальнейшем будете использовать для описания интерфейса приложения.

Совет: Свойства компонента интерфейса могут реализовывать контракт типа.

Описание компонента и использование компонента (описание экземпляра компонента)

Добавляя в проект компонент интерфейса, вы только описываете тип, который будете использовать. Сам компонент при этом не появляется в интерфейсе. Чтобы он появился в каком-либо месте интерфейса, необходимо описать экземпляр этого компонента в составе другого компонента.

Примечание: Исключение из этого правила составляют компоненты, унаследованные от абстрактного компонента КлиентскоеПриложение: СтандартноеКлиентскоеПриложениеСРазделами и ПроизвольноеКлиентскоеПриложение. Именно эти компоненты автоматически показывает при запуске приложения (подробнее).
Примечание: Еще одним исключением из этого правила являются формы. Во-первых, они имеют свойство ВключатьВАвтоИнтерфейс, с помощью которого команда открытия этой формы включается в автоматический интерфейс, а во-вторых, форму можно открыть стандартной или навигационной командой (подробнее).
Экземпляры компонентов описываются, например:
  • в свойстве Содержимое у компонентов ФиксированнаяГруппа, МатричнаяГруппа, Форма, ФормаОбъекта, ФормаСписка и других;
  • в свойстве Меню у компонентов Кнопка и КомпонентВыбора;
  • в свойстве Картинка у компонентов Кнопка и КомпонентВыбора и т. д.

Например, в следующем примере в компоненте с именем МояКнопка описан экземпляр системного компонента Картинка:

ВидЭлемента: КомпонентИнтерфейса
Ид: 3bb6a20e-f859-4ba8-b1de-aa6232473933
Имя: МояКнопка
ОбластьВидимости: ВПодсистеме
Наследует:
    Тип: Кнопка
    Заголовок: Добавить файлы
    Подсказка: Нажмите, чтобы добавить файлы    
    Картинка:
        Имя: КартинкаНаКнопке
        Изображение: Вложение.svg

В свою очередь экземпляр этого компонента интерфейса МояКнопка может быть описан в составе другого компонента, например в составе группы МояГруппа:

ВидЭлемента: КомпонентИнтерфейса
Ид: 68f5f2c1-44dd-4b11-8112-2a9f7393ebb5
Имя: МояГруппа
ОбластьВидимости: ВПодсистеме
Наследует:
    Тип: ФиксированнаяГруппа
    Содержимое:
        -
            Тип: МояКнопка
            Имя: ИмяКнопки
        -
            Тип: МояКартинка
            Имя: ИмяКартинки

Описание одного экземпляра компонента может включать в себя описание экземпляров других компонентов. Например, в следующем примере в содержимом формы описан экземпляр системного компонента ФиксированнаяГруппа, в составе которого описаны два экземпляра системного компонента Флажок с именами ЗагружатьВсе и ПерезаписыватьСтарые:

ВидЭлемента: КомпонентИнтерфейса
Ид: 9f51db7f-c98d-499c-9607-545d5e0a58c2
Имя: МояФормаОбъекта
Наследует:
    Тип: ФормаОбъекта<МойСправочник.Объект>
    ВключатьВАвтоИнтерфейс: Ложь
    Содержимое:
        Тип: ПроизвольныйШаблонФормы
        Содержимое:
            Тип: ФиксированнаяГруппа
            Содержимое:
                -
                    Тип: Флажок
                    Имя: ЗагружатьВсе
                    Заголовок: Загружать все данные
                    Значение:
                        Тип: Булево
                        Значение: Истина
                -
                    Тип: Флажок
                    Имя: ПерезаписыватьСтарые
                    Заголовок: Перезаписывать старые элементы
При описании экземпляра компонента вы можете:
  • переопределить стандартные значения собственных свойств компонента (созданных вами) и базовых свойств;
  • переопределить обработчики базовых событий (при добавлении в проект компонента интерфейса вы могли назначить обработчики его базовых событий, здесь вы можете их переопределить);
  • назначить обработчики собственных событий компонента (при добавлении в проект компонента интерфейса вы могли создать для него события, здесь вы можете назначить обработчики этих событий).

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