Как сделать доступным "Журнал изменений БД" для конкретной группы пользователей
Раздел [Журнал изменений БД] доступен только для пользователя с правами системного администратора, если же Вам необходимо отображать данный раздел для всех пользователей, то Вам необходимо в TSAdmin.exe найти скрипт scr_Main и закомментировать строку, как показано ниже.
//amiToolsDatabaseLog.IsVisible = IsAdmin;
После этого данный раздел будет доступен всем пользователям.
Чтобы для конкретной группы пользователей разрешить доступ к журналу изменений, в скрипте scr_Main закомментируйте строку:
//amiToolsDatabaseLog.IsVisible = IsAdmin;
В скрипте scr_Main реализуйте следующий код:
function IsUserInGroupExists(UserID, GroupName) {
var Dataset = GetSingleItemByCode(UserInGroupDatasetUSI);
ApplyDatasetFilter(Dataset, 'UserID', UserID, true);
Dataset.Open();
try {
while (!Dataset.IsEOF) {
if (Dataset.Values('GroupName') == GroupName) {
return true;
}
Dataset.GotoNext();
}
} finally {
Dataset.Close();
}
return false;
}
amiToolsDatabaseLog.IsVisible = IsAdmin || IsUserInGroupExists(Connector.CurrentUser.ID, 'Менеджеры');;
Теперь, если Ваш пользователь входит в группу "Менеджеры" или администратор, сможет работать с данным разделом.
Вам необходимо только указать название группы, для которой Вы хотите отображать данный раздел.
Есть более изящное решение этой задачи.
В scr_Access (по крайней мере, в 3.3.0) есть функция GetIsCurrentUserHas(RecordAdminUnitID), которая определяет вхождение искомого объекта системы (например, группы пользователей) в список объектов системы, с которыми связан текущий пользователь системы.
Входящий параметр - ID объекта системы (группы пользователей) из tbl_AdminUnit. Функция возвращает TRUE или FALSE.
Таким образом, вхождение пользователя в группу можно определить всего двумя строками:
var UserGroup = /* ID группы пользователей из tbl_AdminUnit*/; var CurrentUserInGroup = GetIsCurrentUserHas(UserGroup);