Часто пользователи удаляют записи по ошибке, а за ошибочно удаленной записью каскадом отправляются и другие связанные.... Это создает известные проблемы для разработчика. Каков выход?
1) обычное удаление. ошибки - неизбежное зло. Пусть записи удаляют те, кто имеют права. Все остальное - от лукавого.
2) виртуальное удаление: запись помечается на удаление, после чего она становится скрытой для пользователей, кроме админов.
3) промежуточный вариант: запись помечается на удаление, но не удаляется немедленно. Она остается скрытой или даже видимой, но с особой пометкой, в течение некоторого времени, после чего окончательно удаляется администратором (шедулой)
4) запись помечается на удаление, но не удаляется немедленно. Ответственный работник с определенными правами через специальный интерфейс проверяет и подтверждает процедуру удаления (дополнительный Aprove)
Следует сказать, что 2 и 3 вариант соответствуют стандартам ISO 20000 в части разработки пользовательского интерфейса (любое действие пользователя может быть отменено им)
Каким практикам следуете, коллеги, или каким хотели бы следовать в данном случае?
ИЛИ-ИЛИ: удаление записей
-
- Сообщения: 338
- Зарегистрирован: 11 сен 2017, 13:42
- Откуда: Санкт-Петербург
-
- Сообщения: 7
- Зарегистрирован: 11 сен 2017, 12:34
- Откуда: Углич
Re: ИЛИ-ИЛИ: удаление записей
Да согласен, 2 и 3 вариант удобно использовать. А дальше наверно в зависимости от потребностей заказчика. Или можно не делать ее скрытой Сделать её недоступной для изменения обычному пользователю после удаления и только админ мог восстановить запись (пользователь делает запрос на восстановление записи). Спасибо за отличную идею.
Re: ИЛИ-ИЛИ: удаление записей
пункты 2-4 хорошо звучат, но геморроя с ними не оберешься
Представьте себе, что пользователь удалил/востановил запись о закупке товара в некоем количестве, а этот товар уже был ранее отгружен и не один раз в разных заказах (имею в виду поприходный учет).
Да, и вообще, если само наличие записи, на что-то влияет (поля участвуют в расчетах в других таблицах), то подобные способы ("пометка" на удаление ) в разы усложняют разработку.
Любая техника должны применятся там где она необходима, а не потому что "так правильно"
Представьте себе, что пользователь удалил/востановил запись о закупке товара в некоем количестве, а этот товар уже был ранее отгружен и не один раз в разных заказах (имею в виду поприходный учет).
Да, и вообще, если само наличие записи, на что-то влияет (поля участвуют в расчетах в других таблицах), то подобные способы ("пометка" на удаление ) в разы усложняют разработку.
Любая техника должны применятся там где она необходима, а не потому что "так правильно"
-
- Сообщения: 338
- Зарегистрирован: 11 сен 2017, 13:42
- Откуда: Санкт-Петербург
Re: ИЛИ-ИЛИ: удаление записей
то есть если что-то удалили неправильно, то нужно восстанавливать запись из бэкапа?
Re: ИЛИ-ИЛИ: удаление записей
Иногда бывает и так. Но тут важна идеология самой программы. Любое удаление должно сопровождаться различными проверками, если удаление может "потянуть" за собой нарушение логики в данных (например, попытка удаления товара, по которому уже есть отстатки на складе), то удаление блокируется с соответствующим сообщением пользователю.andrey volkov писал(а): ↑24 окт 2017, 19:04то есть если что-то удалили неправильно, то нужно восстанавливать запись из бэкапа?
Когда у нас везде много подобных проверок, и вообщем-то не так много можно чего удалить, то описанный выше функционал "визуального удаления" часто оказывается избыточным, который только перегружает и усложняет логику системы.
-
- Сообщения: 338
- Зарегистрирован: 11 сен 2017, 13:42
- Откуда: Санкт-Петербург
Re: ИЛИ-ИЛИ: удаление записей
конкретный пример. некто удалил важную запись. Поскольку запись физически удалена, узнать, кто это сделал, невозможно
вы как-то логируете операции удаления?
вы как-то логируете операции удаления?
Re: ИЛИ-ИЛИ: удаление записей
Если заказчик поставит такую задачу, то конечно, да. Но обычно (см. выше), то что важно - блокируется от удаления.andrey volkov писал(а): ↑31 окт 2017, 14:47конкретный пример. некто удалил важную запись. Поскольку запись физически удалена, узнать, кто это сделал, невозможно
вы как-то логируете операции удаления?