Этюды по программированию. Разграничение прав

27.04.21

Администрирование - Роли и права

Задача: Имеется конфигурация на базе Библиотеки Стандартных Подсистем(БСП) -практически любая стандартная конфигурация 1С. Есть, к примеры заказы покупателей. Есть группы менеджеров, каждая из которых должна иметь доступ только к заказам своей группы.

Этюды по программированию. Разграничение прав.

Задача: Имеется конфигурация на базе Библиотеки Стандартных Подсистем(БСП) -практически любая стандартная конфигурация 1С.

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

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

1. Включается "Ограничивать доступа на уровне записей".

2. Создаются группы доступа, каждая включает в себя членов соответствующей группы. В настройках группы указывается профиль доступа для менеджеров. В профиле группы на закладке "Ограничения доступа" указывается "Пользователи: Запрещены все, исключения в группах пользователей".

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

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

Первый способ:

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

Второй способ, для тех, кто любит идти трудным путем:

Это добавить при открытии заказа строку:

	ЭтаФорма.ТолькоПросмотр= НЕ мо_ФИРМА_Привилегированный_Сервер.ЗаказКлиентаВозможностьРедактирования(Объект.Менеджер);

Соответственно нужно добавить в конфигурацию привелигелированный общий модуль с возможностью вызова сервера.

Модуль содержит следующую экспортную функцию:   

 

Функция ЗаказКлиентаВозможностьРедактирования(Ответственный) Экспорт 
	ТекущийПользователь=Пользователи.ТекущийПользователь();
	Если  Не ЗначениеЗаполнено(Ответственный) Тогда
		Возврат Истина;
	КонецЕсли;
	Если  Ответственный= ТекущийПользователь Тогда
		Возврат Истина;
	КонецЕсли;
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ ПЕРВЫЕ 1
		|	ГруппыДоступаПользователи.Ссылка КАК Ссылка
		|ИЗ
		|	Справочник.ГруппыДоступа.Пользователи КАК ГруппыДоступаПользователи
		|ГДЕ
		|	(ГруппыДоступаПользователи.Пользователь = &ТекущийПользователь
		|			ИЛИ ГруппыДоступаПользователи.Пользователь В
		|				(ВЫБРАТЬ
		|					ГруппыПользователейСостав.Ссылка КАК Ссылка
		|				ИЗ
		|					Справочник.ГруппыПользователей.Состав КАК ГруппыПользователейСостав
		|				ГДЕ
		|					ГруппыПользователейСостав.Пользователь = &ТекущийПользователь))
		|	И ГруппыДоступаПользователи.Ссылка.Профиль = &Профиль
		|;
		|
		|////////////////////////////////////////////////////////////////////////////////
		|ВЫБРАТЬ ПЕРВЫЕ 1
		|	ГруппыДоступаПользователи.Ссылка КАК Ссылка
		|ИЗ
		|	Справочник.ГруппыДоступа.Пользователи КАК ГруппыДоступаПользователи
		|ГДЕ
		|	(ГруппыДоступаПользователи.Пользователь = &Ответственный
		|			ИЛИ ГруппыДоступаПользователи.Пользователь В
		|				(ВЫБРАТЬ
		|					ГруппыПользователейСостав.Ссылка КАК Ссылка
		|				ИЗ
		|					Справочник.ГруппыПользователей.Состав КАК ГруппыПользователейСостав
		|				ГДЕ
		|					ГруппыПользователейСостав.Пользователь = &Ответственный))
		|	И ГруппыДоступаПользователи.Ссылка.Профиль = &Профиль";
	
	Запрос.УстановитьПараметр("ТекущийПользователь", ТекущийПользователь);
	Запрос.УстановитьПараметр("Ответственный", Ответственный);
	Запрос.УстановитьПараметр("Профиль", Справочники.ПрофилиГруппДоступа.НайтиПоНаименованию("Менеджер по продажам ФИРМА"));
	
МассивРезультатов = Запрос.ВыполнитьПакет();
Выборка1 = МассивРезультатов[0].Выбрать();
Выборка2 = МассивРезультатов[1].Выбрать();
	
	
	Если  НЕ Выборка1.Следующий() Тогда  // Пользователь не в группе "Менеджер по продажам ФИРМА"
		Возврат Истина;
	КонецЕсли;
	
	Если  Выборка2.Следующий() и Выборка1.Ссылка = Выборка2.Ссылка Тогда
		Возврат Истина;  

	КонецЕсли;
	Возврат Ложь;

КонецФункции

Обратите внимание, нужны заполненные группы доступа с профилями пользователей с названием "Менеджер по продажам ФИРМА". Надеюсь эта статья окажется Вам полезной.

P.S.: Надеюсь, вам понравится эта и другие мои статьи и разработки на //infostart.ru/profile/48714/.

См. также

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 руб.

02.09.2020    119917    656    389    

701

Запрет доступа к данным по зарплате для БП 3.0 и КА 2.5

Зарплата Роли и права Платформа 1С v8.3 Бухгалтерский учет Управление правами 1С:Бухгалтерия 3.0 1С:Комплексная автоматизация 2.х Молдова Россия Казахстан Бухгалтерский учет Платные (руб)

Расширение позволяет максимально полно ограничить доступ пользователей к данным по заработной плате, а именно закрывает доступ к документам начисления и выплаты заработной платы, не позволяет просматривать бухгалтерские отчеты по счету учета зарплаты а также убирает зарплатные проводки из журнала проводок. Расширение запрещает просматривать платежные документы на выплату зарплаты, так же не доступны регламентные отчеты в ПФР и ИФНС. Расширение предлагает готовые настроенные профили "Бухгалтер без зарплаты", "Только просмотр без зарплаты".

5700 руб.

27.05.2021    32519    202    89    

162

Автоподбор ролей для профилей и групп доступа в любых типовых базах 1С УТ 11, КА 2, ERP2, Розница 2/3, УНФ 16/3, БП 3, ЗУП 3 и подобных (УФ, Платформа 8.3.14+)

Инструменты администратора БД Роли и права 8.3.14 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Документооборот 1С:Зарплата и кадры государственного учреждения 3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Роли… Вы тратите много времени и сил на подбор ролей среди около 2400 в ERP или 1500 в Рознице 2, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 15.12.2023, версия 1.1.

12000 руб.

06.12.2023    2757    11    1    

30

Infostart УДиФ: Управление данными и формами

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

10000 руб.

10.11.2023    3246    10    1    

31

Роли для кладовщика

Логистика, склад и ТМЦ Роли и права Платформа 1С v8.3 Бухгалтерский учет Управление правами 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Расширение, которое позволяет использовать отдельные роли для доступа к складским документам, для доступа к документам раздела "Производство" и для доступа к документам раздела "Покупки".

2520 руб.

21.05.2019    1692151    551    192    

131

Расширение для разграничения доступа к контрагентам и обработка для группового назначения доступа для Бухгалтерии (RLS) 3.0.143.42

Роли и права Платформа 1С v8.3 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение предназначено для Бухгалтерии предприятия (версии ПРОФ и КОРП). Типовая конфигурация остается на поддержке. С помощью расширения менеджер по продажам будет иметь доступ к контрагентам и списку их документов только в случае, если он является для них ответственным. Пользователю с полными правами также доступна обработка «Назначение ответственных» для группового добавления/удаления ответственного в карточке контрагента. Есть версия данного расширения для клиентов Fresh - в магазине расширений (Fresh)

9360 руб.

14.09.2022    5732    6    4    

8

Универсальная система оповещений в базе или по почте по произвольным условиям, расписанием, ролям и пользователям (Расширение / конфигурация для платформ 8.3.6+, для ЛЮБЫХ баз)

Роли и права Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Платные (руб)

Данная система разработана как альтернатива стандартной системе напоминаний. Но имеет ряд существенных преимуществ: отображение в базе или с отправкой по почте, свое расписание, возможность фильтрации по ролям и пользователям, формирование своих запросов и макетов, шаблоны писем, работа в фоне. А также может блокировать работу пользователей при заданных условиях. Может работать в составе любой конфигурации. Имеется справка с описанием возможностей. (Обновление от 20.02.2024, версия 2.2, расширение)

18000 руб.

29.11.2019    24657    13    8    

33
Отзывы
1. nixel 1402 30.04.17 00:35 Сейчас в теме
Обычно под документы делается две роли - на чтение и на добавление/изменение. Можно настроить два отдельных профиля и группы доступа - на чтение без ограничений и на изменение с ограничением.
artbear; jerry_maguire; milkers; +3 Ответить
Остальные комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. nixel 1402 30.04.17 00:35 Сейчас в теме
Обычно под документы делается две роли - на чтение и на добавление/изменение. Можно настроить два отдельных профиля и группы доступа - на чтение без ограничений и на изменение с ограничением.
artbear; jerry_maguire; milkers; +3 Ответить
5. milkers 2859 03.05.17 12:17 Сейчас в теме
(1)(2)(3)(4) Никита Грызлов, видимо абсолютно прав, можно обойтись без изменения конфигурации. Достаточно создать два профиля . Один с правом доступа на чтение, второй с правом доступа на изменение. В обоих профилях все пользователи запрещены, исключения в группах доступа. Создается группа доступа с профилем на чтение, которая включает всех менеджеров. И по группе доступа на каждую группу менеджеров с профилем на изменение и исключениями для членов своей группы. На неделе все перепроверю и перепишу статью.
2. webester 26 30.04.17 18:26 Сейчас в теме
Заголовок: ЭтюдЫ по программированию. Разграничение прав.
Сажусь читать. Очень интересно. Начинаю читать и... после первого "этюда" статья кончается. Как то странно. Это как бы статья из серии статей?
3. 1st 241 03.05.17 09:32 Сейчас в теме
Как то однобоко ограничивается возможность изменения, "чужой" менеджер не сможет изменить документ только открыв форму, зато все остальные способы изменения документа, где не требуется открытие формы, не защищены. Также не контролируется проведение/отмена проведения.

Да и что Вам мешает в настройке роли перенести условия ограничения из "Чтение" в "Изменение", что по сути в корне решило бы проблему.
4. Romarius 15 03.05.17 11:52 Сейчас в теме
Если без "Ограничивать доступа на уровне записей", то все правильно сделал. Только нужно "ПриЗаписи" в модуле проверку также поставить
6. Raminus 03.05.17 12:20 Сейчас в теме
Профили лучше пользовать а если уж пилить конфу то лучше RLS использовать.
7. ineshyk 09.05.17 23:15 Сейчас в теме
RLS - зло.

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


Имхо, решить можно без доработки типовой БСП. Поставить ограничение, например по автору.
Посмотрите, как в демо БСП это реализовано в бизнес-процессах. Тут даже RLS можно не использовать
Team leader; gortol; +2 Ответить
8. Team leader 12 14.11.17 13:35 Сейчас в теме
(7) т.е. по самому себе а если в группе 5-7 человек, или автора можно брать из списка?
Оставьте свое сообщение