вторник, 6 января 2015 г.

Шаблон учетной системы: Удаление документов

(ВНИМАНИЕ! статья в работе! Обратная связь принимается)

Как удалять документы в учетной системе?
Или вопрос в общем виде: как удалять ОБЪЕКТЫ в учетной системе?

Обычный ответ: SQL-команда delete.

Но если вы делаете долгоживущую учетную систему, рекомендую задуматься о мягком удалении документов.

Суть: не давать обычному пользователю жестко удалить объект из системы.
Вместо удаления объект помечается удаленным.

Техническим языком можно описать так: у объекта добавляется реквизит: "удален".
Удаление документ интерпретируется как изменение объекта, а именно установка реквизита "удален"

Этот принцип реализован в 1С.

Какие объекты удалять мягко

Я бы рекомендовал мягко удалять все справочники и все документы.

О справочниках и документах см. в статье Шаблон учетной системы: основные виды объектов

Преимущества

В системе хранятся все объекты. Т.е. вы всегда сможете восстановить историю: кто удалял документ. Это основное преимущество больше относится к потребностям клиента/бизнеса, а не разработки, но бизнесу оно бывает очень важно и, если заложить мягкое удаление в архитектуру системы, вы сэкономите много времени в будущем.

Накладные расходы


Дополнительное поле
Во всех объектах системы, которые вы захотите мягко удалять, нужно будет внедрять признак удаления. Облегчить эту задачу можно с использованием базового объекта.
Эта методика описана в статье
Шаблон Учетной системы в БД: Наследование в базе

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

Ориентировочный вид команды:

update (имя_объекта) set IsDeleted = 1

Скрытие удаленных объектов в выборках
Вам нужно отслеживать, чтобы в выборках по умолчанию не было удаленных объектов.



Комментариев нет:

Отправить комментарий