Поделиться через


Создание отношений 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. Откройте обозреватель решений.

  2. В разделе Компоненты раскройте узел Сущности, затем раскройте сущность, с которой требуется работать.

  3. Выберите Отношения 1:N.

  4. Чтобы изменить отношение или просмотреть сведения для отношения, выберите отношение и нажмите на панели инструментов "Действия" кнопку Другие действия, затем выберите Изменить.

    - ИЛИ -

    Чтобы добавить новое отношение, выберите Создать отношение "один ко многим".

    Внимание

    Если кнопка Создать отношение "один ко многим" не отображается на панели инструментов "Действия", то создать отношение 1:N для этой сущности невозможно.

  5. Для нового отношения в разделе Определение отношения выберите в списке Связанная сущность сущность для связывания.

    Заметка

    При указании связанной сущности задается значение по умолчанию в поле Имя. Если изменить связанную сущность перед ее сохранением, соответственно изменится и значение поля Имя.

  6. Выберите, будет ли это поле доступно для поиска или нет.

  7. В разделе Поле поиска укажите значение для поля в поле Отображаемое имя.

    Внимание

    При указании значения Отображаемое имя задается значение по умолчанию в поле Имя. Если изменить Отображаемое имя поля поиска перед сохранением данных, значение в поле Имя не изменится. Поэтому необходимо ввести в поле Имя информативное значение перед сохранением данных.

  8. В списке Требование поля выберите вариант, чтобы указать требования к данным для поля перед сохранением записи.

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

  10. В разделе Поведение отношений выберите в списке Тип отношений один из следующих вариантов.

    • Родительское. В родительском отношении между двумя таблицами любое действие, выполняемое над записью основной (родительской) таблицы, также выполняется над всеми связанными с ней записями дочерних таблиц. Например, владелец родительской записи унаследовал доступ к записям дочерней таблицы, и при удалении родительской записи все дочерние записи также будут удалены. Для родительского отношения 1:N между родительской таблицей (P1) и дочерней сущностью (C1) владельцу записи P1 предоставляется наследуемый доступ к дочерним записям C1.

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

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

    • Настраиваемое каскадное. В настраиваемом каскадном отношении между двумя сущностями выбирается поведение, связанное с каждым из наборов возможных действий.

      Внимание

      Если выбрать поведения для действий, совпадающие с поведениями для действий, связанными с другим Типом поведения, то при сохранении отношения значение Тип поведения будет автоматически установлено равным такому совпадающему типу.

Дополнительные сведения: Настройка поведения отношений сущностей

  1. Выберите Сохранить и закрыть, чтобы закрыть форму Отношение.

  2. Выполнив настройки, опубликуйте их:

    • Чтобы опубликовать настройки только для компонента, изменяемого в данный момент, на панели инструментов "Действия" выберите Опубликовать.

    • Чтобы опубликовать настройки для всех неопубликованных компонентов одновременно, на панели навигации или в области переходов выберите Сущности, затем на панели инструментов "Действия" выберите Опубликовать все настройки.

Заметка

  • Настраиваемая сущность не может быть основной в каскадном отношении со связанной системной сущностью. Это означает, что между основной настраиваемой сущностью и связанной системной сущностью не может быть отношений с каким-либо из действий, установленным в "Передавать всем", "Передавать активным" или "Передавать владельцу".
  • У новых отношений действие не может иметь значение Передавать всем, Передавать активным или Передавать владельцу, если связанная сущность в этом отношении уже является связанной сущностью в любом другом отношении, действие которого имеет значение Передавать всем, Передавать активным или Передавать владельцу. Это позволяет избежать создания отношений с несколькими родительскими сущностями.
  • После каждого изменения элементов пользовательского интерфейса или внедрения скриптов формы для сущности необходима публикация изменений. Все изменения в схеме данных приложения, таких как настраиваемые сущности, связи или поля, применяются сразу.
  • Если отношение является частью управляемого решения, разработчик решения может ограничить настройку отношения пользователями.
  • Установка решения или публикация настроек может помешать нормальной работе системы. Рекомендуется запланировать импорт решения в оптимальный для пользователей период.

Определение отношения

В зависимости от выбранной команды Создать отношение "один-ко-многим" или Создать отношение "многие-к-одному" в обозревателе решений будет заполнено поле Основная сущность или Связанная сущность. Вам лишь потребуется выбрать другое поле. Значение по умолчанию для поля Название вводится на основе префикса настройки издателя решения и имен сущностей, выбранных для участия в отношении. Его можно изменить при желании. Если создается несколько настраиваемых отношений между двумя сущностями и в обоих случаях используется одинаковый префикс, значение созданного автоматически названия не будет уникальным, и вы не сможете сохранить новое отношение. Необходимо изменить название, чтобы отличить его от существующего названия, перед сохранением. После сохранения изменить название невозможно.

Если не требуется отображаться это отношение сущностей в поле Расширенный поиск, задайте для параметра Для поиска значение Нет.

Поля поиска

Эти поля являются общими свойствами для всех полей за исключением полей Для поиска, Безопасность поля и Аудит. Чтобы изменить эти значения для поля поиска, созданного с отношением сущностей, необходимо найти и изменить поле поиска отдельно после создания отношения сущностей. Дополнительные сведения: Создание и изменение полей.

Как правило, Отображаемое имя должно соответствовать отображаемому имени основной сущности.

Можно показать списки связанных сущностей в основной сущности, развернув панель навигации. С помощью параметров в этой группе можно управлять тем, что будет отображаться в этом списке и будет ли что-то отображаться вовсе. Следующие элементы навигации можно изменить с помощью редактора форм, а с помощью JavaScript разработчик может внести изменения в эти элементы, если отображается форма.

Поле Описание
Параметры отображения - Не отображать. Выберите этот параметр, требуется запретить пользователям переходить к списку записей связанных сущностей.
- Использовать специальные метки. Выберите этот параметр, если требуется указать специальную метку для использования.
- Использовать имя во множественном числе. Выберите этот параметр, если имя связанной сущности во множественном числе требуется использовать в качестве метки.
Пользовательская метка При выборе параметра Использовать специальные метки в качестве параметра отображения введите специальную метку, которую требуется использовать вместо имени связанной сущности во множественном числе.
Область отображения - Сведения. Выберите этот параметр для включения элемента навигации в группу Общие.
- Маркетинг. Выберите этот параметр для включения элемента навигации в группу Маркетинг.
- Продажи. Выберите этот параметр для включения элемента навигации в группу Продажи.
- Служба. Выберите этот параметр для включения элемента навигации в группу Служба.
Порядок отображения Это значение управляет тем, будет ли элемент навигации включен в выбранную область отображения. Диапазон доступных номеров начинается с 10 000. Элементы области навигации с меньшим значением будут стоять в списке выше других отношений.

Поведение отношений

Можно настроить поведение отношения 1:N для поддержки бизнес-правил организации. Почему это может потребоваться? Рассмотрим пример.

Допустим, у вас новый продавец и требуется назначить ему несколько существующих возможных сделок, в данное время назначенных другому продавцу. Каждая запись возможной сделки может иметь несколько действий задач, связанных с ней. Можно легко найти активные возможные сделки, которые требуется переназначить, и назначить их новому продавцу. Но что произойдет с действиями задач, связанными с возможными сделками? Хотелось бы вам открывать каждую задачу и указывать, должна ли она также быть назначена новому продавцу? Скорее всего, нет. Вместо этого можно разрешить отношению применить некоторые стандартные правила автоматически. Эти правила применяются только к записям задач, связанным с возможными сделками, которые вы переназначаете. Это отношение сущностей называется Opportunity_Tasks. Можно выполнить следующие действия:

  • Переназначить все активные задачи.

  • Переназначить все задачи. Это поведение принимается по умолчанию.

  • Не переназначать задачи.

  • Переназначить все задачи, которые в данный момент назначены бывшему владельцу возможной сделки.

    Отношение может управлять тем, как действия, выполняемые с записью для записи основной сущности, распространяются на все записи связанной сущности. Действия и возможное поведение приведены в следующей таблице.

Действие Описание Возможное поведение
Назначение Что должно произойти, когда меняется владелец записи основной сущности? - Каскадный активный
- Каскадный для всех
- Без каскада
- Каскад для ответств.
Общий доступ Что должно произойти при совместном использовании записи основной сущности? - Каскадный активный
- Каскадный для всех
- Без каскада
- Каскад для ответств.
Отмена общего доступа Что должно произойти при отмене совместного использования записи основной сущности? - Каскадный активный
- Каскадный для всех
- Без каскада
- Каскад для ответств.
Переподчинение Что должно произойти, когда меняется значение поля поиска для отношения родительского типа в записи основной сущности?

Отношение родительского типа — это отношение, использующее Каскад для всех для всех действий. - Каскадный активный
- Каскадный для всех
- Без каскада
- Каскад для ответств.
Удаление Что должно произойти при удалении записи основной сущности? - Каскадный для всех
- Удалить ссылку
- Ограничить удаление
Слияние Что должно произойти, когда запись основной сущности объединяется с другой записью? - Каскадный для всех
- Без каскада

Каждое из этих действий можно настроить для управления тем, как действия будут распространяться на записи, связанные с записью основной сущности отношением сущностей 1:N. Параметры поведения представлены в следующей таблице.

Поведение Описание
Передавать активным Выполнение действия для всех активных записей связанной сущности.
Передавать всем Выполнение действия для всех записей связанной сущности.
Не передавать никому Никакие действия не выполняются.
Удалить ссылку Удаление значения поля поиска для всех записей связанной сущности.
Ограничить удаление Блокировка возможности удаления записи основной сущности, если существуют связанные записи.
Передавать владельцу Выполнение действия для всех записей связанной сущности тем же пользователем, что и пользователь записи основной сущности.

Способ применения этих действий в отношении можно классифицировать и применить с помощью значений поля Тип поведения, описанных в следующей таблице.

Значение поля Описание
Родительский Все действия используют поведение Передавать всем.

Ссылочный Действия Назначить, Предоставить общий доступ, Отменить общий доступ и Переподчинение используют поведение Не передавать никому.

Действие Удалить использует поведение Удалить ссылку.

Действие Объединить использует поведение Каскад для всех.
Ссылочный, ограничить удаление Аналогично значению Ссылочный за исключением того, что действие Удалить использует поведение Ограничить удаление.
Настраиваемое каскадное Отдельное поведение можно назначить для каждого действия. Если выбранные значения соответствуют любым другим категориям Тип поведения, значение изменится на значение Тип поведения.

Доступные ограничения поведения

Существует ряд ограничений, которые необходимо учитывать при определении отношений сущностей.

  • Настраиваемая сущность не может быть основной в каскадном отношении со связанной системной сущностью. Это означает, что между основной настраиваемой сущностью и связанной системной сущностью не может быть отношений с каким-либо из действий со значением Передавать всем, Передавать активным или Передавать владельцу.

  • У новых отношений действие не может иметь значение Передавать всем, Передавать активным или Передавать владельцу, если связанная сущность в этом отношении уже является связанной сущностью в любом другом отношении, действие которого имеет значение Передавать всем, Передавать активным или Передавать владельцу. Это позволяет избежать создания отношений с несколькими родительскими сущностями.

  • Каскадирование при слиянии не может быть задано или изменено, и оно зависит от указанной сущности. Если указанная сущность является организацией, контактом или интересом, действие выполняется каскадом. В противном случае нет.

См. также

Создание отношений N:N (многие-ко-многим)