Возник такой вопрос: необходимо определенным пользователям запретить отображать в Гриде дополнительные поля, т.е. если мы, например, в модуле Контакты сделали видимыми поля "Имя", Адрес и Тип, то некоторые пользователи могут видеть только эти поля, некоторые могут добавлять другие. Можно ли это реализовать без написания дополнительных скриптов?
Если есть подобные темы, буду благодарен ссылкам, я почему-то не нашел.

Нравится

13 комментариев

конечно можно

или Вы хотите, чтобы у всех было стандартное представление грида по умолчанию?

Вы меня немного не поняли. Есть два пользователя: пользователь А и пользователь В.
Пользователю А доступны все поля (также можно добавлять тем способом, который на скриншоте), а пользователю В доступны только три поля, дополнительные он сам добавлять для отображения не должен.

Здравствуйте, Владимир!

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

Подробная информация о настройке прав есть в руководстве администратора в разделе Права доступа http://training.terrasoft.ru/sites/default/files/document/TS_AG_3.3.2.p…

а так, чтобы не видеть совсем? И с правами не устраивает, нужно, чтобы в карточе для всех все поля были доступны.

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

Пример кода для скрытия колонки в гриде:

if (Connector.CurrentUser.ContactID == '{0095C6D9-D7B3-4ADD-8DF6-04B62E8A36D6}'){
	colNumberdgvAll.IsEnbled = false;
}else{
	colNumberdgvAll.IsEnbled = false;
}

где
'{0095C6D9-D7B3-4ADD-8DF6-04B62E8A36D6}' - идентификатор пользователя, которому нужно запретить доступ

colNumberdgvAll - название колонки, которую нужно скрыть из грида:

grid

я так и предполагал, спасибо. А еще такой вопрос, раз уж вы затронули быстродействие. Вот есть модуль задачи, в нем графический реестр - расписание, если каждую запись в расписании окрашивать разными цветами, сильно этот процесс повлияет на быстродействие?

Зависит от количества задач. Повлияет, но не существенно.

Владимир,

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

komgbu, спасибо за совет, приму к сведению.

"komgbu" написал:
Насколько я помню, есть сервис, который определяет принадлежность пользователя к секюрити-группе, используйте его.

Вы правы, такой код есть.

Пример есть вот тут:
http://www.community.terrasoft.ru/forum/topic/6990#comment-29924

Подскажите пожалуйста если нужно запретить не на столики а на данные в столбика. Что бы в строке для пользователя который не ответственный было видно лишь поле Name, а все остальные пустые

Сергей,

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

В этом случае требуется существенная программная доработка системы. Навскидку могу предложить следующие варианты:

1. Заменить все колонки запроса SQL-колонками, проверять права доступа при получении данных в запросе и выводить только то, на что права есть;

2. Проверять на уровне скриптов и передавать в DisplayValue датасета грида пустое значение;

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

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