Удаление данных
Удаление данных — это процесс, связанный с удалением или скрытием объектов приложения. В «1С:Шине» реализовано удаление объектов с возможностью их восстановления.
Режимы удаления
«1С:Шина» поддерживает два режима удаления объекта:
- пометить на удаление — тогда вы сможете восстановить его, если передумаете;
- удалить немедленно — удалить его без возможности восстановления.
Режим удаления объекта выбирается с помощью его св ойства РежимУдаления, которое может принимать значения Немедленно или ПометкаУдаления:
ВидЭлемента: Справочник
Ид: fd0c91fb-5954-4a20-95ad-ab23c4fe210a
Имя: Сотрудники
ОбластьВидимости: ВПодсистеме
РежимУдаления: ПометкаУдаления
Режим «ПометкаУдаления»
Чтобы удалить элемент из списка, выберите его и в открывшейся форме объекта нажмите Удалить.

При удалении объекта в режиме ПометкаУдаления в его свойство ПометкаУдаления типа имя-сущности.Объект записывается значение Истина, а в свойство МоментПометкиУдаления — момент установки пометки удаления. Объекты, для которых свойство ПометкаУдаления имеет значение Истина, в форме списка не отображаются.
Чтобы установить или снять пометку удаления, можно воспользоваться методом УстановитьПометкуУдаления() типа имя-сущности. Если объект является владельцем других объектов (например, справочник, имеющий подчиненные справочники), то пометка удаления устанавливается и на все подчиненные записи.
При загрузке данных из внешних источников может потребоваться создавать объекты уже помеченными на удаление. При этом момент пометки удаления может поступать из внешней системы. Чтобы установить пометку удаления при обмене данными, используйте метод УстановитьПометкуУдаленияПриЗагрузкеДанных() типа имя-сущности.Объект. Он позволяет установить свойства ПометкаУдаления и МоментПометкиУдаления непосредственно при загрузке объекта.
Метод УстановитьПометкуУдаленияПриЗагрузкеДанных() работает только в контексте загрузки данных.
В форме списка объектов, для которых установлен режим ПометкаУдаления, можно включить отображение удаленных объектов в настройках фильтра:

Тогда помеченные на удаление объекты появятся в списке с красной отметкой:

Если вам снова понадобится удаленный объект, включите режим «Показывать удаленные», выберите в списке нужный объект и в открывшейся форме объекта нажмите Восстановить:

Чтобы удалить объект навсегда без возможности восстановления, выберите нужный объект, уже помеченный на удаление, и в форме объекта нажмите Удалить навсегда:

Система проверяет, нет ли ссылок на удаляемый объект в других объектах. Если ссылок нет, он удаляется. Если ссылки найдены, то объект не получится удалить, пока не будут разрешены конфликты, мешающие удалению.
Режим «Немедленно»
Если установлен режим Немедленно, то при удалении элемента из списка вы нажимаете команду Удалить и объект удаляется навсегда без возможности восстановления.
Разрешение конфликтов, связанных со ссылками на удаляемые объекты
В «1С:Шине» реализована поддержка ссылочной целостности.
Если у объекта есть реквизит, измерение или ресурс ссылочного типа, то обработка связей при удалении объекта, указанного в этом поле, определяется его свойством ПриУдаленииОбъектаПоСсылке. В процессе удаления значение свойства анализируется при поиске ссылок, и в зависимости от него принимается решение о поведении при удалении.
Свойство ПриУдаленииОбъектаПоСсылке может принимать следующие значения:
- ЗапрещатьУдаление — запрещает удалять объект без разрешения конфликтов, мешающих удалению. Если реквизит ссылается на элемент, для которого установлен РежимУдаления равный Немедленно, то в свойстве
ПриУдаленииОбъектаПоСсылкеэтого реквизита нельзя использовать значение ЗапрещатьУдаление. - НетДействия — отсутствует контроль за целостностью ссылок; при удалении остается битая ссылка.
- Очищать — при удалении ссылающегося объекта устанавливает значение поля элемента проекта по умолчанию.
- УдалятьТекущий — позволяет удалять и зависимый, и ссылающийся объект (например, удаляет вложенный файл при удалении письма). Если в элементе проекта включен режим удаления ПометкаУдаления, то в его реквизитах нельзя устанавливать свойство
ПриУдаленииОбъектаПоСсылкеравным УдалятьТекущий.
Типы встроенного языка для реализации удаления
Тип «УдалениеОбъектов»
Для управления процессом удаления записей используется тип УдалениеОбъектов пространства имен Стд::Сущности. Он также управляет системным фоновым заданием удаления данных. С помощью его свойств можно задать объекты, подлежащие удалению и исключаемые из удаления, а также срок давности удаления.
знч ПараметрыУдаления = новый УдалениеОбъектов()
ПараметрыУдаления.Включаемые = [Тип<ВходящееПисьмо.Ссылка>]
ПараметрыУдаления.Исключаемые = ПолучитьПисьмаВКорзинеДиректора()
ПараметрыУдаления.ТаймаутУстаревания = 10д
ПараметрыУдаления.Выполнить()
Тип «НеудаленныеОбъекты»
При запуске процесса удаления выбранный объект блокируется и помещается в таблицу УдаляемыеОбъекты. Таблица хранит состояния удаления объектов и нужна для того, чтобы сократить время накладываемой исключительной блокировки ссылок и не препятствовать работе остальной системы. Если объект невозможно удалить, он помещается в таблицу НеудаленныеОбъекты. Для описания таких объектов используется тип НеудаленныеОбъекты. С его помощью можно заменить удаляемый объект на новый или удалить ссылающийся объект.
метод КонтрольСсылок(ТаблицаЗамен: Соответствие<Сотрудники.Ссылка, Сотрудники.Ссылка|Неопределено>)
для Замена из ТаблицаЗамен
НеудаленныеОбъекты.Заменить(Замена.Ключ, Замена.Значение)
;
;