24.01.2011, 15:09 | #1 |
Участник
|
Запрет копирования данных из AX
Возникло желание ограничить копирование данных с форм посредством CTRL+C / CTRL+V - в первую очередь хочется заблокировать копирование данных "ценных" справочников типа "Клиенты". Быстрый поиск по форуму ответа не дал. Кто-нибудь решал такую задачу?
__________________
Ivanhoe as is.. |
|
24.01.2011, 15:25 | #2 |
MCTS
|
Копирование по Ctrl+C можно попробовать запретить через метод task() формы.
X++: public int task(int _taskId) { int ret; if (_taskId != 771) ret = super(_taskId); return ret; }
__________________
Dynamics AX Experience |
|
24.01.2011, 15:26 | #3 |
Участник
|
если все контролы сделать enabled(false), то скопировать не получится, или перекрывайте task(). только не забудте ctrl + Ins и копирование мышкой. еще есть кнопка выгрузить в Excel
Последний раз редактировалось ice; 24.01.2011 в 15:31. |
|
24.01.2011, 15:43 | #4 |
Аманд
|
Цитата:
еще есть кнопка выгрузить в Excel
+ Стандартные репорты и их сохранение. + Цифрофотик с экрана |
|
24.01.2011, 15:46 | #5 |
Участник
|
|
|
24.01.2011, 15:51 | #6 |
Участник
|
Закрыть копирование - не достаточно.
Запретить придется не только копирование, но и ряд других возможностей - автоотчет - предварительный просмотр - экспорт в ексель Кроме того если вы закроете копирование совсем - пользователи будут серьезно возмущаться, так как часто копируют не весь справочник, а отдельные поля справочника клиентов (код клиента или адрес например). Закрыть копирование сразу всего - не гуманно. Лучше проверить сколько записей выделенно в данный момент в гриде - это не сложно, например так X++: client static boolean isSingleRecordSelected(FormDataSource _formDataSource) { common record; ; if (!_formDataSource) return false; record = _formDataSource.getFirst(true); if (!record) return true; return false; } Я написал такой статичный метод X++: static client void checkAccessTaskCopy(int _taskId, FormDataSource _formDataSource, FormName _formName) { #define.taskSend(310) #define.taskPreView(299) #define.taskAutoReport(278) #define.taskCopy(771) #define.taskExport2Excel(4436) #define.taskFilterByField(2843) ; if (_taskId == #taskAutoReport || _taskId == #taskCopy || _taskId == #taskExport2Excel || _taskId == #taskPreView || _taskId == #taskSend) { if (isSingleRecordSelected(_formDataSource) == false || _taskId != #taskCopy) { if ("Дополнительная проверка прав" == false) throw error("Нет прав"); } } } X++: public int task(int _taskId) { int ret; #task ; // --> Global::checkAccessTaskCopy(_taskId, CustTable_ds, element.name()); // <-- // If Control+N and datasource is not CustTable then call create on CustTable if (_taskId == #taskNew && (confind(skipCreateDataSources,this.dataSource().id()) || !custTable)) { custTable_ds.create(); ret = 1; } else { ret = super(_taskId); } return ret; } |
|
|
За это сообщение автора поблагодарили: Ivanhoe (3). |
24.01.2011, 15:55 | #7 |
Участник
|
Коллеги, понятно, что есть обходные пути Спасибо, буду проверять примеры.
__________________
Ivanhoe as is.. |
|
24.01.2011, 18:16 | #8 |
Участник
|
Всегда можно сделать скриншот и засунуть его в FineReader.
|
|
24.01.2011, 20:13 | #9 |
Участник
|
А еще можно учить по 10 клиентов в день и за какой-то период весь справочник вынести в голове. Но конкретный автор "хотелки" предпочитает перекрывать доступ хоть по чуть-чуть. Конечно, это не единственное мероприятие. И понятно, что на промышленных шпионов это не рассчитано =)
__________________
Ivanhoe as is.. |
|
24.01.2011, 21:19 | #10 |
Участник
|
Хотите попробовать сколько у вас уйдет времени чтобы перенести таким образом клиентский справочник из 100 000 тыс записей ?
Учитывая что в самом "гриде" данных не достаточно, придется "пройтись" еще и по закладкам формы. У вас среди пользователей много людей, способных написать для этого необходимый скрипт, или применить какой то сторонний ? Понятно, что это не абсолютная защита. Но можно и через админов доступ получить... И еще 100 способов. Но все это будет гораздо сложнее... Последний раз редактировалось someOne; 24.01.2011 в 21:22. |
|
24.01.2011, 23:26 | #11 |
Участник
|
Цитата:
Не надо ничего совать в FineReader - у такой программы для снятия скриншотов, как HyperSnap, давно есть функция выуживания текста из всех контролов, попавших в скриншот - виндовое сообщение WM_GETTEXT еще никто не отменял. Остальное - дело техники: поставить самый мелкий шрифт, вынести на грид все поля, какие только доступны, как вариант, запустить клиента в терминальной сессии с максимально доступным разрешением (которое может быть больше физического разрешения монитора) - и вперед. В упомянутой программе еще горячие клавиши удобно настраиваются - остается только постранично листать грид... И это лишь один из вариантов, сходу пришедших на ум. PS. "Паранойя - профессиональное заболевание специалистов по безопасности, но любители могут в этой области зайти гораздо дальше". Не надо заниматься безопасностью "по чуть-чуть" и "по наитию" - если хотите себя обезопасить, сперва создайте модели нарушителей - от кого именно вы хотите себя (свою информацию) обезопасить, какими возможностями они могут обладать. Тогда и конкретные меры станут очевиднее. А "наугад" тут закрыть, там запретить - только добропорядочным пользователям жизнь усложните, и спасибо они вам не скажут. Последний раз редактировалось gl00mie; 24.01.2011 в 23:35. Причина: дополнение |
|
|
За это сообщение автора поблагодарили: Damn (2), Кирилл Егоров (1). |
25.01.2011, 00:29 | #12 |
Administrator
|
С другими целями, но стояла та же задача. Выяснилось - что пользователи, которые заходят в АХ по терминалке через интернет - весьма регулярно пользуются буфером обмена чтобы скачать "себе на локал" данные, сделать поиск по ним в Excel, после чего - уже найти нужные записи в АХ.
Собственно, изначально стояла задача типа "Откуда трафик?". Путем всяческих анализов и опросов подозреваемых нарисовалась картина. В силу того, что пользователи работали через терминалку - решили проблему на уровне запрета буфера обмена в терминалке, чем несказанно "обрадовали" суппортящих сотрудников. Постепенно все привыкли. Так что если пользователи работают через терминалку - то можно легким движением мышки решить эту проблему.
__________________
Возможно сделать все. Вопрос времени |
|
Теги |
законченный пример, защита информации, копирование |
|
|