Здравствуйте, обнаружилось что несколько обращений доступны все пользователям портала (порядка 30 обращений), права выставлены стандартно, изменялось доступность бизнес процессом, который выдавал права только тем, у кого такой же контрагент, как в обращении. Переделал бизнес процесс на " при обновление любого поля, отбираются права у тех у кого не такой контрагент, и выдается тем у кого тот самый из обращения."

На новые обращения работает, но на эти 30 обращений не отбираются права. (Вижу обращения с контрагентом "Контрагент №2" через портал под пользователем с контрагентом "Контрагент №1" ) 

Вопрос, что может устанавливать права, кроме этого бизнес процесса? Техподдержка не помогла.

Нравится

4 комментария
Лучший ответ

Я бы посоветовал делать один процесс с 2 сигналами, чтобы одинаково работал для новых и существующих обращений. 

Так мы исключим вариант, что процесс некорректный.

У наших клиентов тоже перераспределяются права на обращения после изменения SLA или Контакта, и всё срабатывает. Правда, там в условии я по старой привычке пишу, что Id должно быть заполнено, но возможно, сейчас такое и не требуется

Если процесс даже не запускается на редактирование полей, то покажите стартовые сигналы

Владимир Соколов, запускается, на каждое изменение, но не отрабатывает, как будто права, кто-то свыше меняет.

 

Rinat,

Для того, чтобы права доступа изменились для уже созданных записей, Вам нужно создать другой процесс, чтобы он стартовал по обычному сигналу и добавить элемент, который вносит изменения в права доступа для этих записей по какому-то фильтру (например, по дате создания).

Этот бизнес-процесс нужно запустить одноразово вручную либо из дизайнера, либо из пункта меню запуска бизнес-процессов.

Также, возможно, отрабатывает еще какая-то дополнительная логика. Чтобы понять, что это может быть, посмотрите SQL Profiler, какие запросы идут в этот момент в базу данных.

Я бы посоветовал делать один процесс с 2 сигналами, чтобы одинаково работал для новых и существующих обращений. 

Так мы исключим вариант, что процесс некорректный.

У наших клиентов тоже перераспределяются права на обращения после изменения SLA или Контакта, и всё срабатывает. Правда, там в условии я по старой привычке пишу, что Id должно быть заполнено, но возможно, сейчас такое и не требуется

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

Добрый день!

Предлагаю Вам к ознакомлению реализацию задачи добавления полных(или на чтение) прав доступа определенной группе пользователей на все записи раздела, у которых права доступа для данной группы отсутствуют.

// на примере раздела "Контакты" и группы "Все пользователи".

Алгоритм:

1. Запустите TS Admin и откройте сервис wnd_ContactGridArea. В блок frmButtons добавьте новый Button, свойство Caption установите, к примеру, «Добавить права»:

1

2. На вкладке события, определите событие OnClick для созданной кнопки, и вставьте в функцию – обработчик следующий код:

function ButtonOnClick(Control) {  
         var Dataset = Services.GetNewItemByUSI('ds_Contact');
         Dataset.Open();
         while(!Dataset.IsEOF)
         {
                   var ParentItemID = Dataset.Values('ID');
                   var AdminUnitIDs = '{97490F89-2943-480D-9AFE-B1C95DE00010}';
                   var RightsDataset = GetItemRightDataset('tbl_ContactRight');
                   var SetFullAccess = true; //false            
                   RightsDataset.Close();
                   ApplyDatasetFilter(RightsDataset, 'RecordID', ParentItemID, true);
                   RightsDataset.Open();
                   var AdminUnitID = AdminUnitIDs;
                   var RecordIsFound = RightsDataset.Locate('AdminUnitID', AdminUnitID);
                   if (RecordIsFound) {
                            var ID = RightsDataset.Values('ID');
                            RightsDataset.Edit();
                            RightsDataset.ValAsBool('CanRead') = true;
                            if (SetFullAccess == true) {
                                     RightsDataset.ValAsBool('CanWrite') = true;
                                     RightsDataset.ValAsBool('CanDelete') = true;
                            }
                   } else {
                            var ID = Connector.GenGUID();
                            RightsDataset.Append();
                            RightsDataset.ValAsGUID('ID') = ID;
                            RightsDataset.ValAsGUID('RecordID') = ParentItemID;
                            RightsDataset.ValAsGUID('AdminUnitID') =AdminUnitID;
                            RightsDataset.ValAsBool('CanRead') = true;
                            if (SetFullAccess == true) {
                                     RightsDataset.ValAsBool('CanWrite') = true;
                                     RightsDataset.ValAsBool('CanDelete') = true;
                            }
                   }
                   RightsDataset.Post();
                   Dataset.GotoNext();                            
         }
         Dataset.Close();
}

3. Вместо var AdminUnitIDs = '{97490F89-2943-480D-9AFE-B1C95DE00010}'; подставьте ID группы все пользователи:

2

4. Сохраните изменения и протестируйте функционал.

Приятной работы с Terrasoft!

Нравится

Поделиться

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