Изменение Прав доступа

При добавлении Складского документа (Накладной) в нижней части во вкладке Доступ создаются определенные Группы и Пользователи - автор (a.ivanov,Ответственный) созданного Складского документа (скриншот).
При изменении Ответственного (b.petrov) в этом документе в Доступе появляется этот Пользователь (b.petrov).
При ещё раз изменении Ответственного в этом документе в Доступе появится этот новый Пользователь, но при этом предыдущий Ответственный (b.petrov) останется и может видеть данный документ.

Возникло два вопроса:
1. Как при добавлении в Доступ Пользователя (при смене Ответственного), который находится в определенной группе (к примеру Менеджеры) права этого Пользователя были только Чтение. Сейчас видно, что у a.ivanov права Чтение, Удаление и Изменение доступа.
2. Как при смене Ответственного удалять предыдущего Ответственного (но только, если он находится в группе Менеджеры). А то получается Ответственный поменялся, но предыдущий ответственный может видеть данный складской документ.

Нравится

1 комментарий

Добрый день!

Раздача прав доступа ответственному записи происходит на событии AfterPost в скрипте датасета.
За это отвечает функция GiveRightsToRecordOwner скрипта scr_Access, которая используется во всех разделах.

В ней прописана раздача прав на чтение и запись для нового ответственного:

	var CanRead = true;
	var CanWrite = true;
	var CanDelete = false;
	var CanChangeAccess = false;

Вы можете модифицировать ее по своему усмотрению или написать похожую функцию, но конкретно для Вашего раздела.

Идентификатор предыдущего ответственного записывается в атрибут InitOwnerID датасета в функции InitRecordOwnerData скрипта scr_Access. Используя его, Вы можете реализовать его удаление с таблицы tbl_[таблица]Right также на событии AfterPost датасета.

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