Список форумов www.integro.ru www.integro.ru
ЦСИ ИНТЕГРО
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Заблокировать всем слой для изменения

 
Начать новую тему   Ответить на тему    Список форумов www.integro.ru -> Вопросы разработчиков
Предыдущая тема :: Следующая тема  
Автор Сообщение
nawakster



Зарегистрирован: 17.06.2008
Сообщения: 59

СообщениеДобавлено: Пт 08 Авг 2014 15:22    Заголовок сообщения: Заблокировать всем слой для изменения Ответить с цитатой

Добрый день.
Не могу догнать, как заблокировать слой администратору от случайного изменения пространственных объектов.

Пробовал выставить права доступа, но на админа это не действует, почему-то.

Может как-то программно можно заблокировать?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Азаматов Азамат Хадисович



Зарегистрирован: 17.02.2005
Сообщения: 100
Откуда: г. Учалы, Респ. Башкортостан

СообщениеДобавлено: Сб 09 Авг 2014 10:55    Заголовок сообщения: Ответить с цитатой

даже если программно это сделать, ничто не помешает администратору эту программу выключить
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
nawakster



Зарегистрирован: 17.06.2008
Сообщения: 59

СообщениеДобавлено: Вс 10 Авг 2014 23:08    Заголовок сообщения: Ответить с цитатой

Азаматов Азамат Хадисович писал(а):
даже если программно это сделать, ничто не помешает администратору эту программу выключить

Мне нужна блокировка от СЛУЧАЙНОГО изменения слоя. Отключать не будут
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
APopov



Зарегистрирован: 19.06.2006
Сообщения: 347
Откуда: Самара

СообщениеДобавлено: Вт 12 Авг 2014 19:31    Заголовок сообщения: Ответить с цитатой

Да, на админа не действуют ограничения.
Варианта 3:
* не заходить под админом Smile
* выкинуть всех из группы админов, удалить корневого админа, создать новую админскую группу с нужными правами (похож на вариант выше, но этот жёстче)
* написать модулёк (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, отключив временно топологические связи.
Слой дублёров можно использовать один для защиты любых объектов из любых карт и слоёв. Главное его понятным образом обозвать и понимать что он несёт вспомогательную функцию, может не включаться в рабочие проекты и быть невидимым бойцом.
Действует на всех, в т.ч. на Администраторов.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
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

_________________
ОАО "Самара-Информспутник",
инженер-программист Попов Артем
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов www.integro.ru -> Вопросы разработчиков Часовой пояс: GMT + 5
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете добавлять приложения в этом форуме
Вы можете скачивать файлы в этом форуме


© phpBB Group
Русская поддержка phpBB