Правила удаления

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

Правило удаленияОписание
УдалятьЗапись в родительском объекте удаляется. Если в дочернем объекте есть связанные записи, то они тоже удаляются.
ЗапрещатьЕсли в дочернем объекте есть записи, то удаление записи в родительском объекте отменяется. Удаление связанных записей в дочернем объекте не производится.
ОставлятьЗапись в родительском объекте удаляется. Если в дочернем объекте есть связанные записи, то значение поля-ссылки для этих записей устанавливаются в пустое значение.

Большинство конфигураций будут иметь разные правила удаления для разных связей. Рассмотрим как поведет себя программа, когда удаление одной записи требует обработки разных правил удаления вниз по иерархии объектов.

Допустим есть следующие данные (согласно схеме на рисунке):

  • Одна компания.
  • Несколько заметок.
  • Несколько контактных лиц.
  • Две сделки:
    • В одной сделке две продажи и нет платежей.
    • В другой сделке две продажи и один платеж.

При удалении компании будет происходить следующее:

  1. Удаление всех заметок компании.
  2. Оставление всех контактных лиц компании. Поля-ссылки на компанию этих контактных лиц будут очищены.
  3. Удаление первой сделки, вместе с ее продажами. Платежей у этой сделки нет.
  4. А вот на удалении второй сделки программа «споткнется», т.к. согласно правилу удаления нельзя удалять сделку, в которой есть платежи.
  5. Произойдет полная отмена всех предыдущих действий: Заметки  будут восстановлены, контактные лица снова будут привязаны к компании, первая сделка будет восстановлена и т.п.

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

Чтобы удалить вторую сделку, требуется сначала удалить ее платеж.