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

04.09.14

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

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


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


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



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




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






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

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

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

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

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

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

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

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

	КонецЕсли;

	КонецЕсли;






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


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


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


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


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


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


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





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

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

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

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

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

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

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

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

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

	КонецЕсли;

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

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

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

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

	|ИЗ

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

	|ГДЕ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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









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




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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	 КонецЕсли;













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


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


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

См. также

AUTO VPN (portable)

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

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

1200 руб.

24.03.2020    14396    22    32    

33

Настройка аутентификации в 1С с использованием стандарта RFC 7519 (JWT)

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

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

27.02.2024    2605    PROSTO-1C    9    

29

Device flow аутентификация, или туда и обратно

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

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

1 стартмани

27.10.2023    1617    platonov.e    1    

23

Анализатор безопасности базы сервера 1С

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

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

5 стартмани

24.04.2023    5438    14    soulner    7    

29

Двухфакторная аутентификация в 1С через Telegram и Email

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

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

2 стартмани

08.12.2022    5967    32    Silenser    12    

23

История одного взлома или проверьте вашу систему на безопасность

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

От клиента клиенту, от одной системы к другой, мы вновь и вновь встречаем одни и те же проблемы и дыры в безопасности. На конференции Infostart Event 2021 Post-Apocalypse Виталий Онянов рассказал о базовых принципах безопасности информационных систем и представил чек-лист, с помощью которого вы сможете проверить свою систему на уязвимость.

26.10.2022    9244    Tavalik    46    

113
Вознаграждение за ответ
Показать полностью
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. TMV 14 04.09.14 15:15 Сейчас в теме
(0) Оформление бы поправили, а так любопытно.
ruddanil; smewinka; drygina; Anchoret; user777757; newgluk; +6 Ответить
2. gull22 95 10.09.14 10:13 Сейчас в теме
Спасибо за информацию. Плюс
3. Yimaida 37 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 415 10.09.14 12:44 Сейчас в теме
(5) Yurcha62, Обработка, безусловно, полезная, и ею стоит пользоваться, как многими другими, но только после того, когда знаешь, что она делает и зачем. В данной небольшой статье я и постарался принести это знание.
Рамзес; Jreil; madvaska; user1311038; user659168_xec8787; user777757; mikeA; CyberCerber; monkbest; +9 Ответить
7. meganibler 74 10.09.14 13:55 Сейчас в теме
Спасибо за статью.
Недавно потратил полдня, чтобы выяснить ровно то, что здесь описано.

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

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


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

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

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

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

user811769; drygina; +2 Ответить
16. Spacer 355 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 115 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 115 26.11.14 11:16 Сейчас в теме
(12) trumanl, видимо, от релиза к релизу их число растет:)
user717534; +1 Ответить
42. user1718973 23.06.22 04:12 Сейчас в теме
(8)Добрый день! подскажите, пожалуйста, где правили код, чтобы кадровый перевод открылся?
9. Lapitskiy 1057 12.09.14 04:31 Сейчас в теме
Вот здесь я подробно с картинаками описывал: статья про УТ 11
14. ZhokhovM 724 25.02.15 15:58 Сейчас в теме
Минус за плохое оформление.
15. stas1kbob 59 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 69 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 69 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 234 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 415 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 71 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 1474 16.03.21 16:44 Сейчас в теме
(35) код из старой базы:
// Процедура обновляет общие параметры работы пользователей при изменении конфигурации.
// 
// Параметры:
//  ЕстьИзменения - Булево (возвращаемое значение) - если производилась запись,
//                  устанавливается Истина, иначе не изменяется.
//
Процедура ОбновитьОбщиеПараметры(ЕстьИзменения = Неопределено, ТолькоПроверка = Ложь) Экспорт
	
	УстановитьПривилегированныйРежим(Истина);
	
	Если ТолькоПроверка ИЛИ МонопольныйРежим() Тогда
		СнятьМонопольныйРежим = Ложь;
	Иначе
		СнятьМонопольныйРежим = Истина;
		УстановитьМонопольныйРежим(Истина);
	КонецЕсли;
	
	НазначениеРолей = НазначениеРолей();
	ПроверитьНазначениеРолей(НазначениеРолей);
	
	ВсеРоли = ВсеРоли();
	
	Блокировка = Новый БлокировкаДанных;
	ЭлементБлокировки = Блокировка.Добавить("Константа.ПараметрыРаботыПользователей");
	ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
	
	НачатьТранзакцию();
	Попытка
		Блокировка.Заблокировать();
		
		Параметры = Неопределено;
		ЕстьТекущиеИзменения = Ложь;
		СтандартныеПодсистемыСервер.ОбновитьПараметрРаботыПрограммы("ПараметрыРаботыПользователей",
			"НазначениеРолей", НазначениеРолей, ЕстьТекущиеИзменения, ТолькоПроверка, Параметры);
		
		Если Не (ТолькоПроверка И ЕстьТекущиеИзменения) Тогда
			СтандартныеПодсистемыСервер.ОбновитьПараметрРаботыПрограммы("ПараметрыРаботыПользователей",
				"ВсеРоли", ВсеРоли, ЕстьТекущиеИзменения, ТолькоПроверка, Параметры);
		КонецЕсли;
		
		ЗафиксироватьТранзакцию();
	Исключение
		ОтменитьТранзакцию();
		Если СнятьМонопольныйРежим Тогда
			УстановитьМонопольныйРежим(Ложь);
		КонецЕсли;
		ВызватьИсключение;
	КонецПопытки;
	
	Если ЕстьТекущиеИзменения Тогда
		ЕстьИзменения = Истина;
	КонецЕсли;
	
	Если Не (ТолькоПроверка И ЕстьТекущиеИзменения) Тогда
		СтандартныеПодсистемыСервер.ПодтвердитьОбновлениеПараметраРаботыПрограммы(
			"ПараметрыРаботыПользователей", "НазначениеРолей");
		
		СтандартныеПодсистемыСервер.ПодтвердитьОбновлениеПараметраРаботыПрограммы(
			"ПараметрыРаботыПользователей", "ВсеРоли");
	КонецЕсли;
	
	Если СнятьМонопольныйРежим Тогда
		УстановитьМонопольныйРежим(Ложь);
	КонецЕсли;
	
КонецПроцедуры
Показать

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

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

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