Вопрос:

Шаги воспроизведения:

1. Для редактирования прав доступа к страницам продуктов был создан бизнес-процесс "Забрать права на редактирование товара"

2. Процесс был и сохранен и запущен, но указанные в бизнес-процессе сотрудники, которым было запрещено редактирование продуктов, все равно имеют право на внесение изменений на странице товара.

Ответ:

Описанное поведение системы связано с тем, что на продукты выдано право роли "All employes", в которую входят все пользователи системы. Если сотрудник входит в роль, у которой есть права на запись, то пока у роли будут права, у сотрудника так же будут права.

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

Ознакомиться с логикой работы прав доступа можно, изучив статьи на Академии:

https://academy.terrasoft.ru/documents/base/7-12/prava-dostupa

https://academy.terrasoft.ru/documents/administration/7-12/razdel-upravleniya-rolyami-i-polzovatelyami

Для исправления данного процесса необходимо добавить логику забирания прав на изменение/удаление у роли "Все сотрудники". Только после этого, пользователи, указанные в процессе, не будут иметь право изменить страницы товаров.

Нравится

Поделиться

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

Коллеги всем доброго времени суток.

Подскажите есть ли возможность переноса настроек прав доступа  на объекты с песочницы на прод, что бы не выполнять обно и тоже по нескольку раз.

Нравится

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

Добрый день, да возможно для этого к вашему пакету необходимо прикрепить данные из таблиц и можете связанные сущности по необходимости смотреть

VwWorkspaceObjects (Объекты рабочего пространства (представление))

SysAdminOperation (Operation permissions, если надо)

SysAdminOperationGrantee (Доступ к operation permissions, если надо)

SysEntitySchemaOperationRight (Доступ к объектам)

SysEntitySchemaRecordDefRight (Доступ к записям по умолчанию)

SysEntitySchemaRecordRight (Доступ пользователей к операциям над объектом)



SysAdminUnit(Объект администрирования) и тд. 



так же можете в конфигурации системы найти схемы объектов с словом "Доступ", может быть что-то упустил 

Добрый день, да возможно для этого к вашему пакету необходимо прикрепить данные из таблиц и можете связанные сущности по необходимости смотреть

VwWorkspaceObjects (Объекты рабочего пространства (представление))

SysAdminOperation (Operation permissions, если надо)

SysAdminOperationGrantee (Доступ к operation permissions, если надо)

SysEntitySchemaOperationRight (Доступ к объектам)

SysEntitySchemaRecordDefRight (Доступ к записям по умолчанию)

SysEntitySchemaRecordRight (Доступ пользователей к операциям над объектом)



SysAdminUnit(Объект администрирования) и тд. 



так же можете в конфигурации системы найти схемы объектов с словом "Доступ", может быть что-то упустил 

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

Вопрос:

Пользователю дали права только на Чтение \ Создание.  Редактирование и удаление в настройках прав - пусто.

При этом, у пользователя появляются права на редактирование и удаление.

Пример: справочник Звонки.

Как запретить?

Ответ:

Согласно базовой логике работы приложения, по умолчанию при создании записи выдаются полные права автору записи и ответственному. Также необходимо заметить, что если бы у создателя записи не было прав на ее редактирование, то создать запись он бы не смог.

Для того, чтоб изменить данную логику, можно создать бизнес-процесс, который будет забирать права у автора и/или ответственного после создания записи. Стартовый сигнал у процесса сделать "Добавление записи", объект - Звонок, следующие элементы - "Читать данные" из записи, по которой отработал стартовый сигнал (условие по id), поля "Создал" и "Ответственный" и "Изменить права доступа". 

Рекомендуется ознакомиться со статьями на Академии по работе с бизнес-процессами, в частности с функционалом описанных выше элементов

https://academy.terrasoft.ru/documents/technic-bpms/7-12/nachalnyy-signal

https://academy.terrasoft.ru/documents/technic-bpms/7-12/element-processa-chitat-dannye

https://academy.terrasoft.ru/documents/technic-bpms/7-12/element-processa-izmenit-prava-dostupa

Также ограничить права для удаления и изменения записей для автора и ответственного можно не прибегая к реализации процесса. Для этого необходимо включить в настройках прав на объект «Звонок» администрирование по операциям, а на вкладке «Доступ к объекту» убрать права на изменение и удаление.

 

Нравится

Поделиться

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

Добрый день!

Никто не сталкивался с задачей, что нужно настроить доступ к отдельным записям справочника? (например есть справочник "Специальность" и часть записей в нём нужно скрыть от пользователей определённой функц. роли)

Нравится

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

А такая же настройка доступа к объекту по записям не работает?



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

А такая же настройка доступа к объекту по записям не работает?



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

Да, для объекта справочника можно так же включить администрирование по записям, как и для другой таблицы. При этом автоматически в базе должна создаться таблица Sys...Right. Поскольку справочник не зарегистрирован как раздел, добавить в неё записи можно через базу. Либо попробовать через БП, при помощи блока «Изменить права доступа».

Спасибо за комментарии, решил путём администрирования по записям, а для каждой записи справочника добавил определяющее справочное поле. После этого бизнес-процессом изменил права, согласно значениям справочного поля. Для новых значений также бизнес процессом раздаются права.

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

Каким образом можно проверить, имеет ли пользователь какую-то организационную или функциональную роль, включая всевозможные варианты вхождения ролей?



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

Нравится

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

Примерно так будет выглядеть sql запрос

with tempRecursive(Id, Name, ParentRoleId, level) as (

    select Id, Name, ParentRoleId, 0 as level

    from SysAdminUnit

    where id = '5905BE45-DFF1-4756-AF7C-92C6182F4602'

    Union All

    Select SysAdminUnit.Id, SysAdminUnit.Name, SysAdminUnit.ParentRoleId, (level+1) as level

    from tempRecursive join SysAdminUnit on tempRecursive.ParentRoleId = SysAdminUnit.Id

)

select * from tempRecursive

order by level

Варианта два:

1. Просканировать в системе все его роли. Вариантов не так много, Вы их все перечислили - фукциональная роль, орг. роль, руководитель + он может входить в роль системных администраторов явно или через подчиненного.

2. Проверить в БД таблицы SysAdminUnitInRole и SysUserInRole.

В 5.Х была C#-функция UserConnection.DBSecurityEngine.GetUserAdminUnitCollection. Возможно, и в 7.Х есть такая же. В качестве параметра — Id пользователя или без параметров для текущего.

Антон Малий пишет:

Таким образом он показывает только 1-е и прямое вхождение пользователя в роль. И никакие унаследованные роли так не видны.



Очевидно, нужно писать рекурсивный Select с разными проверками. Но я подозреваю, что уже такой функционал существует

Владимир Соколов,

К сожалению, готового скрипта нет. Можно воспользоваться функцией, предложенной Александром.

Примерно так будет выглядеть sql запрос

with tempRecursive(Id, Name, ParentRoleId, level) as (

    select Id, Name, ParentRoleId, 0 as level

    from SysAdminUnit

    where id = '5905BE45-DFF1-4756-AF7C-92C6182F4602'

    Union All

    Select SysAdminUnit.Id, SysAdminUnit.Name, SysAdminUnit.ParentRoleId, (level+1) as level

    from tempRecursive join SysAdminUnit on tempRecursive.ParentRoleId = SysAdminUnit.Id

)

select * from tempRecursive

order by level

Действительно, в итоге оказалось, что все права можно найти в SysAdminUnitInRole

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

Добрый день. Нужно решение такой задачи.

"Каждый ответственный видит только своих контрагентов"

Подскажите пожалуйста как её организовать?

Фильтрами + права доступа, или бизнес процессом. Поделитесь пожалуйста опытом.

Спасибо

Нравится

2 комментария

Здравствуйте, Григорий!

Для реализации данного кейса, необходимо что бы в настройках прав доступа в конфигурации для раздела Контрагенты было включено администрирование по записям, но не заданы условия.

"своих контрагентов" - это тех, которых он создал? Или тех,  в которых он ответственный?



Первый вариант решается, как описал Андрей.

Второй вариант решается бизнес-процессом

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

Вопрос 

Часть менеджеров перестала видеть письма других менеджеров.

Ответ

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

Перейти в настройки почтового ящика:

Изображение удалено.

И предоставить права доступа на почту и письма:

Изображение удалено.

Нравится

Поделиться

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

Добрый день!

Настроил процесс по фиксации отсутствия сотрудника, хотел настроить передачу доступа к ящику другому сотруднику в часы отсутствия (отправка писем, настройка ящика).

В связи с этим вопрос - какой объект отвечает за Доступ почтового ящика для других пользователей?Изображение удалено.

Нравится

3 комментария

Здравствуйте, Александр!



Права на почтовые ящики храняться в объекте EmailDefRights. В нем Вы можете просматривать/изменять пользователей, которым дано право на тот или иной почтовый ящик.

Анна Журавель,

Добрый день!

Благодарю за ответ. Подскажите пожалуйста, как изменить права в EmailDefRights на Отправку писем (например, через процесс, для manager2 дать доступ на не только к письмам, но и на Отправку писем для manager1)?

Чакур Александр,

Добрый день, Александр!

Наиболее простым способом реализовать данную бизнес-задачу можно использую пользовательские средства системы bpm'online.



В версии 7.12.0 был реализован функционал более гибкой настройки прав доступа на почтовый ящик.

Для того, чтобы настроить права Вам необходимо перейти в настройки почтовых ящиков, выбрать необходимый ящик и включить функцию "Доступ для других пользователей"

После этого Вы сможете выбрать какие права и каким ролям раздавать.

К примеру, Вы можете раздать отдельно право на просмотр писем, на отправку и на настройку почтовых ящиков.



Данный способ раздачи прав будет более корректный чем использование запросов в БД поскольку таблица EmailDefRights связана с другими таблицами и устанавливать все необходимые связи между колонками трудоемкая задача, результатом которой могут быть ошибки в работе системы.

 

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

Коллеги, здравствуйте! 

Я настраиваю деталь "команда по контрагенту", которая позволяет участникам этой команды вести работу по данному контрагенту.

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

С чем это может быть связано?

Спасибо!

Нравится

4 комментария

Права, назначенные через элемент БП "Изменить права доступа", вроде как распространяются только на новые записи. Выходит, надо на все создаваемые сущности вешать бизнес-процессы, внутри которых давать права доступа на конкретно созданную запись конкретному кругу пользователей.

Добрый день!



Скорее всего это связано с тем что у команды нету прав на чтение связанных записей. Команда без выдачи прав на работу с контрагентом может видеть эти записи? 

Евгений Манько, в данный момент команда видит только карточку контрагента и может работать с ним, но не видит связанные записи других сотрудников

Роман Никулин,

Добрый день!



Вы проверяли права команды на эти записи? Если у них не будет прав на эти записи, то команда не увидит записи несмотря на права на контрагента. Для раздачи прав на старые связанные записи можно создать бизнес с элементом «изменить права доступа». А фильтрации можно указать например поле контрагент заполнено.

Если для созданных новых записей так же нет прав, прошу предоставить скриншот настройки прав связанного объекта.

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

Здравствуйте!

Не могу получить конкретную системную настройку из клиентского кода (ошибка на скриншоте) на пользователях-аутсорсерах (не входят в роль "Все сотрудники компании", если это важно). При этом эта же настройка нормально загружается для остальных пользователей, этот же пользователь нормально получает другие настройки. Пересоздавать настройку пробовал, не помогает. В чем может быть дело/как починить?

Изображение удалено.

Нравится

3 комментария

Здравствуйте!

Уточните, пожалуйста, как именно Вы получаете значение системной настройки? Есть листинг кода? 

 

Вильшанский Дмитрий, 

this.Terrasoft.SysSettings.querySysSettingsItem('SlaCalculationEnabled', function (slaEnabled) {console.log(slaEnabled)})

При этом если запросить какую-нибудь несуществующую настройку, то ошибка не выводится, приходит просто undefined

Добрый день.

Ошибка не совсем правильно передает суть проблемы. Дело в правах – т.е. у пользователя нет прав на данную настройку.

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