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

04.09.14

Администрирование - Информационная безопасность

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


Как было раньше( в обычном приложении):


Есть документ. Есть Роли - ПолныеПрава, ДокументНетДоступа, ДокументТолькоЧтение, ДокументЧтениеИРедактирование. В конфигураторе(аналогичный механизм в реж предприятия) вы выставляете пользователям эти роли и у них появляются соответствующие права доступа на документ. Все просто и скучно и даже зевать хочется.



С введением управляемого приложения разработчики решили усложнить(читается как расширить) настройки прав доступа. Теперь:
Вводная та же. Чтобы дать пользователю какие-то права на документ - сначала вам необходимо создать элемент справочника Профили групп доступа. Это некий агрегирующий(суммирующий значения) объект, который объединяет роли в группы ролей. Теоритически таких профилей можно создать сколько угодно много с различным набором ролей( N*(n-1), где N - количество ролей), но на практике количество профилей определяется количеством должностных обязанностей пользователей в организации и их гораздо меньше, чем ролей.
Создаем профили Бесправный(с ролью ДокументНетДоступа), Аудитор(с ролью ДокументТолькоЧтение), Бухгалтер(с ролью ДокументЧтениеИРедактирование).
Чтобы "привязать" эти профили к пользователям - нужно создать элементы справочника ГруппыДоступа. В типовых они создаются автоматически, когда вы отмечаете галочками профили для пользователя. Этот справочник соединяет профиль и пользователя(или нескольких пользователей).
При записи этого элемента справочника система автоматически добавляет роли (из профиля) в роли пользователя. Поэтому не стоит напрямую редактировать роли в конфигураторе, как раньше - при редактировании прав в Предприятии все роли в конфигураторе будут обновлены на роли из профилей пользователя. Кроме того, будет наблюдаться явное противоречение между набором профилей с ролями и ролями, установленными в конфигураторе.




Как хранятся роли в Профиле групп доступа, спросите вы. Ведь роли - это объекты МД, это не ссылочные типы. Отвечаю - для этого(и не только) разработчики создали служебный справочник ИдентификаторыОбъектовМетаданных, в котором хранится( в иерархии!) имена, синонимы, значения пустых ссылок всех объектов МД. Если вы хотите создать Профиль программно и добавить в него роль, то код примерно будет таким:






	РодительРоли = Справочники.ИдентификаторыОбъектовМетаданных.НайтиПоНаименованию("Роли");//ничего страшного искать по наименованию, 

	//справочник - служебный и непосредственного редактрования в нем нет

	ИдентификаторМоейРоли = Справочники.ИдентификаторыОбъектовМетаданных.НайтиПоРеквизиту("Имя","МояРоль",РодительРоли);

	Если ЗначениеЗаполнено(ИдентификаторМоейРоли) Тогда

	НайденныйИдентификаторМоейРоли = МойПрофиль.Роли.Найти(ИдентификаторМоейРоли );

	Если НайденныйИдентификаторМоейРоли= неопределено тогда

	НовСтрока = МойПрофиль.Роли.Добавить();

	НовСтрока.Роль = ИдентификаторМоейРоли;

	КонецЕсли;

	КонецЕсли;






 Но если мы добавили новую роль в конфигурации, то как она попадет в справочник? Хороший вопрос. У справочника ИдентификаторыОбъектовМетаданных есть метод, позволяющий обновлять его данные. это:


Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника(ИСТИНА,ЛОЖЬ,ЛОЖЬ);//ЕстьИзменения, ЕстьУдаленные, ТолькоПроверка 


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


Отлично. Роль добавили, идентификаторы обновили.


Но обратная связь не работает - вы в режиме предприятия назначили пользователю профиль( с созданием группы доступа), а роль у пользователя в конфигураторе не добавилась! Что делать?
За синхронизацию ролей/профилей отвечает константа ПараметрыРаботыПользователей. Если роли не обновляются в конфигураторе, следует обновить её значение:


Константы.ПараметрыРаботыПользователей.СоздатьМенеджерЗначения().ОбновитьОбщиеПараметры();


Хорошо, скажите вы. А как быть, если я хочу создать группы доступа программно? Да не вопрос. Единственное ограничение - не допускаются дубли связок Профиль-Пользоваль в группах доступа. Примерный код будет таким:





	//МойПрофиль - профиль, который мы хотим добавить пользователю МойПользователь

	Если МойПрофиль = Справочники.ПрофилиГруппДоступа.Администратор Тогда // если мы хотим пользователю дать роль Администратора, 

	//то нельзя создавать новую группу доступа, надо редактировать предопределенную Администраторы

	ГруппаДоступаАдм = Справочники.ГруппыДоступа.Администраторы;

	Если ГруппаДоступаАдм.Пользователи.Найти(МойПользователь) = неопределено Тогда

	ГруппаДоступаАдмОб= ГруппаДоступаАдм.ПолучитьОбъект();

	НовСтрока = ГруппаДоступаАдмОб.Пользователи.Добавить();

	НовСтрока.Пользователь = МойПользователь;

	ГруппаДоступаАдмОб.Записать();

	КонецЕсли;

	Иначе // все прочие профили, кроме Администратора

	Запрос = новый Запрос;

	Запрос.Текст = "ВЫБРАТЬ

	|ГруппыДоступа.Ссылка

	|ИЗ

	|Справочник.ГруппыДоступа КАК ГруппыДоступа

	|ГДЕ

	|ГруппыДоступа.Профиль = &Профиль

	|И (ГруппыДоступа.Пользователь = &Пользователь

	|ИЛИ ГруппыДоступа.Пользователи.Пользователь = &Пользователь)

	|И НЕ ГруппыДоступа.ПометкаУдаления ";

	Запрос.УстановитьПараметр("Профиль",МойПрофиль);   

	Запрос.УстановитьПараметр("Пользователь",МойПользователь);

	Выборка = Запрос.Выполнить().Выбрать();

	Если НЕ Выборка.Следующий() тогда //нет такого профиля, надо создать

	МояГруппаДоступаОб = справочники.ГруппыДоступа.СоздатьЭлемент();

	МояГруппаДоступаОб.Наименование = Строка(МойПрофиль);

	МояГруппаДоступаОб.Пользователь = мойПользователь;

	Нов = МояГруппаДоступаОб.Пользователи.Добавить();

	Нов.Пользователь = МойПользователь;

	МояГруппаДоступаОб.Профиль = МойПрофиль;

	МояГруппаДоступаОб.Записать();

	КонецЕсли; //Нет такого профиля

	КонецЕсли;//профиль Администратор









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




Раз уж пошли по программному пути, вот код, который добавляет пользователя в справочник Пользователи и ПользователяИБ в ПользователиИнформационнойБазы:


	ПользовательИБ = ПользователиИнформационнойБазы.СоздатьПользователя();

	ПользовательИБ.имя = "Иванов";

	ПользовательИБ.ПолноеИмя = "Иванов Иван Иванович";

	ПользовательИБ.АутентификацияСтандартная = ИСТИНА;

	ПользовательИБ.Пароль = "";

	ПользовательИБ.записать();

	Пользователь = Справочники.Пользователи.НайтиПоРеквизиту("ИдентификаторПользователяИБ",ПользовательИБ.УникальныйИдентификатор));

	если Пользователь.Наименование = "" Тогда

	//создаем пользователя 

	ПользовательОб = Справочники.Пользователи.СоздатьЭлемент();

	ОписаниеПользователяИБ = Пользователи.НовоеОписаниеПользователяИБ();

	ЗаполнитьЗначенияСвойств(ОписаниеПользователяИБ,ПользовательИБ);

	ОписаниеПользователяИБ.УникальныйИдентификатор =  ПользовательИБ.УникальныйИдентификатор;

	ПользовательОб.Наименование = ОписаниеПользователяИБ.ПолноеИмя; 

	ОписаниеПользователяИБ.Вставить("Действие","Записать");

	ПользовательОб.ДополнительныеСвойства.Вставить("ОписаниеПользователяИБ",ОписаниеПользователяИБ);

	ПользовательОб.записать();

	 КонецЕсли;













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


Пока вроде все. Если будет что-то еще, буду дополнять.


Права доступа Профили групп доступа Группы доступа роли права

См. также

Информационная безопасность Системный администратор Программист Платные (руб)

AUTO VPN (portable) - автоматизация подключения пользователей к удаленному рабочему месту или сети посредством создания автоматического VPN (L2TP или L2TP/IPSEC и т.д.) подключения без ввода настроек пользователем (с возможностью скрытия этих настроек от пользователя). Программа автоматически выполняет подключение к VPN серверу и после успешного коннекта , если необходимо, подключение к серверу удаленных рабочих столов (RDP).

1200 руб.

24.03.2020    15364    25    32    

35

Информационная безопасность Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Предлагается внешняя обработка для просмотра данных в формате ASN1. Есть 2 режима: загрузка из бинарного формата и из BASE64. Реализована функция извлечения всех сертификатов, которые можно найти в ASN1-файле. В дополнении к этому продукту предлагается методическая помощь по вопросам, связанным с технической реализацией криптографии и шифрования в 1С.

2400 руб.

29.08.2016    30053    9    1    

10

Информационная безопасность Пароли Платформа 1С v8.3 Бесплатно (free)

Все еще храните пароли в базе? Тогда мы идем к вам! Безопасное и надежное хранение секретов. JWT авторизация. Удобный интерфейс. Демо конфигурация. Бесплатно.

30.05.2024    6209    kamisov    17    

60

Информационная безопасность Программист Платформа 1С v8.3 Бесплатно (free)

Рассмотрим в статье более подробную и последовательную настройку аутентификации в 1С с использованием распространенной технологии JWT, которая пришла в программу в платформе версии 8.3.21.1302.

27.02.2024    7313    PROSTO-1C    10    

39

Информационная безопасность Программист Платформа 1С v8.3 Абонемент ($m)

Интеграционные решения стали неотъемлемой частью нашей жизни. Правилом хорошего тона в современных приложениях является не давать интегратору доступ к чувствительным данным. Device flow позволяет аутентифицировать пользователя, не показывая приложению чувствительные данные (например: логин и пароль)<br> Рассмотрим Device flow аутентификацию, в приложении, на примере OpenID провайдера Yandex.

1 стартмани

27.10.2023    2409    platonov.e    1    

23

Информационная безопасность Системный администратор Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

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

5 стартмани

24.04.2023    6252    20    soulner    8    

32

Информационная безопасность Системный администратор Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 Абонемент ($m)

1С, начиная с версии платформы 8.3.21, добавили в систему возможность двойной аутентификации. Как это работает: в пользователе информационной базы появилось свойство «Аутентификация токеном доступа» (АутентификацияТокеномДоступа во встроенном языке), если установить этот признак и осуществить ряд манипуляций на встроенном языке, то появляется возможность при аутентификации отправлять HTTP запросы, которые и реализуют этот самый второй фактор. Данное расширение позволяет организовать двухфакторную аутентификацию с помощью электронной почты или мессенджера Telegram.

2 стартмани

08.12.2022    7278    50    Silenser    12    

24
Вознаграждение за ответ
Показать полностью
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. TMV 14 04.09.14 15:15 Сейчас в теме
(0) Оформление бы поправили, а так любопытно.
nightowl5; ruddanil; smewinka; drygina; Anchoret; user777757; newgluk; +7 Ответить
2. gull22 103 10.09.14 10:13 Сейчас в теме
Спасибо за информацию. Плюс
3. Yimaida 38 10.09.14 12:36 Сейчас в теме
Несмотря на небольшой объем, статья достаточно содержательная. Картинки добавили бы жизни к оформлению, так же как и раскраска кода. А оформление примера кода в обработку принесло бы автору sm.
В любом случае +.
4. alyaev.a.v 10.09.14 11:50 Сейчас в теме
Инфа полезная, но оформить бы.
5. Yurcha62 78 10.09.14 08:26 Сейчас в теме
А воспользоваться обработкой "ИнструментыРазработчикаОбновлениеВспомогательныхДанных" из БСП не судьба? Зачем изобретать велосипед?
6. Stim213 416 10.09.14 12:44 Сейчас в теме
(5) Yurcha62, Обработка, безусловно, полезная, и ею стоит пользоваться, как многими другими, но только после того, когда знаешь, что она делает и зачем. В данной небольшой статье я и постарался принести это знание.
Рамзес; Jreil; madvaska; user1311038; user659168_xec8787; user777757; mikeA; CyberCerber; monkbest; +9 Ответить
7. meganibler 75 10.09.14 13:55 Сейчас в теме
Спасибо за статью.
Недавно потратил полдня, чтобы выяснить ровно то, что здесь описано.

Теперь, при добавлении новых объектов план действий такой:
1) Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника();
2) Константы.ПараметрыРаботыПользователей.СоздатьМенеджерЗначения().ОбновитьОбщиеПараметры(ЕстьИзменения, ТолькоПроверка);
в УТ11 можно и так:
ПользователиСлужебный.ОбновитьПараметрыРаботыПользователей(ЕстьТекущиеИзменения, ТолькоПроверка);
3) Редактировать профили групп пользователей

ivan453; Garik8866; JohnyDeath; chmv; ddd_l; +5 Ответить
10. Поручик 4692 17.09.14 11:50 Сейчас в теме
(7) А ещё связки этих процедур срабатывают при изменении версии конфигурации.
VasMart; drygina; +2 Ответить
11. AlexandrIII 01.11.14 13:56 Сейчас в теме
(7) А ещё связки этих процедур срабатывают при изменении версии конфигурации.


На ИТС об этом пишут в доках по внедрению/разработке БСП:

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

Соответственно в процессе разработки необходимо учитывать, что для «вступиления в силу» перечисленных изменений необходим запуск обработчиков (перед проверкой текущей разработки).

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

user811769; drygina; +2 Ответить
16. Spacer 363 05.01.16 14:27 Сейчас в теме
(7) meganibler, что-то мне это не помогает.:(
Добавил свою роль, обновил справочник "ИдентификаторыОбъектовМетаданных",
обновил константу "ПараметрыРаботыПользователей", отредактировал профили групп доступа,
а роль у пользователя так и не появилась.
and60; amatoravg; solary; real_MaxA; mm_84; +5 Ответить
20. Gureev 17.11.16 23:31 Сейчас в теме
(16) Spacer,
Добавил свою роль, обновил справочник "ИдентификаторыОбъектовМетаданных",
обновил константу "ПараметрыРаботыПользователей", отредактировал профили групп доступа,
а роль у пользователя так и не появилась.


надо пометить группу доступа на удаление, и снять пометку.
Так бывает когда группы созданы до того, как выполнены эти действия.
Student1C; cheiser1982; boardone; Orlando Skibraves; +4 Ответить
8. monkbest 114 10.09.14 15:07 Сейчас в теме
Отличная статья. Жаль что в 3.0ных решениях есть еще грабли. Недавно на них наступил на примере ЗУП 3.0.
Коротко следующее:
Я хотел дать пользователю права на один отчет. Все оказалось не так просто.

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

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

И вообще в ЗУП 3.0 более 140 ролей типовых - они в 1С совсем охренели.
1giga; madvaska; Tolpinski; Garik8866; freeek; AndreykO; CratosX; nikolka75; ZVN; mikeA; Ksho; tvark; Дмитрий74Чел; +13 Ответить
12. trumanl 12 25.11.14 17:10 Сейчас в теме
(8) monkbest, в ЗУП 3.0 если быть точным, 243 роли !!!! это кошмар какой-то.
на каждый "пшик" - роль.
13. monkbest 114 26.11.14 11:16 Сейчас в теме
(12) trumanl, видимо, от релиза к релизу их число растет:)
user717534; +1 Ответить
42. user1718973 23.06.22 04:12 Сейчас в теме
(8)Добрый день! подскажите, пожалуйста, где правили код, чтобы кадровый перевод открылся?
9. Lapitskiy 1061 12.09.14 04:31 Сейчас в теме
Вот здесь я подробно с картинаками описывал: статья про УТ 11
14. ZhokhovM 755 25.02.15 15:58 Сейчас в теме
Минус за плохое оформление.
15. stas1kbob 60 20.03.15 15:52 Сейчас в теме
статья хорошая! будет ли обновление? 1сники что- то заново нагородили в ролях
17. chmv 11.02.16 09:59 Сейчас в теме
и мне не помогает
amatoravg; +1 Ответить
18. Strange Device 307 14.08.16 21:18 Сейчас в теме
При работе с правами, похоже, есть еще одна хитрость, если у пользователя установлены Полные права, а Вы хотите добавить права, которые будут работать отдельно, скажем, на новые реквизиты конфигурации хотелось бы задавать права полностью отдельно, то бишь независимо от наличия или отсутствия полных прав у пользователя, то оказывается, что установка галки в базе данных не изменяет доступность данной дополнительной роли в конфигураторе :-( , то бишь приходится либо самому устанавливать эту галку в конфигураторе, либо отказываться от таких "дополнительных" прав. При этом, если полных прав у пользователя нет, то все работает нормально. Данное замечание актуально не только для дополнительных прав, но и для типовых... Идея, конечно понятна, зачем нужна куча галок, если достаточно одной "ПолныеПрава", но честно сказать такой вариант несколько затрудняет администрирование дополнительных объектов...
bestsader; TerveRus; freeek; AndreykO; Дмитрий_кдс; doda666; HLighter2; onetone; Асов; CratosX; amatoravg; Yakud3a; solary; nbeliaev; svilsa; +15 Ответить
21. solary 186 31.01.17 08:21 Сейчас в теме
(18)
установлены Полные права, а Вы хотите добавить права, которые будут работать отдельно, скажем, на новые реквизиты конфигурации хотелось бы задавать права полностью отдельно, то бишь независимо от наличия или отсутствия полных прав у пользователя, то оказывается, что установка галки в базе данных не изменяет доступность данной дополнительной роли в конфигураторе :-( , то бишь приходится либо самому устанавливать эту галку в конфигураторе, либо отказываться от таких "дополнительных" прав. При этом, если полных прав у пользователя нет, то все работает нормально. Данное замечание актуально не только для дополнительных прав, но и для типовых... Идея, конечно понятна, зачем нужна куча галок, если достаточно одной "ПолныеПрава", но честно сказать такой вариант несколько затрудняет админист


Спасибо! А я всю голову сломал, что не так.
31. 7OH 70 04.09.19 14:29 Сейчас в теме
(18) Да, если есть ПолныеПрава - другие удаляются при записи профилей или групп.
Как это красиво обойти БЕЗ добавления в коде "ИЛИ РольДоступна("МоиПолныеПрава")" ?
32. TerveRus 11.11.19 13:48 Сейчас в теме
(31) так роль не будет доступна, в конфигураторе все галки с доп ролей снимаются((
Замучился уже ставить галки на место.
Видимо придется убирать полные права у всех, но у администратора то они должны быть, получается все равно галка у доп роли будет слетать?((
Может найти где-то это место где удаляются эти галки при записи профиля ролей?

Вот нашел тут решение:
Создать группу ролей по нужной роли и в коде РольДоступна("МояРоль") менять на РольДоступнаПоГруппе("МояРоль")
38. muzzombie 23.12.20 12:45 Сейчас в теме
(32) Здравствуйте! Спасибо за решение! А в чем может быть причина, если 1С 8.3 понимает оператор "РольДоступна", но знать не знает про "РольДоступнаПоГруппе"? Выдает ошибку.
39. 7OH 70 23.12.20 12:48 Сейчас в теме
(38) автор поста забыл указать видимо, что эту функцию ещё надо создать где-то в общем модуле с галкой глобальный
19. nadegda-tere 06.10.16 07:33 Сейчас в теме
Обновление константы:
Константы.ПараметрыРаботыПользователей.СоздатьМенеджерЗначения().ОбновитьОбщиеПараметры();

Отрабатывает только при установке монопольного режима. Поэтому чтобы собственные роли отработали (встали галочки у ролей в конфигураторе) при создании пользователя потребуется зайти в монопольном режиме.
Как этого можно избежать?
22. ya.Avoronov 115 13.02.17 10:57 Сейчас в теме
Очень полезная статья, спасибо!
23. fokin 11.05.17 18:18 Сейчас в теме
просто мрак
из простого и доступного метода сделать дикие грабли

а за статью спасибо, помогло
Stivens; Асов; +2 Ответить
24. uno-c 264 28.06.17 20:26 Сейчас в теме
Теоритически таких профилей можно создать сколько угодно много с различным набором ролей( N*(n-1), где N - количество ролей)

Теоретически количество профилей с различным набором ролей =2^N, в т.ч. однин пустой профиль (без ролей)
25. psy_sln 19.07.17 10:12 Сейчас в теме
Спасибо за статью, роль добавил, взлетело. Но есть такой вопрос: моя новая роль должна открывать доступ к одному справочнику с использованием RLS, т.е. хотелось бы заполнять вкладку "Ограничения доступа" для моего справочника, но не понятно как будут передаваться значения от туда в шаблоны RLS... Буду рад любой информации по данной теме :)
26. servisbox 15 28.11.17 08:31 Сейчас в теме
Отлично, благодарю. Инфа то, что нужно, второй день ковырял сам, пока не наткнулся на Вас.
27. Sergoninfostarru 2 07.04.18 01:09 Сейчас в теме
Хорошая статья. А как поступать с разными доступами до ролей для пользователя, созданного в Конфигураторе и пользователя, созданного в Предприятии? На примере УТ : в Конфигураторе - до 40 доступных ролей (Администратор системы, ..., Чтение электронных документов) можно выбрать для пользователя, созданного в Конфигураторе, а для Предприятия - можно выбрать только группу доступа - Администраторы, остальные группы нужно создавать самостоятельно.
Так получается, что сначала необходимо создать пользователя в Предприятии, а потом зайти в Конфигуратор и настроить доступные роли пользователя? Но тогда возникает большая проблема : если в Предприятии пользователя редактировали (например, изменили имя), то все настроенные доступные роли в Конфигураторе слетают и остается только "Администратор системы".
28. Stim213 416 07.04.18 08:36 Сейчас в теме
(27)
Лучший Отдать $m + – Ответить
27. Сергей (Sergoninfostarru) 2 07.04.18 01:09
Хорошая статья. А как поступать с разными доступами до ролей для пользователя, созданного в Конфигураторе и пользователя, созданного в Предприятии? На примере УТ : в Конфигураторе - до 40 доступных ролей (Администратор системы, ..., Чтение электронных документов) можно выбрать для пользователя, созданного в Конфигураторе, а для Предприятия - можно выбрать только группу доступа - Администраторы, остальные группы нужно создавать самостоятельно.
Так получается, что сначала необходимо создать пользователя в Предприятии, а потом зайти в Конфигуратор и настроить доступные роли пользователя? Но тогда возникает большая проблема : если в Предприятии пользователя редактировали (например, изменили имя), то все настроенные доступные роли в Конфигураторе слетают и остается только "Администратор системы".


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

1С считает, что раз у пользователя есть полные права(Администратор системы), то никаких других прав ему давать не следует. И это в общем-то логично. Но вы хотите для пользователей с полными правами вести раздельный управленческий учет.
Вариант: в Предприятии назначаете пользователю Полные права+ваши управленческие роли.И т.к. в Конфигураторе у пользователя будет только Полные права, заменяете свой код с РольДоступна("МояУправленческаяРоль") на функцию, которая определяет, есть ли для текущего пользователя группа с этой ролью РольДоступнаПоГруппе("МояУправленческаяРоль") .
TerveRus; +1 Ответить
33. TerveRus 11.11.19 13:50 Сейчас в теме
(28)
РольДоступнаПоГруппе("МояУправленческаяРоль")

Спасибо! Всю голову сломал уже с этими слетающими галками у пользователей с полными правами!
34. TerveRus 11.11.19 14:50 Сейчас в теме
(28) Стало понятнее, но вот только в УТ 11.4 не ничего такого типа "РольДоступнаПоГруппе"
Имелось ввиду, что нужно самому такую функцию писать?
muzzombie; +1 Ответить
37. muzzombie 23.12.20 12:44 Сейчас в теме
(28)
РольДоступнаПоГруппе

Здравствуйте! Спасибо за решение! А в чем может быть причина, если 1С 8.3 понимает оператор "РольДоступна", но знать не знает про "РольДоступнаПоГруппе"? Выдает ошибку.
29. johnnyshut23 75 30.04.18 21:55 Сейчас в теме
Хорошая публикация, спасибо! воспользуюсь!
30. leksv 12.03.19 16:00 Сейчас в теме
РодительРоли = Справочники.ИдентификаторыОбъектовМетаданных.НайтиПоНаименованию("Роли");//ничего страшного искать по наименованию,

//справочник - служебный и непосредственного редактрования в нем нет
ИдентификаторМоейРоли = Справочники.ИдентификаторыОбъектовМетаданных.НайтиПоРеквизиту("Имя","МояРоль",РодительРоли);

Почему то ошибка выходит при поиске по реквизиту. "Имя" = "БазовыеПрава"; "МояРоль" = "Базовые права" (тип ОбъектМетаданных)
35. catlina 11.03.20 02:11 Сейчас в теме
Не нашла в бухгалтерии 3.0.75.109 константы ПараметрыРаботыПользователей. Что-то поменялось?
40. Xershi 1555 16.03.21 16:44 Сейчас в теме
(35) код из старой базы:
// Процедура обновляет общие параметры работы пользователей при изменении конфигурации.
// 
// Параметры:
//  ЕстьИзменения - Булево (возвращаемое значение) - если производилась запись,
//                  устанавливается Истина, иначе не изменяется.
//
Процедура ОбновитьОбщиеПараметры(ЕстьИзменения = Неопределено, ТолькоПроверка = Ложь) Экспорт
	
	УстановитьПривилегированныйРежим(Истина);
	
	Если ТолькоПроверка ИЛИ МонопольныйРежим() Тогда
		СнятьМонопольныйРежим = Ложь;
	Иначе
		СнятьМонопольныйРежим = Истина;
		УстановитьМонопольныйРежим(Истина);
	КонецЕсли;
	
	НазначениеРолей = НазначениеРолей();
	ПроверитьНазначениеРолей(НазначениеРолей);
	
	ВсеРоли = ВсеРоли();
	
	Блокировка = Новый БлокировкаДанных;
	ЭлементБлокировки = Блокировка.Добавить("Константа.ПараметрыРаботыПользователей");
	ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
	
	НачатьТранзакцию();
	Попытка
		Блокировка.Заблокировать();
		
		Параметры = Неопределено;
		ЕстьТекущиеИзменения = Ложь;
		СтандартныеПодсистемыСервер.ОбновитьПараметрРаботыПрограммы("ПараметрыРаботыПользователей",
			"НазначениеРолей", НазначениеРолей, ЕстьТекущиеИзменения, ТолькоПроверка, Параметры);
		
		Если Не (ТолькоПроверка И ЕстьТекущиеИзменения) Тогда
			СтандартныеПодсистемыСервер.ОбновитьПараметрРаботыПрограммы("ПараметрыРаботыПользователей",
				"ВсеРоли", ВсеРоли, ЕстьТекущиеИзменения, ТолькоПроверка, Параметры);
		КонецЕсли;
		
		ЗафиксироватьТранзакцию();
	Исключение
		ОтменитьТранзакцию();
		Если СнятьМонопольныйРежим Тогда
			УстановитьМонопольныйРежим(Ложь);
		КонецЕсли;
		ВызватьИсключение;
	КонецПопытки;
	
	Если ЕстьТекущиеИзменения Тогда
		ЕстьИзменения = Истина;
	КонецЕсли;
	
	Если Не (ТолькоПроверка И ЕстьТекущиеИзменения) Тогда
		СтандартныеПодсистемыСервер.ПодтвердитьОбновлениеПараметраРаботыПрограммы(
			"ПараметрыРаботыПользователей", "НазначениеРолей");
		
		СтандартныеПодсистемыСервер.ПодтвердитьОбновлениеПараметраРаботыПрограммы(
			"ПараметрыРаботыПользователей", "ВсеРоли");
	КонецЕсли;
	
	Если СнятьМонопольныйРежим Тогда
		УстановитьМонопольныйРежим(Ложь);
	КонецЕсли;
	
КонецПроцедуры
Показать

Похоже сейчас нужно использовать регистр сведений "ПраваРолей".
РегистрыСведений.ПраваРолей.ОбновитьДанныеРегистра();

Но для расширение со своей ограниченной ролью в режиме совместимости 8.3.12 не помогло. Как итог профиль сделал.
Роль в конфигураторе назначил.
36. visusby 5 22.05.20 08:57 Сейчас в теме
Спасибо! Очень полезно!
41. AnryMc 848 14.09.21 09:16 Сейчас в теме
Спасибо! Узнал новое...

З.Ы. И ещё узнал новое слово: "противоречение" ;-)
Оставьте свое сообщение