Защита ролей расширений, добавленных администраторам БСП 3

18.10.24

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

Решение задачи защиты добавленных администраторам ролей расширений через группу доступа БСП 3

Скачать файл

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

Наименование Бесплатно
Защита ролей расширений для администраторов БСП 3
.cfe 5,94Kb ver:1.2
101
101 Скачать бесплатно

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

 

Как БСП обновляет роли администраторов базы

БСП регулярно удаляет все лишние с ее точки зрения роли у администраторов базы даже если они назначены через группы и профили доступа. Рассмотрим логику обновления ролей администраторов в БСП 3.1.7

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

АдминистраторСистемы
ПолныеПрава
ОбщиеПрава

Подробнее о стандартных ролях БСП можно прочитать в ИТС

Таким образом, если в расширении будет такая роль, то она будет автоматически добавляться всем администраторам. Остальные роли расширения будут удаляться у всех администраторов. А мне нужно добавить ее только выбранным администраторам. Поэтому моему расширению приходится добавлять роль прямо в пользователя базы при начале сеанса и перезапускать сеанс. Через некоторое время БСП опять удаляет эту роль и все повторяется. Это доставляет ощутимые неудобства пользователю.

 

Решение проблемы

Я направил в 1С пожелание обеспечить в БСП возможность выборочного добавления ролей администраторам.

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

Расширение конфигурации состоит из одного расширения метода УправлениеДоступомСлужебный.ОбновитьРолиПользователейИБ():

&Перед("ОбновитьРолиПользователейИБ")
Процедура зршОбновитьРолиПользователейИБ(ОбновляемыеПользователиИБ, ПарольПользователяСервиса)
	МассивПользователей = Новый Массив;
	Для Каждого ОписаниеПользователя Из ОбновляемыеПользователиИБ Цикл
		МассивПользователей.Добавить(ОписаниеПользователя.Ключ);
	КонецЦикла;	
	СвойстваПользователей = ТекущиеСвойстваПользователей(МассивПользователей);
	НовыеРолиПользователей = СвойстваПользователей.РолиПользователей;
	Если СвойстваПользователей.Свойство("ИменаРолей") Тогда
		ИменаРолей = СвойстваПользователей.ИменаРолей;
		Для Каждого НоваяРольПользователей Из НовыеРолиПользователей Цикл
			НоваяРольПользователей.Роль = ИменаРолей[НоваяРольПользователей.РольСсылка];
		КонецЦикла;
	КонецЕсли;
	УдалитьОбновлениеПользователей = Новый Массив;
	Для Каждого ОписаниеПользователя Из ОбновляемыеПользователиИБ Цикл
		РолиДляУдаления = ОписаниеПользователя.Значение.РолиДляУдаления;
		Отбор = Новый Структура("Пользователь", ОписаниеПользователя.Значение.ПользовательСсылка);
		НовыеРоли = НовыеРолиПользователей.Скопировать(НовыеРолиПользователей.НайтиСтроки(Отбор), "Роль, РольСсылка");
		ОтменитьУдалениеРолей = Новый Массив;
		Для Каждого КлючИЗначение Из РолиДляУдаления Цикл
			Если ТипЗнч(КлючИЗначение.Значение) = Тип("ОбъектМетаданных") Тогда
				Роль = КлючИЗначение.Значение;
			Иначе
				Роль = Метаданные.Роли[КлючИЗначение.Ключ];
			КонецЕсли;
			Расширение = Роль.РасширениеКонфигурации();
			Если Истина
				И Расширение <> Неопределено 
				И НовыеРоли.Найти(Роль.Имя, "Роль") <> Неопределено
			Тогда
				ОтменитьУдалениеРолей.Добавить(КлючИЗначение.Ключ);
			КонецЕсли;
		КонецЦикла;
		Для Каждого Ключ Из ОтменитьУдалениеРолей Цикл
			РолиДляУдаления.Удалить(Ключ);
		КонецЦикла;
		Если РолиДляУдаления.Количество() = 0 И ОписаниеПользователя.Значение.РолиДляДобавления.Количество() = 0 Тогда
			УдалитьОбновлениеПользователей.Добавить(ОписаниеПользователя.Ключ);
		КонецЕсли;
	КонецЦикла;
	Для Каждого Ключ Из УдалитьОбновлениеПользователей Цикл
		ОбновляемыеПользователиИБ.Удалить(Ключ);
	КонецЦикла;
КонецПроцедуры

Проверено на БСП 3.1.1-10. Возможно будет работать и на других версиях 3.* . Буду постепенно обновлять эту информацию.

Проверено на следующих конфигурациях и релизах:

  • 1С:Библиотека стандартных подсистем, редакция 3.1, релизы 3.1.10.344, 3.1.1.91

См. также

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

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

12000 руб.

02.09.2020    169274    937    403    

905

Инструменты администратора БД Роли и права Системный администратор Программист Пользователь 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, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 18.09.2024, версия 1.2

18000 руб.

06.12.2023    10010    48    5    

78

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

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

5940 руб.

27.05.2021    38958    281    98    

215

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

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

15000 руб.

10.11.2023    11392    40    27    

66

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

Расширение для 1С:Бухгалтерия 3.0, которое позволяет использовать отдельные роли для доступа к складским документам, для доступа к документам раздела "Производство" и для доступа к документам раздела "Покупки".

4560 руб.

21.05.2019    1695306    575    194    

137

Ценообразование, анализ цен Роли и права Системный администратор Платформа 1С v8.3 Управление правами 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Расширение возможностей программы 1С УНФ. Функционал расширения - разграничение всевозможных прав пользователей и контроль при совершении различных действий.

3000 руб.

23.02.2018    59194    164    262    

156

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

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

19200 руб.

29.11.2019    25883    17    8    

37
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. fatman78 21 18.06.23 23:38 Сейчас в теме
Фото у публикации - прямо в точку! Запарили уже эти глюки с ролями в БСП.
unknown181538; itoptimum; +2 Ответить
2. ivanov660 4592 19.06.23 09:33 Сейчас в теме
1. Я так понимаю у разработчиков БСП такой концепт - есть администратор (все доступно) и пользователи (разные роли и ограничения).
Автор предлагает, что-то вроде создании третьей группы - псевдо администраторы (ранее был популярен термин - псевдо полные).
2. А создать набор ролей для группы пользователей (псевдо полные) не получается?
bocharovki; artbear; +2 Ответить
3. tormozit 7245 19.06.23 09:55 Сейчас в теме
(2)
Что есть "набор ролей"? В БСП есть справочник "группы доступа". Я создал в нем свой элемент, добавил туда (в профиль этой группы доступа) роль из своего расширения и включил в состав этой группы нужного администратора. Но БСП игнорирует членство администраторов в других группах доступа кроме предопределенной группы "Администраторы" и не добавляет моему администратору базы (пользователю ИБ) назначенную таким образом мою роль. А расширение из этой статьи позволяет нейтрализовать это особое поведение для администраторов (только в отношении ролей из расширений) - назначенная через группу доступа роль появится у администратора базы (пользователя ИБ).
4. artbear 1565 19.06.23 09:58 Сейчас в теме
(0) Сергей, спасибо, полезный механизм!
5. triviumfan 97 19.06.23 16:10 Сейчас в теме
Не на правах рекламы, но буквально недавно наткнулся на похожую статью.
Правда автор предлагает явно роли прописывать, а тут значительно сложнее, но универсальней вроде.
tormozit; +1 Ответить
7. tormozit 7245 19.06.23 23:50 Сейчас в теме
(5) Да. Там решается та же проблема и у меня решение более универсальное, т.к. подходит для любых расширений.
12. Nikola23 706 21.06.23 09:47 Сейчас в теме
(5) решение из "той" статьи - корректное. В рамках методологии работы с БСП и без костылей, которые предложил автор текущей статьи
6. PerlAmutor 155 19.06.23 21:14 Сейчас в теме
Жаль в типовых нет роли "ТолькоПросмотр", а то для всяких Аудиторов приходится городить ПолныеПрава, но только на Чтение.
ardn; triviumfan; +2 Ответить
8. Lobion 20.06.23 14:09 Сейчас в теме
(6) В типовых решениях не так сложно создать роль ТолькоПросмотр. Где-то тут рядом статья об этом лежит.

В Профиле групп доступа необходимо отметить галками следующие пункты, начинающиеся на следующие фразы:
• Базовые права
• Запуск
• Использование
• Отчеты
• Подсистема
• Просмотр
• Раздел
• Чтение

Также рекомендую добавить следующие роли (для сохранения в файл):
• Вывод на принтер, в файл, в буфер обмена
• Редактирование, отправка по почте, сохранение в файл печатных форм
• Сохранение данных пользователя
• Сохранение настроек печати объектов по умолчанию
9. ardn 682 20.06.23 16:22 Сейчас в теме
(6)
Да, кстати, роль "для аудитора" очень часто требуется
10. MVK80 20.06.23 19:44 Сейчас в теме
(6), А профиль групп доступа Аудитор не подходит? Поставляется в типовых (видел в ERP, ЗУП, БП).
11. PerlAmutor 155 20.06.23 20:24 Сейчас в теме
(10) А он похоже только для подсистемы "Зарплата и кадры"
13. Dragonim 142 28.06.23 07:40 Сейчас в теме
(6) Создаете пользователя с необходимыми правами, а после для него выставляете дату запрета изменения данных 31.12.3999.
14. Erne100 287 27.07.23 00:25 Сейчас в теме
(13) Дата запрета изменения данных действует не на всё. Даже не на все документы.
Например в КА 2.5 не действует на "Заказ клиента"
15. tormozit 7245 25.11.23 17:14 Сейчас в теме
Обновил файл. Исправил ошибку
Значение контролируемого свойства ОбъектРасширяемойКонфигурации у объекта Язык.Русский не совпадает со значением в расширяемой конфигурации
16. SmagOrg 16.10.24 03:28 Сейчас в теме
(15)
Гораздо проще внедрится в модуль
УправлениеДоступомСлужебныйПовтИсп.ОписаниеСтандартныхРолейРасширенийСеанса()
либо
Справочники.ПрофилиГруппДоступа.ПодготовленныеСтандартныеРолиРасширенийСеанса()
где отбираются роли расширений.
Либо вообще при наименовании ролей использовать окончания в наименовании ролей - ОбщиеПрава, ПолныеПрава, БазовыеПрава, БазовыеПраваВнешнихПользователей, АдминистраторСистемы и тогда никакого кода адаптации не требуется вообще.
17. tormozit 7245 18.10.24 23:36 Сейчас в теме
Обновлен файл до версии 1.2
Добавлена поддержка БСП 3.1.10
18. VGHOST 168 05.12.24 12:30 Сейчас в теме
Система управления доступом в 1С бестолкова и неповоротлива, и к сожалению далеко не только она. CFU на сотни метров и бесконечное перемалывание всех метаданных при самом минимальном обновлении. Язык концептуально слаб и в этом плане совершенно не развивается - зато легко осваивается любым выпускником детского сада, отчего имеем миллионы кодеров самого низкого качества и мегатонны такого же кода. Всё оправдывает прибыль...
Про борьбу с модальными окнами и бесконечные обработчики ожидания вообще вспоминать не хочется - превратили прикладной код в сплошной кал бэк. Не представляю как кодеры ещё могут держать в голове прикладную логику, когда нужно думать чего и куда ты отправил на обработку, и как это теперь выковыривать. Сделали как проще разрабам платформы, а остальные и так сховают - как всегда.

Если не разгонят зажравшуюся шайку технических стратегов из разрабов платформы - лет через 10 половина прикладников будет трудиться на платформе братьев Белорусов, которые поглядели на стратегию 1С и сделали выводы. Они-то не успели развести паразитарную экосистему, которой хрен скормишь радикальные изменения в ущерб прибыли...
AzurruzA; +1 Ответить
Оставьте свое сообщение