Профиль связанной сущности — элемент управления, который по умолчанию представляет собой информационный блок, наполняемый при загрузке страницы записи информацией о связанной сущности. В приложении элемент используется как профиль связанной записи на странице записи раздела. Например, при открытии страницы контакта в контейнере левой части страницы записи (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).
-
Заполните свойства схемы.
- Код (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 классов.