#0
by Eugene G
Подмимал данную тему на Т1С, но там народ, что-то не активно мне отвечал, и в основном "чем бы дитя не тешилось...", может Волшебник чем поможет, цитирую полностью: ----------------------------- Тема: "Как я сделал убогую RLS" Сразу отмечу, что слово "убогую" относится не к "RLS", а к "сделал". Для тех, кто еще не в курсе про механизм Row Level Security - читайте в инете . Я расскажу о том, что у меня получилось, не с целью похвалится, а с надеждой, что кто-нибудь подскажет как сделать лучше. По шагам: 1) Патчим bkend.dll, чтобы пользователи могли коннектится к SQL серваку под своими NT логинами - в текстом редакторе открываем bkend.dll и заменяем строку "UID=%s;PWD=%s;" на "UID=;PWD=; " (так как написано в статье ToyPaul, ) 2) Патчим 1cv7.exе: отключаем верификацию таблиц на входе первого пользователя, с помощью Soaron'a Дальше собственно RLS, вначале на справочники: 1) переименовываем нужные справочники, с помощью EM, например, sc33 в _sc33 2) создаем новое поле в этих справочниках, скажем, User_ID, типа Varbinary 3) создаем для наших справочников view: в select выбираем все колонки, кроме вновь созданной 4) накладываем на view условие: WHERE User_ID=SUSER_SID(SUSER_SNAME) (SUSER_SID - возвращает "код" пользователя, типа varbinary) 5) для таблиц _scXX, создаем триггер на вставку, который при вставке записи, записывает пользователя, которым произведено добавление. Код триггера: CREATE TRIGGER TestTrigerSC33 ON [dbo].[_SC33] AFTER INSERT AS set nocount on JOIN INSERTED ON _SC33.ID = INSERTED.ID 6) все. наслаждаемся эффектом, теперь пользователи могут работать только со своими записями. На подчиненных справочниках, как я и думал, тоже все отработало без проблем. Теперь RLS по документам, собственно все тоже самое: 1) переименовываем _1sjourn, например, в __1sjourn 2) добавляем поле User_ID 3) Создаем на основе __1sjourn view - _1sjourn с условием 4) вставляем триггер 5) вот и все - пользователи видят только свои документы. Теперь проблемы: 1) То что, патчится dll и exe - это очень плохо. Товарищи Поликомовцы как-то это обошли. Вопрос как? 2) При любой модификации md файла (c turboMD только при изменении структуры базы) потребуется восстанавливать исходную структуру базы - удалять лишние поле, и назад переименовывать их. Для этого можно написать автоматическое средство. А может можно как-то лучше? Вот такая лажа получилась у меня. Замутил это я для сдачи диплома, т.е. диплом это конфа под 1С, а специальность требует, чтобы в разработанном программном продукте была подсистема защиты. Кто понял о чем была речь, просьба высказаться. Любая критика или замечания (а лучше советы) приветствуются. зы. Предзащита в среду. зыы. Возможно сразу не смогу ответить, поскольку буду ездить по работам, да в ВУЗ, но ----------------------------- + еще косяк - поиск по индексированному полю не работает, 1С вываливается с ошикой состояния курсора :((
#6
by Волшебник
С точки зрения 1С - да. Копаться во внутренней структуре таблиц 1С хоть и интересно, но не рекомендуется, потому что можно что-нибудь случайно испортить.
#8
by Ёжик в тумане
Честно говоря, недопонял, за что ветка удостоилась БЗ? Разве что, в назидание потомкам?
#9
by Системщик
Потомки тут каким боком? Если темой Волшебник не владеет, она ему не интересна. Потому и в базу знаний.
#12
by romix
Потому что тема серьезная. В 8.0 может быть это уже сделано? Там же есть сервер приложений, и в нем можно проверять всякие события...
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- АРМ бухгалтерия в 1С
- Ввод на основании
- [b] КАК ПРАВИЛЬНО ОБРАБОТАТЬ СОБЫТИЕ ?????? [/b]
- Excel: как сделать FitToPagesWide=1 и Zoom=False?
- Процедура вызывается как функция... Кто поможет?
- ПеремещениеДенег (касса) не попадает в кассовую книгу
- Война иконок на рабочем столе :)
- Обмен опытом: Погашение стоимости остатков спецодежды.
- ЗиК. Как начислять премию от оклада?
- История поисковиков Yandex, Rambler, Google
- Как распечатать журнал регистрации?
- Citrix XP как увеличить количество com-портов (более сом9)?
- Ошибка при переходе с редакции 4.4 на 4.5. 1С:Предприятие7.7
- Как завершить сеанс 1с (закрыть программу)
- Не записывается атрибут типа Перечисление в подчиненном справочнике
- VB vs 1C или как скрестить ежика с гиеной
- Как сложить время? Например 12:26 + 05:06 = 17:32
- Повторное проведение документа
- перекодировка из DOS -> UTF-8
- Загрузка прайса в Ехселе в справочник