Создание отношений 1:N (один ко многим) между сущностями
Эта тема относится к Dynamics 365 Customer Engagement (on-premises). Версию этой темы для Power Apps см. по адресу: Создание и изменение отношений сущностей "Один-ко-многим" или "Многие-к-одному" на портале Power Apps
Самый простой способ создать отношение 1:N — создать новое поле поиска для сущности. Это позволяет задать общие значения для поля поиска, а также два дополнительных параметра при задании для параметра Тип значения Поиск. Этими дополнительными полями являются Тип целевой записи и Название отношения.
В поле Тип целевой записи можно выбрать значение Основная сущность в отношении 1:N. Значение Название отношения создается автоматически на основе двух сущностей, участвующих в отношении. Обычно его не требуется изменять, но это возможно при необходимости. Название отношения сущностей содержит префикс настройки издателя решения для решения, с которым выполняется работа в данный момент.
Заметка
Если для вас важен префикс настройки, убедитесь, что работа выполняется в контексте решения, связанного с издателем решения с требуемым префиксом.
Однако при создании отношения 1:N путем создания поля поиска некоторые значения по умолчанию задаются автоматически. Если необходимо изменить некоторые параметры, доступные в отношении, необходимо найти отношение и изменить его.
Настраиваемые отношения 1:N можно создать не для всех сущностей. Если бы это было так, было бы невозможно создать новое настраиваемое отношение сущностей с помощью обозревателя решений. Если используется браузер метаданных, можно отфильтровать список сущностей согласно свойствам CanBePrimaryEntityInRelationship
и CanBeRelatedEntityInRelationship
.
Определение для отношения 1:N состоит из четырех частей: Определение отношения, Поле поиска, Элемент области переходов для основной сущности и Поведение отношения.
Создание и изменение отношений 1:N между сущностями
Откройте обозреватель решений.
В разделе Компоненты раскройте узел Сущности, затем раскройте сущность, с которой требуется работать.
Выберите Отношения 1:N.
Чтобы изменить отношение или просмотреть сведения для отношения, выберите отношение и нажмите на панели инструментов "Действия" кнопку Другие действия, затем выберите Изменить.
- ИЛИ -
Чтобы добавить новое отношение, выберите Создать отношение "один ко многим".
Внимание
Если кнопка Создать отношение "один ко многим" не отображается на панели инструментов "Действия", то создать отношение 1:N для этой сущности невозможно.
Для нового отношения в разделе Определение отношения выберите в списке Связанная сущность сущность для связывания.
Заметка
При указании связанной сущности задается значение по умолчанию в поле Имя. Если изменить связанную сущность перед ее сохранением, соответственно изменится и значение поля Имя.
Выберите, будет ли это поле доступно для поиска или нет.
В разделе Поле поиска укажите значение для поля в поле Отображаемое имя.
Внимание
При указании значения Отображаемое имя задается значение по умолчанию в поле Имя. Если изменить Отображаемое имя поля поиска перед сохранением данных, значение в поле Имя не изменится. Поэтому необходимо ввести в поле Имя информативное значение перед сохранением данных.
В списке Требование поля выберите вариант, чтобы указать требования к данным для поля перед сохранением записи.
В разделе Элемент области переходов для основной сущности в списке Параметры отображения выберите вариант отображения связанных представлений для пользовательской метки.
В разделе Поведение отношений выберите в списке Тип отношений один из следующих вариантов.
Родительское. В родительском отношении между двумя таблицами любое действие, выполняемое над записью основной (родительской) таблицы, также выполняется над всеми связанными с ней записями дочерних таблиц. Например, владелец родительской записи унаследовал доступ к записям дочерней таблицы, и при удалении родительской записи все дочерние записи также будут удалены. Для родительского отношения 1:N между родительской таблицей (P1) и дочерней сущностью (C1) владельцу записи P1 предоставляется наследуемый доступ к дочерним записям C1.
Ссылочное. При ссылочном отношении между двумя сущностями можно переходить к любым связанным записям, но действия, выполняемые над одной записью, не применяются к другим.
Ссылочное с ограниченным удалением. В ссылоном отношении с ограничением удаления можно переходить к любым связанным записям. Действия, выполняемые над родительской записью, не будут выполняться над дочерней, но пока она существует, удалить родительскую запись будет невозможно. Учтите, что запись нельзя удалить, если имеются связанные с ней записи.
Настраиваемое каскадное. В настраиваемом каскадном отношении между двумя сущностями выбирается поведение, связанное с каждым из наборов возможных действий.
Внимание
Если выбрать поведения для действий, совпадающие с поведениями для действий, связанными с другим Типом поведения, то при сохранении отношения значение Тип поведения будет автоматически установлено равным такому совпадающему типу.
Дополнительные сведения: Настройка поведения отношений сущностей
Выберите Сохранить и закрыть, чтобы закрыть форму Отношение.
Выполнив настройки, опубликуйте их:
Чтобы опубликовать настройки только для компонента, изменяемого в данный момент, на панели инструментов "Действия" выберите Опубликовать.
Чтобы опубликовать настройки для всех неопубликованных компонентов одновременно, на панели навигации или в области переходов выберите Сущности, затем на панели инструментов "Действия" выберите Опубликовать все настройки.
Заметка
- Настраиваемая сущность не может быть основной в каскадном отношении со связанной системной сущностью. Это означает, что между основной настраиваемой сущностью и связанной системной сущностью не может быть отношений с каким-либо из действий, установленным в "Передавать всем", "Передавать активным" или "Передавать владельцу".
- У новых отношений действие не может иметь значение Передавать всем, Передавать активным или Передавать владельцу, если связанная сущность в этом отношении уже является связанной сущностью в любом другом отношении, действие которого имеет значение Передавать всем, Передавать активным или Передавать владельцу. Это позволяет избежать создания отношений с несколькими родительскими сущностями.
- После каждого изменения элементов пользовательского интерфейса или внедрения скриптов формы для сущности необходима публикация изменений. Все изменения в схеме данных приложения, таких как настраиваемые сущности, связи или поля, применяются сразу.
- Если отношение является частью управляемого решения, разработчик решения может ограничить настройку отношения пользователями.
- Установка решения или публикация настроек может помешать нормальной работе системы. Рекомендуется запланировать импорт решения в оптимальный для пользователей период.
Определение отношения
В зависимости от выбранной команды Создать отношение "один-ко-многим" или Создать отношение "многие-к-одному" в обозревателе решений будет заполнено поле Основная сущность или Связанная сущность. Вам лишь потребуется выбрать другое поле. Значение по умолчанию для поля Название вводится на основе префикса настройки издателя решения и имен сущностей, выбранных для участия в отношении. Его можно изменить при желании. Если создается несколько настраиваемых отношений между двумя сущностями и в обоих случаях используется одинаковый префикс, значение созданного автоматически названия не будет уникальным, и вы не сможете сохранить новое отношение. Необходимо изменить название, чтобы отличить его от существующего названия, перед сохранением. После сохранения изменить название невозможно.
Если не требуется отображаться это отношение сущностей в поле Расширенный поиск, задайте для параметра Для поиска значение Нет.
Поля поиска
Эти поля являются общими свойствами для всех полей за исключением полей Для поиска, Безопасность поля и Аудит. Чтобы изменить эти значения для поля поиска, созданного с отношением сущностей, необходимо найти и изменить поле поиска отдельно после создания отношения сущностей. Дополнительные сведения: Создание и изменение полей.
Как правило, Отображаемое имя должно соответствовать отображаемому имени основной сущности.
Элемент области навигации для основной сущности
Можно показать списки связанных сущностей в основной сущности, развернув панель навигации. С помощью параметров в этой группе можно управлять тем, что будет отображаться в этом списке и будет ли что-то отображаться вовсе. Следующие элементы навигации можно изменить с помощью редактора форм, а с помощью JavaScript разработчик может внести изменения в эти элементы, если отображается форма.
Поле | Описание |
---|---|
Параметры отображения |
-
Не отображать. Выберите этот параметр, требуется запретить пользователям переходить к списку записей связанных сущностей. - Использовать специальные метки. Выберите этот параметр, если требуется указать специальную метку для использования. - Использовать имя во множественном числе. Выберите этот параметр, если имя связанной сущности во множественном числе требуется использовать в качестве метки. |
Пользовательская метка | При выборе параметра Использовать специальные метки в качестве параметра отображения введите специальную метку, которую требуется использовать вместо имени связанной сущности во множественном числе. |
Область отображения |
-
Сведения. Выберите этот параметр для включения элемента навигации в группу Общие. - Маркетинг. Выберите этот параметр для включения элемента навигации в группу Маркетинг. - Продажи. Выберите этот параметр для включения элемента навигации в группу Продажи. - Служба. Выберите этот параметр для включения элемента навигации в группу Служба. |
Порядок отображения | Это значение управляет тем, будет ли элемент навигации включен в выбранную область отображения. Диапазон доступных номеров начинается с 10 000. Элементы области навигации с меньшим значением будут стоять в списке выше других отношений. |
Поведение отношений
Можно настроить поведение отношения 1:N для поддержки бизнес-правил организации. Почему это может потребоваться? Рассмотрим пример.
Допустим, у вас новый продавец и требуется назначить ему несколько существующих возможных сделок, в данное время назначенных другому продавцу. Каждая запись возможной сделки может иметь несколько действий задач, связанных с ней. Можно легко найти активные возможные сделки, которые требуется переназначить, и назначить их новому продавцу. Но что произойдет с действиями задач, связанными с возможными сделками? Хотелось бы вам открывать каждую задачу и указывать, должна ли она также быть назначена новому продавцу? Скорее всего, нет. Вместо этого можно разрешить отношению применить некоторые стандартные правила автоматически. Эти правила применяются только к записям задач, связанным с возможными сделками, которые вы переназначаете. Это отношение сущностей называется Opportunity_Tasks. Можно выполнить следующие действия:
Переназначить все активные задачи.
Переназначить все задачи. Это поведение принимается по умолчанию.
Не переназначать задачи.
Переназначить все задачи, которые в данный момент назначены бывшему владельцу возможной сделки.
Отношение может управлять тем, как действия, выполняемые с записью для записи основной сущности, распространяются на все записи связанной сущности. Действия и возможное поведение приведены в следующей таблице.
Действие | Описание | Возможное поведение |
---|---|---|
Назначение | Что должно произойти, когда меняется владелец записи основной сущности? | - Каскадный активный - Каскадный для всех - Без каскада - Каскад для ответств. |
Общий доступ | Что должно произойти при совместном использовании записи основной сущности? | - Каскадный активный - Каскадный для всех - Без каскада - Каскад для ответств. |
Отмена общего доступа | Что должно произойти при отмене совместного использования записи основной сущности? | - Каскадный активный - Каскадный для всех - Без каскада - Каскад для ответств. |
Переподчинение | Что должно произойти, когда меняется значение поля поиска для отношения родительского типа в записи основной сущности? Отношение родительского типа — это отношение, использующее Каскад для всех для всех действий. - Каскадный активный - Каскадный для всех - Без каскада - Каскад для ответств. |
|
Удаление | Что должно произойти при удалении записи основной сущности? | - Каскадный для всех - Удалить ссылку - Ограничить удаление |
Слияние | Что должно произойти, когда запись основной сущности объединяется с другой записью? | - Каскадный для всех - Без каскада |
Каждое из этих действий можно настроить для управления тем, как действия будут распространяться на записи, связанные с записью основной сущности отношением сущностей 1:N. Параметры поведения представлены в следующей таблице.
Поведение | Описание |
---|---|
Передавать активным | Выполнение действия для всех активных записей связанной сущности. |
Передавать всем | Выполнение действия для всех записей связанной сущности. |
Не передавать никому | Никакие действия не выполняются. |
Удалить ссылку | Удаление значения поля поиска для всех записей связанной сущности. |
Ограничить удаление | Блокировка возможности удаления записи основной сущности, если существуют связанные записи. |
Передавать владельцу | Выполнение действия для всех записей связанной сущности тем же пользователем, что и пользователь записи основной сущности. |
Способ применения этих действий в отношении можно классифицировать и применить с помощью значений поля Тип поведения, описанных в следующей таблице.
Значение поля | Описание |
---|---|
Родительский | Все действия используют поведение Передавать всем. |
Ссылочный |
Действия Назначить, Предоставить общий доступ, Отменить общий доступ и Переподчинение используют поведение Не передавать никому. Действие Удалить использует поведение Удалить ссылку. Действие Объединить использует поведение Каскад для всех. |
Ссылочный, ограничить удаление | Аналогично значению Ссылочный за исключением того, что действие Удалить использует поведение Ограничить удаление. |
Настраиваемое каскадное | Отдельное поведение можно назначить для каждого действия. Если выбранные значения соответствуют любым другим категориям Тип поведения, значение изменится на значение Тип поведения. |
Доступные ограничения поведения
Существует ряд ограничений, которые необходимо учитывать при определении отношений сущностей.
Настраиваемая сущность не может быть основной в каскадном отношении со связанной системной сущностью. Это означает, что между основной настраиваемой сущностью и связанной системной сущностью не может быть отношений с каким-либо из действий со значением Передавать всем, Передавать активным или Передавать владельцу.
У новых отношений действие не может иметь значение Передавать всем, Передавать активным или Передавать владельцу, если связанная сущность в этом отношении уже является связанной сущностью в любом другом отношении, действие которого имеет значение Передавать всем, Передавать активным или Передавать владельцу. Это позволяет избежать создания отношений с несколькими родительскими сущностями.
Каскадирование при слиянии не может быть задано или изменено, и оно зависит от указанной сущности. Если указанная сущность является организацией, контактом или интересом, действие выполняется каскадом. В противном случае нет.