Профиль связанной сущности — элемент управления, который по умолчанию представляет собой информационный блок, наполняемый при загрузке страницы записи информацией о связанной сущности. В приложении элемент используется как профиль связанной записи на странице записи раздела. Например, при открытии страницы контакта в контейнере левой части страницы записи (LeftModulesContainer) отображается профиль контакта и информация о связанном с ним контрагенте. Контрагент связан с контактом по колонке Account объекта Contact. Профиль записи и профиль связанной записи подробно описаны в статье Страницы записей.
Составляющие, которые реализуют функциональность профиля связанной сущности:
- Класс Profile.
- BaseProfileSchema — базовая схема для создания профиля связанной сущности. Позволяет отобразить любой набор полей по связанной сущности, а также любое количество модулей. Является родительским классом для класса Profile. Все схемы профилей связанных сущностей должны наследовать схему BaseProfileSchema.
- BaseMultipleProfileSchema — базовая схема для создания профиля связанной сущности, который содержит в себе несколько профилей и свободно между ними переключается, пользуясь логикой выбора значений из справочников. Основное отличие от базового профиля — возможность встраивать другие профили в текущий профиль. При этом встроенные профили могут взаимодействовать друг с другом посредством сообщений. Профили BaseMultipleProfileSchema должны наследовать базовую схему BaseRelatedProfileSchema, которая реализует профили,зависимые или встроенные в другие профили.
Добавить профиль связанной сущности
- Создайте схему модели представления профиля связанной сущности. Для этого воспользуйтесь инструкцией, которая приведена в статье Клиентский модуль.
- 
	В схеме модели представления настройте профиль связанной сущности. - В свойство mixins добавьте миксин ProfileSchemaMixin.
- В массив модификаций diff добавьте конфигурационный объект с настройками связанного пользовательского профиля.
 
- Создайте схему замещающей модели представления страницы записи, на которой размещено поле. Для этого воспользуйтесь инструкцией, которая приведена в статье Клиентский модуль.
- 
	В схеме замещающей модели представления добавьте связанный пользовательский профиль на страницу записи. - В свойство modules добавьте модуль связанного пользовательского профиля контрагента. В свойство masterColumnName свойства viewModelConfig добавьте название колонки, по которой выполняется связь связанного профиля с основной схемой страницы записи. Опираясь на значение этой колонки, класс Profile загружает данные.
- В массив модификаций diff добавьте конфигурационный объект с настройками расположения связанного пользовательского профиля контрагента.
 
По значению колонки, которая указана в свойстве masterColumnName, класс Profile загружает данные. На этапе инициализации объекта профиля класс Profile:
- Отправляет сообщение GetColumnInfo для получения дополнительной информации о колонке, по которой он связан (фильтры, заголовок и т. д.).
- 
	Запрашивает значение колонки, по которой он связан. - Если связанный профиль не пустой (т. е. в поле связи выбрана запись), то по этой записи инициализируются данные.
- 
		Если связанный профиль пустой (т. е. в поле связи не выбрана запись), то на месте связанного профиля контрагента отображаются: - Название поля, по которому выполняется связь. Например, на странице контакта отображается связанный профиль контрагента, который связан с контактом по полю Контрагент (Account).
- Добавить контрагент(New account) — создать новую запись в справочнике поля связи.
- Выбрать (Search) — выбрать существующую запись из списка доступных.
 
 
Профиль контакта, у которого присутствует связанный профиль контрагента, представлен на рисунке ниже.

Профиль контакта, у которого отсутствует связанный профиль контрагента, представлен на рисунке ниже.

При очистке поля или изменении значения в объекте профиля выполняется переинициализация данных. При выборе существующей связанной сущности на справочник накладывается бизнес-логика, которая определена в странице записи и связана с атрибутом, который ссылается на эту сущность. Т. е. сохраняется фильтрация, настройки колонок запроса и т. д. Удаление атрибута из схемы страницы записи приведет к удалению бизнес-логики.
1. Создать схему модели представления связанного профиля контрагента
- Перейдите в раздел Конфигурация (Configuration) и выберите пользовательский пакет, в который будет добавлена схема.
- 
	На панели инструментов реестра раздела нажмите Добавить —> Модель представления страницы (Add —> Page view model).  
- 
	Заполните свойства схемы. - Код (Code) — "UsrAccountProfileSchema".
- Заголовок (Title) — "Профиль контрагента" ("Account profile").
- Родительский объект (Parent object) — выберите "AccountProfileSchema".
  
- В объявлении класса модели представления в качестве зависимостей добавьте миксин ProfileSchemaMixin.
- 
	Настройте связанный пользовательский профиль контрагента. - В свойство mixins добавьте миксин ProfileSchemaMixin.
- В массив модификаций diff добавьте конфигурационный объект с настройками связанного пользовательского профиля контрагента.
 Исходный код схемы модели представления связанного профиля контрагента представлен ниже. 
- На панели инструментов дизайнера нажмите Сохранить (Save).
2. Создать схему замещающей модели представления страницы контакта
- Перейдите в раздел Конфигурация (Configuration) и выберите пользовательский пакет, в который будет добавлена схема.
- 
	На панели инструментов реестра раздела нажмите Добавить —> Замещающая модель представления (Add —> Replacing view model). /scr_add_replacing_module.png) 
- 
	Заполните свойства схемы. - Код (Code) — "ContactPageV2".
- Заголовок (Title) — "Схема отображения карточки контакта" ("Display schema - Contact card").
- Родительский объект (Parent object) — выберите "ContactPageV2".
  
- В объявлении класса модели представления в качестве зависимостей добавьте модули BaseFiltersGenerateModule, BusinessRuleModule, ContactPageV2Resources, ConfigurationConstants, ContactCareer, DuplicatesSearchUtilitiesV2, UsrAccountProfileSchema.
- 
	Добавьте связанный пользовательский профиль контрагента на страницу контакта. - В свойство modules добавьте модуль связанного пользовательского профиля контрагента.
- В массив модификаций diff добавьте конфигурационный объект с настройками расположения связанного пользовательского профиля контрагента.
 Исходный код схемы замещающей модели представления страницы контакта представлен ниже. 
- На панели инструментов дизайнера нажмите Сохранить (Save).
Результат выполнения примера
Чтобы посмотреть результат выполнения примера, обновите страницу раздела Контакты (Contacts).
В результате выполнения примера на страницу контакта добавлен связанный пользовательский профиль контрагента.

BaseProfileSchema — базовая схема для создания профиля связанной сущности. Позволяет отобразить любой набор полей по связанной сущности, а также любое количество модулей. Реализована в пакете NUI. Схема является схемой модели представления. Описание свойств схемы содержится в статье Клиентская схема. Все схемы профилей связанных сущностей должны наследовать схему BaseProfileSchema.
Сообщения
| Название | Режим | Направление | Описание | 
|---|---|---|---|
| Entity | Широковещательное | Подписка | Событие инициализации основной сущности. | 
| Get | Широковещательное | Подписка | Обрабатывает изменения колонки сущности. | 
| Get | Адресное | Публикация | Возвращает запрошенные значения колонки. | 
| Get | Адресное | Публикация | Получает справочник фильтров запроса. | 
| Get | Адресное | Публикация | Возвращает информацию колонки. | 
| Update | Адресное | Публикация | Изменяет значение карточки модели. | 
| Open | Адресное | Публикация | Открывает карточку. | 
| Card | Адресное | Подписка | Ответное сообщение карточки модуля. | 
Режимы сообщений представлены перечислением Terrasoft.core.enums.MessageMode, а направления сообщений — перечислением Terrasoft.core.enums.MessageDirectionType. Перечисление MessageMode описано в Библиотеке JS классов. Перечисление MessageDirectionType описано в Библиотеке JS классов.
Методы
Возвращает конфигурацию мини-карточки.
| {Object} options | Свойства мини-карточки. | 
Возвращает справочник конфигурации открытого справочника.
| {Object} config | Конфигурация открытой справочной страницы. | 
Возвращает тег видимости контейнера BlankSlateContainer.
Возвращает тег видимости контейнера ProfileContentContainer.
Возвращает всплывающую подсказку к кнопке Очистить (Clear).
Получает свойства конфигурации обновления карточки при ее сохранении.
| {Object} response | Ответ сервера. | 
BaseMultipleProfileSchema — базовая схема для создания профиля связанной сущности, который содержит в себе несколько профилей и свободно между ними переключается, пользуясь логикой выбора значений из справочников. Реализована в пакете NUI. Схема является схемой модели представления. Описание свойств схемы содержится в статье Клиентская схема. Профили BaseMultipleProfileSchema должны наследовать базовую схему BaseRelatedProfileSchema, которая реализует профили,зависимые или встроенные в другие профили.
Сообщения
|  |  |  |  | 
|---|---|---|---|
| Profile | Широковещательное | Публикация | Обрабатывает изменения колонки сущности профиля. | 
| Get | Адресное | Подписка | Возвращает запрошенные значения колонки. | 
| Profile | Адресное | Подписка | Отправляет запрос открытой карточки с конфигурацией. | 
Режимы сообщений представлены перечислением Terrasoft.core.enums.MessageMode, а направления сообщений — перечислением Terrasoft.core.enums.MessageDirectionType. Перечисление MessageMode описано в Библиотеке JS классов. Перечисление MessageDirectionType описано в Библиотеке JS классов.
BaseRelatedProfileSchema — базовая схема, которая реализует профили,зависимые или встроенные в другие профили. Реализована в пакете NUI. Схема является схемой модели представления. Описание свойств схемы содержится в статье Клиентская схема. Является родительской схемой для базовой схемы BaseMultipleProfileSchema создания профиля связанной сущности, который содержит в себе несколько профилей и свободно между ними переключается, пользуясь логикой выбора значений из справочников.
Сообщения
| Profile | Широковещательное | Подписка | Обрабатывает изменения колонки сущности профиля. | 
| Get | Адресное | Публикация | Отправляет запрошенные значения колонки. | 
| Profile | Адресное | Публикация | Отправляет запрос открытой карточки с конфигурацией. | 
Режимы сообщений представлены перечислением Terrasoft.core.enums.MessageMode, а направления сообщений — перечислением Terrasoft.core.enums.MessageDirectionType. Перечисление MessageMode описано в Библиотеке JS классов. Перечисление MessageDirectionType описано в Библиотеке JS классов.