Удаление данных
Удаление данных — это процесс, связанный с удалением или скрытием объектов приложения. В «1С:Исполнителе» реализовано удаление объектов с возможностью их восстановления.
Режимы удаления
«1С:Исполнитель» поддерживает два режима удаления объекта:
- пометить на удаление — тогда вы сможете восстановить его, если передумаете;
- удалить навсегда — удалить его без возможности восстановления.
Режим удаления объекта выбирается с помощью его свойства РежимУдаления, которое может принимать значения Немедленно или ПометкаУдаления:
ВидЭлемента: Документ
Ид: c1c67dc6-4fe3-44ef-98d5-ec8929cdabe5
Имя: Сделки
ОбластьВидимости: ВПроекте
Импорт:
- Основное
- Общие
- Общие::КурсыВалют
Представление: Наименование
РежимУдаления: ПометкаУдаления
Режим ПометкаУдаления
Чтобы удалить элемент из списка, выберите его и в открывшейся форме объекта нажмите Удалить.
При удалении объекта в режиме ПометкаУдаления в его свойство ПометкаУдаления типа имя-сущности.Объект
записывается значение Истина
, а в свойство МоментПометкиУдаления — момент установки пометки удаления. Объекты, для которых свойство ПометкаУдаления имеет значение Истина
, в форме списка не отображаются.
Чтобы установить или снять пометку удаления, можно воспользоваться методом УстановитьПометкуУдаления()
типа имя-сущности
. Если объект является владельцем других объектов (например, справочник, имеющий подчиненные справочники), то пометка удаления устанавливается и на все подчиненные записи.
При загрузке данных из внешних источников может потребоваться создавать объекты уже помеченными на удаление. При этом момент пометки удаления может поступать из внешней системы. Чтобы установить пометку удаления при обмене данными, используйте метод УстановитьПометкуУдаленияПриЗагрузкеДанных()
типа имя-сущности.Объект
. Он позволяет установить свойства ПометкаУдаления и МоментПометкиУдаления непосредственно при загрузке объекта.
Метод УстановитьПометкуУдаленияПриЗагрузкеДанных()
работает только в контексте загрузки данных.
В форме списка объектов, для которых установлен режим ПометкаУдаления, можно включить отображение удаленных объектов в настройках фильтра:
Тогда помеченные на удаление объекты появятся в списке с красной отметкой:
Если вам снова понадобится удаленный объект, включите режим «Показывать удаленные», выберите в списке нужный объект и в открывшейся форме объекта нажмите Восстановить:
Чтобы удалить объект навсегда без возможности восстановления, выберите нужный объект, уже помеченный на удаление, и в форме объекта нажмите Удалить навсегда:
Система проверяет, нет ли ссылок на удаляемый объект в других объектах. Если ссылок нет, он удаляется. Если ссылки найдены, то объект не получится удалить, пока не будут разрешены конфликты, мешающие удалению.
Режим Немедленно
Если установлен режим Немедленно, то при удалении элемента из списка вы нажимаете команду Удалить и объект удаляется навсегда без возможности восстановления.
Разрешение конфликтов, связанных со ссылками на удаляемые объекты
В «1С:Исполнителе» реализована поддержка ссылочной целостности.
Если у объекта есть реквизит, измерение или ресурс ссылочного типа, то обработка связей при удалении объекта, указанного в этом поле, определяется его свойством ПриУдаленииОбъектаПоСсылке
. В процессе удаления значение свойства анализи руется при поиске ссылок, и в зависимости от него принимается решение о поведении при удалении.
Свойство ПриУдаленииОбъектаПоСсылке
может принимать следующие значения:
- ЗапрещатьУдаление — запрещает удалять объект без разрешения конфликтов, мешающих удалению. Если реквизит ссылается на элемент, для которого установлен РежимУдаления равный Немедленно, то в свойстве
ПриУдаленииОбъектаПоСсылке
этого реквизита нельзя использовать значение ЗапрещатьУдаление. - НетДействия — отсутствует контроль за целостностью ссылок; при удалении остается битая ссылка.
- Очищать — при удалении ссылающегося объекта устанавливает значение поля элемента проекта по умолчанию.
- УдалятьТекущий — позволяет удалять и зависимый, и ссылающийся объект (например, удаляет вложенный файл при удалении письма). Если в элементе проекта включен режим удаления ПометкаУдаления, то в его реквизитах нельзя устанавливать свойство
ПриУдаленииОбъектаПоСсылке
равным УдалятьТекущий.
Удаление помеченных объектов
Чтобы удалить помеченные объекты, используйте встроенную форму удаления DataDeletionManagementForm
. В ней вы можете выполнить следующие действия:
- запустить удаление всех помеченных объектов;
- настроить параметры удаления (области, сроки давности удаления) и запустить удаление с этими параметрами;
- просмотреть объекты, которые не получилось удалить, и перейти к форме управления связями, препятствующими их удалению.
Как запустить удаление всех помеченных объектов
Чтобы вручную удалить все помеченные объекты, добавьте в интерфейс встроенную форму DataDeletionManagementForm
и откройте ее:
Подробнее о том, как добавить форму в интерфейс
Чтобы удалить все отмеченные объекты, перейдите в раздел «Очистить удаленные объекты» и в открывшейся форме нажмите Начать удаление:
Как настроить параметры удаления
Вы можете задать такие параметры удаления, как:
- срок давности удаления (например, старше 30 дней);
- типы удаляемых объектов (например, Сделки).
Для этого откройте форму DataDeletionManagementForm
и перейдите в раздел «Очистить удаленные объекты». Чтобы указать параметры удаления, включите соответствующий режим:
Укажите требуемые параметры и нажмите кнопку Начать удаление.
Как разрешить конфликты, мешающие удалению
Если на объект есть ссылки в других объектах системы, удалить его не получится. В этом случае в форме DataDeletionManagementForm
перейдите в раздел Управлять связями, препятствующими очистке. В открывшейся форме отображаются таблицы, содержащие удаленные объекты:
Выберите объект. Откроется форма управления ссылками. Здесь вы можете выполнить следующие действия:
- удалить ссылку на удаляемый объект;
- выбрать новый объект, который заменит удаляемый;
- пометить на удаление объект, ссылающийся на удаляемый объект.
Типы встроенного языка для реализации удаления
Тип УдалениеОбъектов
Для управления процессом удаления записей используется тип УдалениеОбъектов
пространства имен Стд::Сущности
. Он также управляет системным фоновым заданием удаления данных. С помощью его свойств можно задать объекты, подлежащие удалению и исключаемые из удаления, а также срок давности удаления.
знч ПараметрыУдаления = новый УдалениеОбъектов()
ПараметрыУдаления.Включаемые = [Тип<ВходящееПисьмо.Ссылка>]
ПараметрыУдаления.Исключаемые = ПолучитьПисьмаВКорзинеДиректора()
ПараметрыУдаления.ТаймаутУстаревания = 10д
ПараметрыУдаления.Выполнить()
Тип НеудаленныеОбъекты
При запуске процесса удаления выбранный объект блокируется и помещается в таблицу УдаляемыеОбъекты. Таблица хранит состояния удаления объектов и нужна для того, чтобы сократить время накладываемой исключительной блокировки ссылок и не препятствовать работе остальной системы. Если объект невозможно удалить, он помещается в таблицу НеудаленныеОбъекты. Для описания таких объектов используетс я тип НеудаленныеОбъекты
. С его помощью можно заменить удаляемый объект на новый или удалить ссылающийся объект.
метод КонтрольСсылок(ТаблицаЗамен: Соответствие<Сотрудники.Ссылка, Сотрудники.Ссылка|Неопределено>)
для Замена из ТаблицаЗамен
НеудаленныеОбъекты.Заменить(Замена.Ключ, Замена.Значение)
;
;
Планирование удаления объектов
За удаление объектов отвечает системное задание удаления помеченных объектов DataDeletionMainJob. Оно запускает удаление объектов всех типов сроком давности 30 дней. Вы можете управлять заданием с помощью стандартного пользовательского интерфейса управления заданиями:
Чтобы изменить настройки запуска этого задания, использ уйте метод УдалениеДанных.НастроитьСистемноеЗаданиеУдаленияОбъектов()
:
УдалениеОбъектов.НастроитьСистемноеЗаданиеУдаленияОбъектов(
ТаймаутУстаревания = 10д,
Включено = Истина,
Расписание = Расписание.Ежедневно(ЗапуститьВ = Время{23:30:00})
)
Если процесс удаления завершился аварийно, то для защиты от зависания удаляемого объекта в таблице УдаляемыеОбъекты
используется фоновое задание контроля удаления объектов HangingDeletedObjectsCleanup. Оно удаляет из таблицы УдаляемыеОбъекты
записи старше 3 часов, а также записи, заблокированные заданиями, которые имеют статус завершения с ошибками.