Sql -запрос для раздачи прав доступа пользователям только на те записи, в которых они являются ответственными

Нередко компаниям, в результате реструктуризации или каких-либо видимых причин необходимо перераздать права доступа на записи в приложении Terrasoft CRM.
В том случае, если база достаточно велика, раздача прав доступа превращается в рутинную работу.
Предлагаю для пользователей sql-запрос, который "перераспределит" права доступа пользователям таким образом, чтобы они видели только те записи, в которых являются ответственными.
Что нужно сделать:
1. Перед выполнением нижеуказанных действий настоятельно рекомендую сделать резервную копию Вашей базы данных во избежание нарушения работоспособности системы и потери данных! 
2. Запустите менеджер по управлению базой данных, в зависимости от используемой Вами СУБД (для SQL - например, Enterprise Manager). Выберите базу, на которой необходимо выполнить Sql-запрос. Откройте окно для нового запроса и вставьте запрос следующего содержания:

DELETE FROM tbl_AccountRight
INSERT INTO tbl_AccountRight (ID, RecordID, AdminUnitID, CanRead, CanWrite, CanDelete, CanChangeAccess)
SELECT newid(), A.ID, AU.ID, 1, 1, 1, 1
FROM tbl_Account A
JOIN tbl_AdminUnit AU ON AU.UserContactID = A.[OwnerID]

3. Запустите на выполнение.
4. Данный запрос предназначен для раздачи прав доступа для раздела контрагентов. Вы также можете раздать аналогичные права доступа пользователям на записи путем замены в запросе tbl_Account на название соответствующей таблицы.
5. Затем необходимо запустить рабочее приложение Terrasoft CRM под пользователем с правами администратора. Зайти в раздел «Контакты», выбрать записи тех контактов, которые являются пользователями системы и добавить этих пользователей на закладку «Доступ» менеджера деталей. То есть раздать пользователям права доступа на записи контактов самих себя. Это делается с той целью, чтобы пользователь в поле «Ответственный» мог видеть запись себя.
6. Затем Вы можете зайти в приложение под обычным пользователем и протестировать работоспособность системы.

Желаю удачи!

С уважением,
Мельникова Екатерина

Нравится

Поделиться

8 комментариев

Если уж делать что-то такое, то скрипт должен учитывать и права доступа по-умолчанию.

К тому же нужно отдавать себе отчет, что права доступа могут содержать какие угодно настройки, которые при таком подходе будут утрачены.

В том то и дело, что этот скрипт не учитывает прав доступа по умолчанию. Это учитывают другие скрипты http://community.terrasoft.ua/blogs/3277
Дело в том, что клиенты нередко обращаются с просьбой предоставить что-то подобное, поскольку регламенты работы в их компаниях предусматривают именно такой функционал.

Мельникова Екатерина

Если у клиента права доступа по-умолчанию настроены каким-то образом, то это, скорее всего, соответствует его регламентам.

Впрочем, для раздачи прав доступа только ответственным этот скрипт как раз то что нужно. Я просто уточнил, на какие нюансы следует обратить внимание при использовании.

Думаю что задача "раздать права только ответственным" смысла не имеет. В отличии от задачи "добавить права всем ответственным, которые их еще не имеют".

Прицитирую одного из наших клиентов: "К нам пришел новый руководитель, пытается изменить регламент работы нашего отдела. В результате этого нам необходимо, чтобы все пользователи системы видели только свои записи, в отличие от того, как было до этого".

Это вполне жизненная задача, также как и остальные требует решения.

Мельникова Екатерина

Так тогда начальник отдела не сможет посмотреть статистику по своим подчиненным.
То что поставили такую задачу, не означает что она имеет смысл :)

Так сделали бы отдельный раздел "База знаний". Ато вытаскивание оттуда кусков в блоги смотрится как-то странно.

"Underscore a.k.a. _" написал:Так тогда начальник отдела не сможет посмотреть статистику по своим подчиненным
Если он конечно не администратор.

В общем, у решения есть нюансы, о них написали, так что все, кто захотят воспользоваться, будут в курсе. Думаю, на этом обсуждение можно закрывать.

Показать все комментарии