Добрый день!
Как Вы знаете, в карточке редактирования может быть представлено несколько представлений. Иногда требуется ограничить доступ к этому представлению некоторой группе пользователей. Этот функционал можно дополнительно реализовать средствами Terrasoft Administrator. Ниже приведу сам алгоритм, на примере карточки редактирования раздела "Продукты", в которой существует представление "Движение по складу", доступ к которому мы ограничим.
Итак, прежде всего необходимо открыть скрипт wnd_OfferingEditScript и в конец скрипта добавить следующую функцию:
function IsUserInGroup(GroupID)
{
var Dataset = Services.GetSingleItemByUSI('ds_AdminUnit');
ApplyDatasetFilter(Dataset, 'UserContactID', Connector.CurrentUser.ContactID, true);
Dataset.Open();
var UserID = Dataset.ValAsGUID(IDFieldName);
Dataset.Close();
var Dataset = Services.GetSingleItemByUSI('ds_UserInGroup');
ApplyDatasetFilter(Dataset, 'GroupID', GroupID, true);
ApplyDatasetFilter(Dataset, 'UserID', UserID, true);
Dataset.Open();
var Is = (Dataset.RecordsCount > 0);
Dataset.Close();
return Is;
}
Приведенная выше функция, в случае если текущий пользователь системы входит в указанную нами группу пользователей, возвращает значение true, в ином случае - false.
Далее необходимо отредактировать функцию function wnd_OfferingEditOnPrepare(Window). В ней добавим следующую проверку:
function wnd_OfferingEditOnPrepare(Window) {
scr_BaseDBEdit.wnd_BaseDBEditOnPrepare(Window);
Initialize(Window);
if(!Connector.CurrentUser.IsAdmin)
{
var UsrDataset = Services.GetSingleItemByUSI('ds_UserInGroup');
var GroupName = 'Название';
//где 'Название' - имя группы пользователей, для которых нужно ограничить доступ к представлению
ApplyDatasetFilter(UsrDataset, 'GroupName', GroupName, true);
//тут следует не забыть создать фильтр сравнения в сервисе sq_UserInGroup (см. скриншот ниже)
UsrDataset.Open();
var GroupID = UsrDataset.Values('GroupID');
if(IsUserInGroup(GroupID))
{
//скрываем само представление, установив свойству IsVisible значение false
pgOfferingAnalytic.IsVisible = false;
}
UsrDataset.Close();
}
}
Так же, перед тестированием результатов, следует создать фильтр сравнения в сервисе sq_UserInGroup:
После этого не забудьте сохранить изменения и перезапустить клиентское приложение Terrasoft.