Управление правами в 7.7 - "на лету" до каждой кнопочки!

0. 38 22.11.12 10:36 Сейчас в теме
Система управления правами доступа "на лету" для конфигураций на платформе 1С:Предприятие 7.7.
- Онлайн :: Не требует выхода пользователей.
- Умная :: Позволяет управлять доступом хоть к каждой кнопке на форме.
- Универсальная :: Встраивается в любую конфигурацию за 1 минуту!
- Преемственная :: Сохраняет настройки существующих наборов прав.

Перейти к публикации

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Il 24 22.11.12 10:36 Сейчас в теме
действительно гигантская работа была проведена. пораньше бы такой механизм... но + однозначно!
2. gavlexx 38 22.11.12 15:25 Сейчас в теме
Еще один момент добавлю.
Для общих прав на конфигурацию (удаление помеченных объектов и т.п.) все же требуется выйти и заново зайти в базу. При отсутствии прав соответствующие пункты меню делаются недоступными, а работает это только при запуске программы.
3. Ёпрст 1050 23.11.12 09:36 Сейчас в теме
1cpp должен быть всегда загружен первым.
7. gavlexx 38 24.11.12 13:37 Сейчас в теме
(3) Ёпрст,
Принято, будет исправлено. Честно говоря, почему должен быть первым - не встречал.
4. Ёпрст 1050 23.11.12 09:37 Сейчас в теме
На скриншотах не видно, где управление доступом к реквизитам формы.
5. Ёпрст 1050 23.11.12 10:09 Сейчас в теме
+ в поделке используется допотопный формекс и 1cpp
+ свой класс лучше подключить и создать в самой обработке, раз уж её в ПриНачалеРаботы запускаешь (у многих уже давно есть свои классы, в том числе, основанные на перехватчике)
И твоя работа.. не взлетит.
8. gavlexx 38 24.11.12 13:41 Сейчас в теме
(5) Ёпрст,
Да, выложил тот формекс и 1С++, которые использовал во время своей разработки. Не было времени проверять, как работает с текущими. Если не работает - дайте знать, буду исправлять.
9. gavlexx 38 24.11.12 15:45 Сейчас в теме
(5) Ёпрст,
> И твоя работа.. не взлетит.
Не понял связи между "не взлетит" и предыдущими утверждениями
6. Ёпрст 1050 23.11.12 10:26 Сейчас в теме
Ну и.. не работает на типовой тис - всё время

rs=db.OpenRecordset(query);
{Глобальный модуль(244)}: DAO.Database: Указан недопустимый объект, или объект более не задан.
rs=db.OpenRecordset(query);
{Глобальный модуль(244)}: DAO.Database: Указан недопустимый объект, или объект более не задан.
rs=db.OpenRecordset(query);
{Глобальный модуль(244)}: DAO.Database: Указан недопустимый объект, или объект более не задан.
10. gavlexx 38 24.11.12 16:05 Сейчас в теме
(6) Ёпрст,
Очень странно. Объект доступа к базе был создан успешно, а вот запрос не выполняется... Вручную ничего в созданной базе прав (файл mdsec.mdb) не делали? Дадите на него взглянуть?

Еще попробуйте совсем удалить файл базы прав и запустить конфигурацию.

Можно получить файл лога, который при этом получается? Из-за исключительной ситуации, правда, туда может ничего не записаться, но все же.
11. Ёпрст 1050 26.11.12 09:56 Сейчас в теме
Права никакие не назначаются, файл лога ниже:
Прикрепленные файлы:
Security.rar
12. Ёпрст 1050 26.11.12 09:58 Сейчас в теме
>>>Не понял связи между "не взлетит" и предыдущими утверждениями

Несколько перехватчиков и их взаимодействие придётся реализовывать в еще одном обзем классе , который будет посылать события в остальные классы-перехватчики.
13. Ёпрст 1050 26.11.12 10:02 Сейчас в теме
+ Не нашел в классе, где перехват обработкиПроведения.
16. gavlexx 38 26.11.12 12:16 Сейчас в теме
(13) Ёпрст,
В функции "ПриЗаписи()" для документа проверяется право ввода нового, перепроведения старого и т.п.
Само проведение не перехватывается, перехватывается запись и при записи происходит проверка прав на проведение, если нужно.
18. Ёпрст 1050 27.11.12 10:35 Сейчас в теме
(16) дык какое отношение проведение и перепроведение имеет к записи ?
И к ПриЗаписи() ??????

Т.е все документы, в которых есть Провести()/#Провести запросто проводятся у вас ?
20. gavlexx 38 27.11.12 15:52 Сейчас в теме
(18) Ёпрст,
Похоже, действительно "косяк", исправлю. Спасибо за обратную связь.

(17) Ёпрст,
Буду разбираться с этой штукой. У меня на 2-х разных компьютерах дома работает, не могу пока понять, в чем может быть проблема.

(19) Ёпрст,
Позвольте полюбопытствовать, что за "готовое решение"? Интересно.
14. Ёпрст 1050 26.11.12 10:04 Сейчас в теме
+ судя по коду, настройка прав на атрибуты не корректна - любая штатная "УправлениеВидимостью()" "забьёт" все потуги в ПриВыбореЗакладки()..
15. gavlexx 38 26.11.12 12:04 Сейчас в теме
(14) Ёпрст,
А вы пробовали? Попробуйте. Даже несмотря на то, что в какой-то момент времени недоступный атрибут формы может оказаться доступным, при нажатии на него все равно произойдет проверка.
17. Ёпрст 1050 27.11.12 10:33 Сейчас в теме
(15) конечно не пробовал - твоя поделка же не работает, причина в (6)
19. Ёпрст 1050 27.11.12 10:38 Сейчас в теме
я к чему это всё - у меня есть свой класс и свое решение для управления правами доступа, только права хранятся в справочнике, а не во внешней базе (ну мну лень было делать, взял готовое решение и переделал под себя + всё переделал на классы).

Вот и хотел посмотреть, что еще есть нового в этом роде.
21. Ёпрст 1050 27.11.12 16:02 Сейчас в теме
на основе вот этого
http://infostart.ru/public/20129/

Только все переделано - настройка прав в штатном справочнике Пользователи, всё переделано на классы +
доп "фенички", типа хранения списка элементов справочника для отборов у определенных пользователей, это чтоб им принудительно фильтр ставился во всех отчетах (сам пользователь этот фильтр нигде не видит, но он есть :) )..
и еще чего, не помню.
На хранение настроек прав во внешней базе, например sqllite (или в табличках скуля), мне лениво было.
22. Fenicss 30.11.12 08:06 Сейчас в теме
Удобно. Жалко только то нет возможности менять пароль пользователей. Так бы очень удобно было по РИб вводить новых пользователей и закрывать старые пароли. А то приходится на каждую точку ехать и менять настройки. плюс технику безопасности можно бы сделать при входе смена пароля раз в месяц
23. Ёпрст 1050 30.11.12 10:17 Сейчас в теме
(22) это все легко реализуется.
Есть вк для настройки списка пользователей из предприятия.
24. gavlexx 38 30.11.12 11:29 Сейчас в теме
(22) Fenicss,
> Жалко только то нет возможности менять пароль пользователей.
Где нет? Здесь же прямо в форме вместе со всем параметрами можно поменять пароль. И компонента (файл UsersDef.dll), о которой говорит Ёпрст, с этой разработкой идет "в комплекте".
26. Ёпрст 1050 04.12.12 16:13 Сейчас в теме
(24) не только через UsersDef.dll можно..
Есть и другие, в том числе, эта, к примеру:
http://infostart.ru/public/16930/

есть еще и admin1c.dll
25. apatyukov 906 04.12.12 16:07 Сейчас в теме
При нажатии обновить массово открываются формы и остаются открытыми. Это так и должно быть?
27. gavlexx 38 10.12.12 15:52 Сейчас в теме
(25) apatyukov,
Только что проверил, не открываются. Возможно, Вы не добавили в конфигурацию отчет "ОшибкаДоступа_Тихо", который должен заменять вызовы форм, чтобы те не открывались при инициализации?
28. olo_lo4 23.12.12 03:37 Сейчас в теме
Попробовал вашу обработку , не работает, у меня типовая ТИС
Выставил в файле ГлобМодуль1.тхт свои метки и вот что обнаружил - почему то не срабатывает метод СтатусВозврата(0)
Например при записи константы идет возврат 0 (нет прав на корректировку) но ничего не происходит и значение меняется...непонятно в чем тут подвох.
еще такой вопрос - может вместо компиляции еще одного глоб.модуля имеет смысл все из этого файла засунуть в глобальный конфигурации ?
30. gavlexx 38 23.12.12 04:19 Сейчас в теме
(28) olo_lo4,
> Например при записи константы идет возврат 0 (нет прав на корректировку) но ничего не происходит и значение меняется...непонятно в чем тут подвох.

а Вы использовали ту библиотеку 1cpp.dll, что в комплекте с обработкой шла? У меня работало нормально.

> еще такой вопрос - может вместо компиляции еще одного глоб.модуля имеет смысл все из этого файла засунуть в глобальный конфигурации ?

Не подскажу, это у разработчиков 1cpp.dll лучше спросить, в чем будет разница. Код выносил в отдельный модуль из-за того, чтобы обойтись как можно меньшими изменениями типовой. Вы думаете проблема описанная Вами решится включением кода в основной ГМ?
29. olo_lo4 23.12.12 03:46 Сейчас в теме
судя по ссылке http://www.1cpp.ru/forum/YaBB.pl?num=1172047061
действительно есть такая проблема и ее как-то уже решили. но где почитать не нашел. подскажите пож
31. gavlexx 38 23.12.12 04:24 Сейчас в теме
(29) olo_lo4,

В ближайшее время посмотрю. На первый взгляд, там сообщение еще 2007-го года. И даже в ответе #6 есть решение. Вы это пробовали?

Перехватчик.УстановитьСтатусВозвратаГК(КонтФормы, НовыйСтатус);

Должно работать, судя по сообщению http://www.1cpp.ru/forum/YaBB.pl?num=1173778761/9#9
32. olo_lo4 10.01.13 01:15 Сейчас в теме
Подскажите пож с чем могут быть связаны след ошибки

1 ОбъектПерехватчикГК = СоздатьОбъект("ПерехватСобытий");
{Глобальный модуль(506)}: Неудачная попытка создания объекта (ПерехватСобытий)

2 ИмяНастройкиВыгрузки = СписокПараметров.Получить("ИмяНастройкиВыгрузки");
{Обработка.УниверсальныйОбменВформатеХМЛ.Форма.Модуль(6061)}: Значение не представляет агрегатный объект (Получить)
3 гРежимРедактирования = Форма.Параметр.Получить("РежимРедактирования");
{Обработка.СвойстваОбъектов.Форма.Модуль(607)}: Значение не представляет агрегатный объект (Получить)

4 гИмяОткрывшейФормы = гПараметрыВызова.Получить("ИмяВызвавшейФормы");
{Обработка.ПодборОбъектов.Форма.Модуль(4089)}: Значение не представляет агрегатный объект (Получить)
33. gavlexx 38 10.01.13 17:24 Сейчас в теме
(32) olo_lo4,

1 - Скорее всего система не находит файл класса "Перехват событий".

Нужно, чтобы в папке с базой находился файл "defcls.prm" с таким содержимым:
class ПерехватСобытий = .\Security\ПерехватСобытий.ert
{}

Точка в пути означает текущую папку (по идее, в которой лежит этот файл определения класса). И важно, чтобы файл самого класса (ert) действительно лежал по тому пути, что указан.

Я выкладывал набор файлов, которые нужно скопировать в папку с базой. Так и сделали? Нет ли в пути в папке с базой пробелов?

2, 3, 4 - это ошибки 1С, не касающиеся системы прав.

Или они появляются только после внедрения системы прав в конфигурацию? В любом случае, сначала нужно решить вопрос 1!
34. olo_lo4 18.01.13 00:53 Сейчас в теме
Да, с п1 все получилось

Подскажите пож, как можно пользователю поставить сразу все права на объект и все подчиненные подобъекты, скажем если мы ставим галочку на отчет но не поставим на все его реквизиты то все равно пользователь с отчетом работать не сможет. Это конечно жутко неудобно ставить миллион галочек.
35. gavlexx 38 18.01.13 01:00 Сейчас в теме
(34) olo_lo4,

Да, пока так. Спасибо за замечание.

Но ведь код открытый, никто не мешает доработать обработку по своему усмотрению. Или Вы не кодируете на 1С? Там нужно лишь добавить на форму кнопку "Отметить у всех подчиненных" и "Снять отметки у подчиненных" с обработчиком, который пройдет по дереву ниже текущей ветки и проставит отметки...
36. olo_lo4 18.01.13 01:08 Сейчас в теме
можете пример кода кинуть (хотя бы кусок начала) , я больше по восьмерке, с семеркой на вы..как обходить дерево в 7.7 вообще не в курсе, заранее спасибо!
37. Jkey 13 29.01.13 17:00 Сейчас в теме
ТиС 970 под юзером "Администратор" Нажал кнопку "Обновить" в "Доступы".
гРежимРедактирования = Форма.Параметр.Получить("РежимРедактирования");
{Обработка.СвойстваОбъектов.Форма.Модуль(608)}: Значение не представляет агрегатный объект (Получить)
гИмяОткрывшейФормы = гПараметрыВызова.Получить("ИмяВызвавшейФормы");
{Обработка.ПодборОбъектов.Форма.Модуль(4095)}: Значение не представляет агрегатный объект (Получить)
Поиск новых занял 0.076сек.
Поиск удаленных занял 0.092сек.
38. gavlexx 38 29.01.13 17:22 Сейчас в теме
(37) Jkey,
Странно, ошибки в коде обработок, не касающиеся этого механизма управления правами. Все настройки выполнили по инструкции? Обработку, подавляющую вывод форм на экран, в конфигурацию загрузили?

Здесь, насколько я понимаю, уже были участники, которые этот механизм под ТиС запускали...
39. Jkey 13 29.01.13 20:22 Сейчас в теме
(38)gavlexx, делал, как по инструкции. Дабы с 1с7 с 97года дружу.
42. gavlexx 38 15.02.13 19:17 Сейчас в теме
(39) Jkey,
Могу лишь предложить попробовать подключиться к Вам удаленно и посмотреть, что же происходит.
P.S. У меня опыт 7.7 с 98-го. 0:1 в Вашу пользу :)
40. laduk 14 15.02.13 18:58 Сейчас в теме
Вопрос, есть в этой обработке возможность вывести отчет по правам доступа в разрезе пользователей ?
41. gavlexx 38 15.02.13 19:15 Сейчас в теме
(40) laduk,
Нет, такого не делал.
Но можно "докрутить" сам файл прав, который формирует система 1С. Это ведь обычный файл Access, а он умеет на основании своих таблиц делать чудесные отчеты конструктором.
43. Bukaska 134 15.02.13 21:50 Сейчас в теме
За статью однозначно плюс. Жаль что не знала раньше))))
44. vadimlp77 29 03.06.13 17:18 Сейчас в теме
Подскажите плиз что делать на 64 битний винде ?
regsvr32.exe dynwrap.dll
Пишет, что не хочет на 64 ...
45. vadimlp77 29 03.06.13 17:26 Сейчас в теме
C:\Windows\SysWOW64\regsvr32 C:\Windows\SysWOW64\dynwrap.dll
вроде вот так помогло
46. vadimlp77 29 06.08.13 18:29 Сейчас в теме
Подскажите пожалуйста!
Валится 1с-ка на выполнении строчки:
СтрИнтерфейсыИБ = UserCtrl.ПолучитьИнтерфейсыБазы(КаталогИБ());
Куда бежать, на что смотреть ?
UsersDef.dll - 2.1.1.1
FormEx.dll - 2.0.5.0
1CPP.dll - 2.5.0.2

1С 7.7 27 релиз с телепатом
47. gavlexx 38 06.08.13 20:41 Сейчас в теме
СтрИнтерфейсыИБ = UserCtrl.ПолучитьИнтерфейсыБазы(КаталогИБ());


В выполнении этой строки вижу потенциальную проблему в пути к базе. Предложение стандартное - проверить путь к ИБ на пробелы, спец.символы и т.п. И убрать по возможности.
Во-вторых, попробовать запустить под правами админа.
Оставьте свое сообщение
Вопросы с вознаграждением