Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
nawakster
Зарегистрирован: 17.06.2008 Сообщения: 59
|
Добавлено: Пт 08 Авг 2014 15:22 Заголовок сообщения: Заблокировать всем слой для изменения |
|
|
Добрый день.
Не могу догнать, как заблокировать слой администратору от случайного изменения пространственных объектов.
Пробовал выставить права доступа, но на админа это не действует, почему-то.
Может как-то программно можно заблокировать? |
|
Вернуться к началу |
|
 |
Азаматов Азамат Хадисович
Зарегистрирован: 17.02.2005 Сообщения: 100 Откуда: г. Учалы, Респ. Башкортостан
|
Добавлено: Сб 09 Авг 2014 10:55 Заголовок сообщения: |
|
|
даже если программно это сделать, ничто не помешает администратору эту программу выключить |
|
Вернуться к началу |
|
 |
nawakster
Зарегистрирован: 17.06.2008 Сообщения: 59
|
Добавлено: Вс 10 Авг 2014 23:08 Заголовок сообщения: |
|
|
Азаматов Азамат Хадисович писал(а): | даже если программно это сделать, ничто не помешает администратору эту программу выключить |
Мне нужна блокировка от СЛУЧАЙНОГО изменения слоя. Отключать не будут |
|
Вернуться к началу |
|
 |
APopov
Зарегистрирован: 19.06.2006 Сообщения: 347 Откуда: Самара
|
Добавлено: Вт 12 Авг 2014 19:31 Заголовок сообщения: |
|
|
Да, на админа не действуют ограничения.
Варианта 3:
* не заходить под админом
* выкинуть всех из группы админов, удалить корневого админа, создать новую админскую группу с нужными правами (похож на вариант выше, но этот жёстче)
* написать модулёк (inm) слушающий события изменения и, для юзера-админа, поднимающий исключения в этих событиях. _________________ ОАО "Самара-Информспутник",
инженер-программист Попов Артем |
|
Вернуться к началу |
|
 |
nawakster
Зарегистрирован: 17.06.2008 Сообщения: 59
|
Добавлено: Ср 13 Авг 2014 00:13 Заголовок сообщения: |
|
|
Ну это понятно.
Вопрос в конкретной реализации:
Вопросы:
На какой обработчик лучше повесить - перед обновлением или после?
И как отменить последнее действие, например, перенос вершины? |
|
Вернуться к началу |
|
 |
Сергей Попов
Зарегистрирован: 05.03.2005 Сообщения: 299 Откуда: г. Тольятти - Самара - Копейск
|
Добавлено: Ср 13 Авг 2014 10:59 Заголовок сообщения: |
|
|
nawakster писал(а): | Мне нужна блокировка от СЛУЧАЙНОГО изменения слоя. Отключать не будут | Предлагаю вариант без программирования.
1. Продублировать слой, который требуется защитить. Таблицы дублировать не требуется, да и оформление (методы), тоже можно по минимуму. Скопировать в созданный слой объекты, которые будем защищать.
2. В проводнике базы данных настроить между слоями топологическое отношение с реакциями: ЗАПРЕТИТЬ ПЕРЕМЕЩЕНИЕ.
3. Выбрать защищаемые объекты и установить для них топологические связи с их дублёрами (клавиша F8).
4. Всё. теперь при попытке изменить положение вершины, будет появляться сообщение "Топологический конфликт". Изменение не произойдёт.
Таким образом можно защищать выборочное количество объектов или даже определённые вершины.
Понятное дело что можно обойти это ограничение, нажав клавишу S, отключив временно топологические связи.
Слой дублёров можно использовать один для защиты любых объектов из любых карт и слоёв. Главное его понятным образом обозвать и понимать что он несёт вспомогательную функцию, может не включаться в рабочие проекты и быть невидимым бойцом.
Действует на всех, в т.ч. на Администраторов. |
|
Вернуться к началу |
|
 |
APopov
Зарегистрирован: 19.06.2006 Сообщения: 347 Откуда: Самара
|
Добавлено: Ср 13 Авг 2014 18:24 Заголовок сообщения: |
|
|
nawakster писал(а): | Ну это понятно.
Вопрос в конкретной реализации:
Вопросы:
На какой обработчик лучше повесить - перед обновлением или после?
И как отменить последнее действие, например, перенос вершины? |
лучше "перед":
Код: | sub xx_WillUpdate
if IsCurrenUserIsAdmin then
err.raise 10, "","" 'не помню щас порядок параметров
end sub |
как отменить последнее действие:
Код: | sub IngeoUndo
Application.MainWindow.Actions.Item("ActionsEditUndo").Execute
end sub |
_________________ ОАО "Самара-Информспутник",
инженер-программист Попов Артем |
|
Вернуться к началу |
|
 |
|