Удаление зависимостей

Компоненты решения часто зависят от других компонентов решения. Невозможно удалить компонент решения, который имеет зависимости от другого компонента решения. Зависимости — это записи, автоматически создаваемые платформой решений для предотвращения удаления необходимых компонентов, в то время как один или несколько зависимых компонентов по-прежнему содержат ссылки на них. Пример зависимости следующий: допустим, для работы формы требуется поле, то если вы когда-либо попытаетесь выполнить действие, которое приведет к удалению этого поля, форма перестанет работать.

Примечание

В этой статье, удалить означает, что компонент полностью удален из системы.

В этой статье мы обсудим, как обрабатывать эти зависимости, и стратегии, которые вы можете использовать для удаления зависимостей, которые вам больше не нужны.

Зависимости неуправляемых и управляемых компонентов

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

Неуправляемые компоненты

Эти компоненты представлены одним слоем в активном решении. Любая операция Удалить с таким компонентом приводит к его полному удалению.

Управляемые компоненты

Удаление управляемых компонентов зависит от нескольких факторов: количество слоев решения, относительное положение удаляемого слоя и издатели компонентов. Например, при удалении компонента рассмотрите следующие сценарии и ожидаемое поведение при удалении различных слоев.

Примеры сценариев

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

Сценарий 1. Удаление одного уровня решения

Удаление с одним слоем.

Удаление решения 1 вызывает удаление компонента, потому что это единственный слой для компонента.

Сценарий 2. Удаление слоев решений от разных издателей

Удаление с двумя слоями — другой издатель.

  • Удаление решения 2 не вызывает удаления компонентов. Только этот слой будет удален.
  • Удаление решения 1 вызывает удаление компонента, потому что это действие выполняется в базовом слое. Фактически, решение 1 не может быть удалено в этом сценарии, потому что решение от другого издателя расширяет компонент.

Сценарий 3. Удаление нескольких слоев решений от разных издателей

Удаление с несколькими слоями — другой издатель.

  • Удаление решения 3 не вызывает удаления компонентов. Только этот слой будет удален.
  • Удаление решения 2 не вызывает удаления компонентов. Только этот слой будет удален.
  • Удаление решения 1 не вызывает удаления компонента, потому что в этом случае есть другое решение от того же издателя (Издатель A = Издатель C)). Платформа удаляет слой из решения 1 и заменяет его слоем из решения 3.

Сценарий 4. Удаление слоев решений в неуправляемой настройке

Удаление с двумя слоями — неуправляемая настройка.

  • Удаление активного (неуправляемого) слоя не вызывает удаления компонента. Только этот слой будет удален. Обратите внимание, что вы не можете удалить активное решение, но вы можете удалить компоненты с помощью функции Удалить активную настройку.
  • Удаление решения 1 вызывает удаления компонентов. Действие происходит в базовом слое. В отличие от сценария 2, решение 1 можно удалить. Активное решение не считается расширением, и оба слоя будут удалены.

Страница сведений о зависимостях

На странице Сведения о зависимостях перечислены зависимости для выбранного решения. Ее можно вызвать:

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

Пример страницы сведений о зависимостях.

Страница Сведения о зависимостях имеет следующие столбцы:

  • Отображаемое имя: понятное имя необходимого компонента. Каждый компонент может отображать немного разные данные, чтобы упростить идентификацию. На предыдущем рисунке вы можете видеть, что сущность показывает только свое имя, в то время как поле отображает свое имя и имя его родительской сущности.
  • Имя/идентификатор: внутреннее имя необходимого компонента.
  • Тип: тип требуемого компонента.
  • Требуется: понятное имя компонента, которому он требуется (зависимый компонент). Если у зависимого компонента есть страница настройки, его имя становится ссылкой, которая открывает эту страницу.
  • Тип зависимого: тип зависимого компонента.
  • Слои решений: ссылка, где вы можете увидеть более подробную информацию о компонентах, участвующих в зависимости.

Примечание

Требуемый компонент — это тот, который вы хотите удалить. Зависимый компонент — это тот, который имеет ссылки на требуемый компонент. Чтобы удалить зависимость, вы должны внести изменения, которые затрагивают зависимый компонент, а не требуемый компонент.

Диагностика зависимостей

Давайте рассмотрим следующий сценарий. У организации ниже есть два решения: Решение — рабочий процесс и Решение — пользовательская сущность.

Список решений с двумя решениями.

Владелец организации решил, что больше не требуется Решение — пользовательская сущность, попытался удалить его и получил следующую страницу:

Сведения о зависимостях после попытки удаления решения.

Не вдаваясь в подробности, можно сделать вывод, что при удалении решения предпринимается попытка удалить сущность с именем Пользовательская сущность и три поля — Пользовательская сущность, Имя и Числовое поле — и все четыре компонента имеют зависимости.

Примечание

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

Следующим шагом является проверка ссылки Слои решения (крайний правый столбец) для каждой зависимости. Это поможет принять решение о требуемых действиях для удаления решения.

На следующем рисунке показаны сведения о зависимостях между сущностью (настраиваемая сущность) и процессом (тестовый рабочий процесс).

Детали зависимостей пользовательский сущности.

Основываясь на отображаемых данных, вы можете видеть, что зависимый компонент принадлежит решению с именем SolutionWorkflow. Чтобы удалить эту зависимость, мы можем:

  • Обновить определение рабочего процесса в SolutionWorkflow, удалив все ссылки на сущность или его подкомпоненты. Затем Обновить или Обновить решение.
  • Удалить решение SolutionWorkflow.
  • Удалите рабочий процесс из новой версии решения SolutionWorkflow, затем выполните Обновить.

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

На следующем рисунке показаны сведения о зависимостях между сущностью (настраиваемая сущность) и приложением на основе модели (мое приложение).

Зависимость между сущностью (настраиваемая сущность) и приложением (мое приложение).

Основываясь на отображаемых данных, вы можете видеть, что зависимый компонент принадлежит решению с именем Active. Это указывает на то, что зависимость была создана путем импорта неуправляемого решения или через неуправляемую настройку, выполненной с помощью современного пользовательского интерфейса или API.

Чтобы удалить эту зависимость, вы можете:

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

Примечание

Удаление неуправляемого решения не является вариантом удаления этой зависимости, поскольку неуправляемые решения — это просто средство для группировки компонентов.

Действия по удалению управляемой зависимости

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

Если вы пытаетесь удалить решение

Выполните следующие действия:

  1. В целевой организации проверьте ссылку Слои решения, чтобы найти, что является самым верхним решением в списке зависимых компонентов.
  2. В исходной организации подготовьте новую версию этого решения, в которой решение либо не содержит зависимого компонента, либо имеет обновленную версию зависимого компонента, которая не содержит ссылок на требуемый компонент. Ваша цель — удалить все ссылки на необходимые компоненты в новой версии решения.
  3. Экспортируйте новую версию решения.
  4. В целевой организации Обновите это решение.
  5. Повторите попытку удаления.

Если вы пытаетесь обновить решение

В этом случае вы должны подтвердить, что хотите удалить требуемый компонент (помните, что зависимости применяются только к компонентам, которые удаляются).

Если вы не хотите удалять компонент, вы можете исправить новую версию решения, добавив компонент обратно, выполнив следующие действия:

  1. В целевой организации удалите промежуточно сохраненное решение (решение, заканчивающееся на _Upgrade).
  2. В исходной организации снова добавьте необходимые компоненты в решение.
  3. Экспортируйте новую версию.
  4. Повторите попытку обновления.

Если удаление является преднамеренным, вы должны удалить зависимость. Попробуйте выполнить действия, описанные в предыдущем разделе "Если вы пытаетесь удалить решение".

Слои и зависимости

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

Рассмотрим следующий сценарий:

Выбор решения для удаления.

Вы пытаетесь удалить Решение — пользовательская сущность, и операция заблокирована зависимостями.

Зависимости, блокирующие удаление решения.

Вы начинаете диагностику зависимости, выбирая Слои решения в атрибуте new_numberfield. Вы видите следующий экран:

Зависимость между атрибутом new_numberfield и рабочим процессом "Тестовый рабочий процесс".

Поскольку зависимости создаются только между самыми верхними слоями каждого компонента, первым шагом является устранение зависимости между атрибутом new_numberfield в SolutionCustomEntity и рабочим процессом Тестовый рабочий процесс в SolutionWorkflow3.

Чтобы удалить зависимость, вы решили удалить SolutionWorkflow3. Вы делаете это, но когда вы пытаетесь удалить решение еще раз, вы видите ту же страницу зависимостей:

Зависимости, блокирующие удаление решения "Решение — пользовательская сущность".

Однако атрибут new_numberfield больше не отображается, даже если он существовал в нескольких слоях.

Действия по удалению неуправляемой зависимости

Чтобы удалить неуправляемые зависимости, необходимо действовать непосредственно на компоненты, а не на решения, к которым они относятся. Например, если вы хотите удалить зависимости между атрибутом и формой, вы должны отредактировать ее в редакторе форм и удалить атрибут из формы. Зависимость будет удалена после выбора Сохранить и Опубликовать.

Примечание

Также можно удалить зависимый компонент. Это действие удаляет все зависимости вместе с компонентом.

Чтобы увидеть зависимости компонента, найдите его на странице настроек и выберите Показать зависимости.

Страница настроек.

Страница зависимостей состоит из двух отдельных частей:

  • Зависимые компоненты: список компонентов, которые зависят от выбранного поля. Другими словами, эти компоненты будут иметь это поле в качестве обязательного компонента.
  • Обязательные компоненты: список компонентов, которые необходимы этому полю для работы. Другими словами, эти компоненты будут иметь это поле в качестве зависимого компонента.

Зависимости компонента.

Поле и рабочий процесс

Чтобы удалить зависимости между полями (атрибутами) и рабочими процессами (процессами), найдите рабочий процесс на странице настроек.

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

Поиск зависимости рабочего процесса.

Удалите (или измените) этот шаг, затем сохраните рабочий процесс.

Поле и представление

Чтобы удалить зависимости между полями (атрибутами) и представлениями (сохраненными запросами), найдите представление на странице настроек.

В редакторе полей найдите ссылку на компонент, от которого больше не должно зависеть представление. В этом примере вы видите поле Числовое поле, которое используется как столбец выбора и фильтр.

Изменение представления.

Удалите оба, сохраните, а затем опубликуйте представление.

Сущность и приложения на основе модели

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

Список приложений.

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

Конструктор приложений.

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

Конструктор карты сайта.

Удалите все ссылки, затем сохраните и опубликуйте приложение и карту сайта.

Примечание

После редактирования компоненты можно добавлять в управляемые решения и переносить в другие организации для удаления управляемых зависимостей.

См. также

Основные понятия решения
Слои решений
Отслеживание зависимостей для компонентов решения

Примечание

Каковы ваши предпочтения в отношении языка документации? Пройдите краткий опрос (обратите внимание, что этот опрос представлен на английском языке).

Опрос займет около семи минут. Личные данные не собираются (заявление о конфиденциальности).