Начал только осваивать Террасофт. Разбираюсь с правами доступа.
Создал невизуальный компонент - пункт контекстного меню для wnd_MyGridArea. Как настроить, чтобы этот пункт меню видела только группа к примеру Бухгалтерия?
Нравится
Спасибо за Ваше обращение. Мы зарегистрировали его в Службе технической поддержки и назначили специалиста, который сможет Вас компетентно проконсультировать по данному вопросу.
Разобрался как можно настроить доступ к конкретному пользователю:
К примеру:
var NameUser = 'User1'; var CurrentUserLoginName = Connector.CurrentUser.Name; if (CurrentUserLoginName == NameUser ) { ПунктМеню.IsVisible = true; ПунктМеню.IsEnabled = true; return;
А вот как настроить доступ к определенной группе?
К примеру:
function ДоступМенюГруппа() { // if (ТекущийЮзер принадлежит Группе1) { return true; } return false; }
Как прописать синтаксис?
Alex, можно так:
var dsUserInGroup = Services.GetNewItemByUSI('ds_UserInGroup'); var UserName = Connector.CurrentUser.Name; var GroupName = 'GroupName'; ApplyDatasetFilter(dsUserInGroup, 'GroupName', GroupName, true); ApplyDatasetFilter(dsUserInGroup, 'UserName', UserName, true); dsUserInGroup.Open(); if (!dsUserInGroup.IsEOF) { //пользователь в группе } dsUserInGroup.Close();
Сделал, как Вы рекомендовали:
function MyUserInGroup() { var dsUserInGroup = Services.GetNewItemByUSI('ds_UserInGroup'); var UserName = Connector.CurrentUser.Name; var GroupName = 'Группа1'; ApplyDatasetFilter(dsUserInGroup, 'GroupName', GroupName, true); ApplyDatasetFilter(dsUserInGroup, 'UserName', UserName, true); dsUserInGroup.Open(); if (!dsUserInGroup.IsEOF) { return true; } dsUserInGroup.Close(); return false; }
В строчке
ApplyDatasetFilter(dsUserInGroup, 'GroupName', GroupName, true);
пишет: "Предполагается наличие объекта". Что тут некорректно?
Alex, остановитьесь дебаггером и посмотрите содержание переменных dsUserInGroup и GroupName.
Может, подойдёт стандартная функция GetIsCurrentUserHas(RecordAdminUnitID) из скрипта scr_Access?