ПолныеПрава + ДобавленнаяРоль = ПолныеПрава

09.06.23

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

Проблема - при добавлении какой-либо своей добавленной Роли пользователю с полными правами, конфигурации на основе БСП самостоятельно удаляют эти добавленные роли. Есть решение - как с этим бороться и что делать.

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

Как с этим бороться. 

Ищем общий модуль УправлениеДоступомСлужебный, в нем  процедуру ОбновитьРолиПользователей, захватываем ее в расширение с Контролем, ищем в ней строку:

ДополнительныеРолиАдминистратора.Вставить("ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок", Истина);

и добавляем  свои 3 строчки 

#Вставка
ДополнительныеРолиАдминистратора.Вставить("ИМЯ_своей_роли", Истина);
#КонецВставки

И теперь конфигурация не будет прибивать у пользователя с Полными правами нашу добавленную роль.

Полные права исчезает роль

См. также

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

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

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

10000 руб.

02.09.2020    126506    685    389    

737

Автоподбор ролей для профилей и групп доступа в любых типовых базах 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.

14400 руб.

06.12.2023    3726    19    1    

41

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

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

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

10000 руб.

10.11.2023    4669    12    2    

38

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

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

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

5700 руб.

27.05.2021    33262    206    89    

166

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

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

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

2520 руб.

21.05.2019    1692657    554    192    

133

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

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

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

9360 руб.

14.09.2022    5866    7    4    

9

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

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

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

19200 руб.

29.11.2019    24821    14    8    

33
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. RustIG 1616 09.06.23 18:13 Сейчас в теме
вроде бы роль надо добавлять через профили доступа
2. Alxby 1145 09.06.23 20:40 Сейчас в теме
При использовании БСП правильнее все-таки делать не так. Надо в коде проверять не только доступность этой роли, но еще и доступность ПолныеПрава. А еще лучше использовать Пользователи.РолиДоступны() - там автоматически проверяется полноправность пользователя, и, в придачу, привилегированный режим.
Рамзес; itmind; ovasiliev; +3 Ответить
3. ixijixi 1801 09.06.23 21:33 Сейчас в теме
самостоятельно удаляют эти добавленные роли
И правильно удаляют, тамушта надо создать дополнительный профиль и уже туда добавлять свои роли. И в конфигураторе с ролями ничего не надо делать, только через интерфейс БСП.
improg; 0x00; +2 Ответить
4. Alxby 1145 09.06.23 22:00 Сейчас в теме
(3)Видимо автор имеет в виду, что при добавлении в новый дополнительный профиль роли "ПолныеПрава" и какой-нибудь другой роли, эта самая другая роль пропадает, остается только "ПолныеПрава". И это с точки зрения БСП абсолютно правильно - ПолныеПрава на то и полные, остальные не нужны.
5. Alxby 1145 09.06.23 22:03 Сейчас в теме
(4)Аналогично, если у пользователя УЖЕ есть полные права в основном профиле, то новая роль из другого профиля не добавится.
7. triviumfan 93 09.06.23 22:31 Сейчас в теме
(4) Видимо у него специфические роли, которые требуется добавить к Полным. Разработчик так решил, ему виднее.
6. triviumfan 93 09.06.23 22:18 Сейчас в теме
(3)
амушта надо создать дополнительный профиль и уже туда добавлять свои роли

очевидно, что у него дополнительная группа доступа и профиль, т.к.в типовой он и не сможет добавить ничего, ибо он заблокирован от изменений.
8. ixijixi 1801 11.06.23 00:45 Сейчас в теме
(6) Неочевидно. Автор пишет о конфигураторе, там по идее можно что хочешь куда хочешь добавить.
9. VPanin56 537 13.06.23 15:50 Сейчас в теме
Ну или я коряво описал или половина комментаторов не поняли происходящего и возникающей проблемы.

Пишем расширение.
Помимо основной роли расширения добавляем в него "Спец роль" ( например она что-то разрешит пользователю делать)
Пишем код, например в форме какого-нибудь документа и разрешаем пользователю со "Спец ролью" допустим редактировать реквизит.
Идем в предприятие (БП 3 например), создаем новый "профиль групп доступа" и добавим в него нашу "Спец роль"
Открываем любого пользователя у которого включен профиль "Администратор" ( по сути это две роли - Полные права и Администратор системы) и добавляем ему наш новый профиль со "СпецРолью"
Перезаходим в Предприятие и проверяем, наша доработка работает.

Через какое-то время или после некоторых манипуляций с Пользователями и правами наша доработка перестает работать.

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

БСП очищает все добавленные роли у Полноправных пользователей.
А суть в том что добавленная Спец роль должна работать независимо от наличия Полных прав.
(8)
Student1C; iLonmaks; AlbertZ; +3 Ответить
10. dhurricane 13.06.23 17:27 Сейчас в теме
(9) Хорошо, что Вы наконец описали реальную проблему. Плохо, что Вы не нашли корректное решение ее. На самом деле:
1. В дополнение к профилю "Администратор" добавлять свои профили не нужно.
2. Наличие роли следует проверять методом "Пользователи.РолиДоступны(...)"
https://its.1c.ru/db/v8std#content:737:hdoc
11. VPanin56 537 14.06.23 07:36 Сейчас в теме
(10) спасибо за наводку, посмотрю
12. VPanin56 537 14.06.23 07:48 Сейчас в теме
(10) посмотрел, на ИТСе красиво расписали, а по факту в конфигурации шляпа полная.

// Возвращает доступность хотя бы одной из указанных ролей или полноправность
// пользователя (текущего или указанного).
//
// Параметры:
//  ИменаРолей   - Строка - имена ролей, разделенные запятыми, доступность которых проверяется.
//
//  Пользователь - Неопределено - проверяется текущий пользователь ИБ.
//               - СправочникСсылка.Пользователи
//               - СправочникСсылка.ВнешниеПользователи - осуществляется
//                    поиск пользователя ИБ по уникальному идентификатору, заданному в реквизите.
//                    ИдентификаторПользователяИБ. Если пользователь ИБ не существует, возвращается Ложь.
//               - ПользовательИнформационнойБазы - проверяется указанный пользователь ИБ.
//
//  УчитыватьПривилегированныйРежим - Булево - если задано Истина, тогда для текущего пользователя
//                 функция возвращает Истина, когда установлен привилегированный режим.
//
// Возвращаемое значение:
//  Булево - Истина, если хотя бы одна из указанных ролей доступна
//           или функция ЭтоПолноправныйПользователь(Пользователь) возвращает Истина.
//
Функция РолиДоступны(ИменаРолей,
                     Пользователь = Неопределено,
                     УчитыватьПривилегированныйРежим = Истина) Экспорт
	
	РольАдминистраторСистемы = ЭтоПолноправныйПользователь(Пользователь, Истина, УчитыватьПривилегированныйРежим);
	РольПолныеПрава          = ЭтоПолноправныйПользователь(Пользователь, Ложь,   УчитыватьПривилегированныйРежим);
	
	Если РольАдминистраторСистемы И РольПолныеПрава Тогда
		Возврат Истина;
	КонецЕсли;
	
	МассивИменРолей = СтрРазделить(ИменаРолей, ",", Ложь);
	
	ТребуетсяРольАдминистраторСистемы = Ложь;
	НазначениеРолей = ПользователиСлужебныйПовтИсп.НазначениеРолей();
	
	Для Каждого ИмяРоли Из МассивИменРолей Цикл
		Если НазначениеРолей.ТолькоДляАдминистраторовСистемы.Получить(ИмяРоли) <> Неопределено Тогда
			ТребуетсяРольАдминистраторСистемы = Истина;
			Прервать;
		КонецЕсли;
	КонецЦикла;
	
	Если РольАдминистраторСистемы И    ТребуетсяРольАдминистраторСистемы
	 Или РольПолныеПрава          И Не ТребуетсяРольАдминистраторСистемы Тогда
		Возврат Истина;
	КонецЕсли;
	
	УстановитьПривилегированныйРежим(Истина);
	СвойстваПользователяИБ = СвойстваПроверяемогоПользователяИБ(Пользователь);
	
	Если СвойстваПользователяИБ = Неопределено Тогда
		Возврат Ложь;
	КонецЕсли;
	
	Если СвойстваПользователяИБ.УказанТекущийПользовательИБ Тогда
		Для Каждого ИмяРоли Из МассивИменРолей Цикл
			//@skip-check using-isinrole
			Если РольДоступна(СокрЛП(ИмяРоли)) Тогда // Не заменять на РолиДоступны.
				Возврат Истина;
			КонецЕсли;
		КонецЦикла;
	Иначе
		Роли = СвойстваПользователяИБ.ПользовательИБ.Роли;
		Для Каждого ИмяРоли Из МассивИменРолей Цикл
			Если Роли.Содержит(Метаданные.Роли.Найти(СокрЛП(ИмяРоли))) Тогда
				Возврат Истина;
			КонецЕсли;
		КонецЦикла;
	КонецЕсли;
	
	Возврат Ложь;
	
КонецФункции
Показать


Внимание вопрос - Что вернет Функция Пользователи.РолиДоступны("МояНоваяРоль") если это полноправный пользователь ?
А предположим у меня таких пользователей несколько но "МояНоваяРоль" назначена и должна работать только у одного конкретного пользователя
13. svezr 5 14.06.23 09:19 Сейчас в теме
Если требуется доступ или администраторам, или кому-то без полных прав, то один из вариантов - в моменте проверки использовать
Пользователи.ЭтоПолноправныйПользователь() ИЛИ Пользователи.РолиДоступны()

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

(12)
15. VPanin56 537 14.06.23 13:45 Сейчас в теме
(13) Проблема не в том как и чем проверить есть или нет "МояНоваяРоль" у пользователя ,а в том что если этот пользователь, кому назначили "МояНоваяРоль" оказался Полноправным пользователем, то БСП сама очистит у него все роли кроме Администратор системы и Полные права и наша дописка перестает работать.
Потому что в ней проверка строится не на Полные права а на "МояНоваяРоль", потому что так задумал инициатор задачи.
Потому что Полные права имеют 3 пользователя Иванов, Петров и Сидоров, но определенные действия с документом разрешены только Иванову.
uralkit@uralkit.ru; shu_vol; AlbertZ; Anchoret; +4 Ответить
17. svezr 5 14.06.23 15:02 Сейчас в теме
(15)
Я описал рабочий способ, которым неоднократно пользовался: копируется метод УправлениеДоступом.ЕстьРоль() в расширение, изменяется имя, из него убирается проверка на полноправного пользователя. Роль добавляется в профиль. Метод вызывается и в любом случае программно показывает наличие роли (вне зависимости от полноправности), поскольку используется анализ справочника (и пр) группы доступа. БСП Роли у пользователя очистит, но описанный метод вернёт все корректно - потому что принадлежность роли прописана в справочнике профиля групп доступа. Посмотрите код метода.

Если же необходима не программная проверка а в принципе сохранение роли (чтобы БСП не почистил) - то это, конечно, не поможет. Как-то видел модифицированный код в конфигурации, где закомментировали кусок с очисткой ролей полноправного пользователя.
14. dhurricane 14.06.23 12:47 Сейчас в теме
(12)
А предположим у меня таких пользователей несколько но "МояНоваяРоль" назначена и должна работать только у одного конкретного пользователя
С точки зрения разработчиков БСП у Ваших пользователей не должно быть Администраторов с разнообразным составном прав доступа. Так что это не "шляпа", это типичный сценарий проверки ролей у пользователя - администратор должен обладать всеми правами.

Ваш сценарий я тоже встречал. Крайне редко, конечно, но было 1-2 раза. Использовал прием из (13) - создавал аналог функции "УправлениеДоступом.ЕстьРоль".
16. VPanin56 537 14.06.23 13:46 Сейчас в теме
(14) ответил выше, думаю понятнее станет что проблема не чем проверить а как сохранить назначенную роль
18. dhurricane 14.06.23 16:32 Сейчас в теме
(16) Во-первых, а зачем собственно ее сохранять, эту роль? Во-вторых, Ваш подход к правам Иванова, Петрова и Сидорова противоречит стандартам разработки. Поэтому-то такая проверка, как в Вашем примере, и не поддерживается БСП.
https://its.1c.ru/db/v8std#content:689:hdoc
19. tormozit 7143 19.06.23 23:43 Сейчас в теме
Сделал более универсальное решение той же проблемы https://infostart.ru/1c/tools/1882890/
uralkit@uralkit.ru; Student1C; +2 Ответить
20. VPanin56 537 21.06.23 09:03 Сейчас в теме
(19) Согласен что ваше решение более универсальное и "правильное"

Но у меня не было времени изобретать "самокат", вставил "костыли" и побежали дальше ;)

Может быть когда-нибудь я и перепишу этот костыль, хотя конкретно эта добавленная Роль была придумана для конкретной задачи и конкретного пользователя. Есть вероятность что продолжения у этого решения нет и универсальности оно не потребует.
21. st8899 06.10.23 14:59 Сейчас в теме
(20)
вот у меня такая же проблема.
https://forum.infostart.ru/forum9/topic304301/?result#postform

Только права скидывает и у юзеров, у которых нету галок Полные права, Администратор и пр. При этом в предприятии профиль есть и у юзера он активный, но расширение ему не доступно (пока не вернешь галочки в конфигураторе)
Какой то лютый баг платформы или БСП последних версий... Как решить - пока не знаю...(
22. &rew 49 15.03.24 05:59 Сейчас в теме
(21)Если пользователь не полноправный, пишите свой регистр сведений в расширении, добавляете туда пользователей (или физ. лиц пользователей), которым что-то можно (или нельзя). В вашем расширении проверяете не права, а наличие пользователя в этом регистре. Всё. Я так это победил
Оставьте свое сообщение