Независимый форум, посвященный системе БОСС-Кадровик и всему, что с ней связано
|
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
olya_gran
Зарегистрирован: 01.10.2008 Сообщения: 70
|
Добавлено: Пт Окт 10, 2008 14:48 Заголовок сообщения: Права доступа к объектам |
|
|
М.Администратор – Разграничение доступа – Права доступа к объектам – в объектах можно выбрать из списка: Произвольные отчеты, Подразделения, Операции по списку, Иерархические структуры, Приказы. Почему нельзя эти объекты пополнять самим. Например, нам нужно разграничить доступ на группы мероприятий для возможности занесения мероприятий разными отделами, и чтобы они мероприятий других отделов не видели. |
|
Вернуться к началу |
|
 |
Eng Site Admin
Зарегистрирован: 13.05.2008 Сообщения: 160
|
Добавлено: Пт Окт 10, 2008 17:54 Заголовок сообщения: |
|
|
Мне в свое время тоже показалось что права досупа к системе премирования, которую мы разрабатывали для одного заказчика, очень удобно решить именно этим функционалом. Добавление отсутствует потому, что для использования такого разграничения нужно довольно много доработок. В принципе сделать это не сложно.
1. нужно добавить свою строку в таблицу boss_objects по аналогии с тем, что там уже есть. Важное поле - SQLSelect - в него нужно поместить наименование списка (объекта босс-дизайнера)
2. создать список, с именем указанным в пункте 1 который будет списком значений на которые будут выдаваться права (в нашем случае были фонды премирования, в вашем будут группы мероприятий) за образец проще всего взять список pr_list_orders.
3. В тот список, где вы будете ограничивать права, необходимо добавить к селекту следующую конструкцию:
в секцию FROM
Код: | ,(boss_protect(nolock)
inner join user_fond (nolock) on BOSS_Protect.ObjectSample = user_fond.id_templ)
inner join boss_objects _hintbrowser on (BOSS_Protect.ObjectId = boss_objects.ObjectId AND boss_objects.SysName = 'budget') |
Здесь user_fond - таблица, которую ограничиваем по правам. budget - код, вставленный в таблицу указанную в пункте 1.
В секцию WHERE
Код: | AND BOSS_Protect.role_code = @@Role_code ; |
4. Настроить права доступа к вашим объектам в модуле администратор.
Вроде ничего не забыл... Если всетаки забыл и что-то не получается, пишите
P.S. У меня ограничение, прописанное в пункте 3 сделано с помощью алиаса, если входит админ, у него это ограничение отсутствует... поскольку на быстродействии вся эта кухня сказывается довольно ощутимо. |
|
Вернуться к началу |
|
 |
rebel25 Большой шоколадный орден

Зарегистрирован: 06.10.2008 Сообщения: 580 Откуда: Москва
|
Добавлено: Пт Окт 17, 2008 13:44 Заголовок сообщения: |
|
|
насчёт добавления новых объектов в ограничения нужно написать разработчикам, возможно они и доработают.
А вот к мероприятиямо можно разграничить доступ используя группы мероприятий (обучение, аттестация). Создав роли для каждой группы мероприятий можно стандартными средствами разграничить доступ к ним не прибегая к изменению функционала. |
|
Вернуться к началу |
|
 |
olya_gran
Зарегистрирован: 01.10.2008 Сообщения: 70
|
Добавлено: Пн Авг 27, 2012 09:28 Заголовок сообщения: права доступа на Архив документов |
|
|
Может кому понадобится:
Установление прав доступа на Архив документов
1. в BOSS_Object добавить строчку
(21,'Архив документов', 0,Hrtb_file_tree, Sa_hr_lst_prdoc_tree, ObjectSample, Null, Null)
2. Базовый список hr_lst_prdoc_tree сохранить как объект замещения и сделать следующие изменения:
- Добавить в код инициализации:
Код: | if '@@id_firm' == "@@id_firm" then LOCAL @@id_firm := 0;
if '@@Role_Code' == "@@Role_Code" then LOCAL @@Role_Code := '';
if '@@isAdmin' == "@@isAdmin" then LOCAL @@isAdmin := 0;
----------------------------------------------------------------
LOCAL _WHERE_TREE_REC_ := ''; --(это было в базовом объекте)
SELECT BOSS_OBJECTS.ObjectId
INTO :Object_Id_
FROM BOSS_OBJECTS
WHERE UPPER(BOSS_OBJECTS.SysName) = 'hrtb_file_tree';
if @@isAdmin = 1 then
{alias add_where_ := ;
}else
{alias add_where_ := {AND Exists (select top 1 1
from boss_protect,
hrtb_file_tree mt2,
Role
where boss_protect.role_code = role.role_code
AND Role.role_code = @@Role_code
AND boss_protect.objectsample = mt2.id_file_tree
AND mt2.id_file_tree = hrtb_file_tree.id_file_tree
AND boss_protect.ObjectId = Object_Id_
)
} |
- в процедуре TAB вместо «Let _WHERE_TREE_REC_ := '';» прописать
Код: | alias _WHERE_TREE_REC_ := AND hrtb_file.id_file_tree = @hr_lst_prdoc_tree:id_file_tree; |
- в SQL-запросе во 2-й и 3-й select в оператор where добавить следующее условие
3. Создать новый список sa_hr_lst_prdoc_tree на основе базового hr_lst_prdoc_tree и внести изменения:
a. В свойствах:
- убрать все ссылки на объекты, а в статусную строку прописать ссылку pr_boss_protect
b. В код инициализации добавить следующее:
Код: | -- Создание списка, на записи которого определяются права
Local Title_Obj_;
Let Title_Obj_ := 'Наименование группы архива документов';
Let :_id_doc_ := 0 as Integer;
Alias :_doc_name_ := ************;
ProcLocal B:sa_hr_lst_prdoc_tree={
--sField=значение поля,nField=номер поля
(nCmd,sField,nField,sParam);
switch :nCmd
{
42{--Получили фокус ввода. sField,sParam неопределены, nField = -1
Msg 2041, @$Sel_role;
Let :_id_doc_ := @$BOSS_Object_Data:1;
-- return _id_doc_,@$BOSS_Object_Data:1;
Alias :_doc_name_ := @$BOSS_Object_Data:2;
}
};--switch
};--EndProcLocal |
c. В процедуре TAB внести следующие изменения
- переменную @hr_lst_prdoc_tree заменить на @$BOSS_object_Data
- добавить в then 1-го if следующие строки:
Код: | Let :_id_doc_ := @$BOSS_Object_Data:1;
Alias :_doc_name_ := @$BOSS_Object_Data:2;
Msg 2041, @$Sel_role; |
d. В SQL-запрос внести следующие изменения
- переменную @hr_lst_prdoc_tree заменить на @$BOSS_object_Data
- group_type[‘’] заменить на 'BOSS_NSI' (незнаю почему, но в таблице hrtb_file_tree столбец group_type заполнен BOSS_NSI) |
|
Вернуться к началу |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|