Правило удаления — это то как программа будет действовать при попытке удалить запись в родительском объекте, если есть связанные записи в дочернем объекте.
Правило удаления | Описание |
---|---|
Удалять | Запись в родительском объекте удаляется. Если в дочернем объекте есть связанные записи, то они тоже удаляются. |
Запрещать | Если в дочернем объекте есть записи, то удаление записи в родительском объекте отменяется. Удаление связанных записей в дочернем объекте не производится. |
Оставлять | Запись в родительском объекте удаляется. Если в дочернем объекте есть связанные записи, то значение поля-ссылки для этих записей устанавливаются в пустое значение. |
Большинство конфигураций будут иметь разные правила удаления для разных связей. Рассмотрим как поведет себя программа, когда удаление одной записи требует обработки разных правил удаления вниз по иерархии объектов.
![](https://supasoft.ru/wp-content/uploads/2022/02/62932860.png)
Допустим есть следующие данные (согласно схеме на рисунке):
- Одна компания.
- Несколько заметок.
- Несколько контактных лиц.
- Две сделки:
- В одной сделке две продажи и нет платежей.
- В другой сделке две продажи и один платеж.
При удалении компании будет происходить следующее:
- Удаление всех заметок компании.
- Оставление всех контактных лиц компании. Поля-ссылки на компанию этих контактных лиц будут очищены.
- Удаление первой сделки, вместе с ее продажами. Платежей у этой сделки нет.
- А вот на удалении второй сделки программа «споткнется», т.к. согласно правилу удаления нельзя удалять сделку, в которой есть платежи.
- Произойдет полная отмена всех предыдущих действий: Заметки будут восстановлены, контактные лица снова будут привязаны к компании, первая сделка будет восстановлена и т.п.
Если удалить не компанию, а первую сделку, то она спокойно удалиться вместе с ее продажами, т.к. у нее нет платежей.
Чтобы удалить вторую сделку, требуется сначала удалить ее платеж.