Добавить роль в профиль групп доступа 1с программно
В данной статье я хочу рассмотреть базовый функционал подсистемы "Управление доступом", а именно управление профилями доступа для актуальной на текущий момент библиотеки стандартных подсистем (БСП). На момент написания публикации - версия БСП 3.1.5.208. Тестирование практических примеров осуществляется для Платформе 1с 8.3.19.1264.
Публикация будет полезна всем программистам - разработчикам, а так же желающим познакомиться с основным функционалом подсистемы "Управление доступом" в любой современной типовой конфигурации (работающей на БСП).
Материал статьи разбит на несколько частей с практическими примерами, в которых рассматривается проверка доступности ролей, включение или выключение профилей пользователю, программное создание или обновление профилей базы и прочие интересные моменты использования функционала БСП "управление доступом". Примеры публикации актуальны для серверных и файловых баз.
Перейдем к первой части - проверка наличия ролей и программное добавление профилей пользователю:
Часть 1. Проверка наличия роли и программное добавление профиля пользователю.
Самый базовый метод - проверка, что у пользователя есть роль через Профиль группы доступа, в котором он состоит:
Данный код будет возвращать Истину, если у пользователя "ТестПользователь" есть роль "ДобавлениеИзменениеКурсовВалют", которая добавлена через профиль группы доступа пользователя:
Рис.1 Профиль пользователя с ролью "Добавление и изменение курсов валют".
Поскольку наш только созданный тестовый пользователь ТестПользователь не имеет право на вход в базу данных попробуем добавить профиль "Пользователь" пользователю ТестПользователь следующим кодом:
Смотрим, профиль добавился:
Рис.2 Добавленный профиль "Пользователь" процедурой ВключитьПрофильПользователю.
Теперь, мы можем зайти в базу данным пользователем:
Рис.3 Зашли тестовым пользователем в базу, при назначенном профиле "Пользователь".
Так же, я могу добавить профиль "Администратор" с ролями "Полные права" и "Администратор системы", т.е. программно с помощью БСП в любой типовой конфигурации я могу "раздавать" полные права.
Отключение любого профиля у пользователя осуществляется вот таким кодом:
Так, с базовым включением/выключением профиля мы разобрались, теперь перейдем ко второй части статьи - программное создание профиля доступа с помощью библиотеки стандартных подсистем.
Часть 2. Программное обновление и создание профиля доступа на БСП.
Данную часть статьи я разобью на два подраздела, в которых проведу некоторые эксперименты для обновления или создания нового профиля доступа.
Подраздел 2.1 Программное обновление поставляемого профиля доступа.
Для подготовки профиля доступа, мы воспользуемся типовым программным конструктором, который предлагается в библиотеке стандартных подсистем. Выглядит это вот так:
Воспользуемся вот этой функцией обновления профиля (находится в менеджере справочника ПрофилиГруппДоступа):
Типовая функция выглядит вот так (скопирую код в статью, т.к. далее, я буду вносить в эту функцию доработки):
Во-первых, для эксперимента - сделаем эту функцию Экспортной, чтобы мы могли напрямую обращаться к ней через модуль менеджера справочника.
Во-вторых, как заявлено, данная функция может обновлять только поставляемые профили, если я ищу профиль по гуиду - выходит ошибка - профиль не найден в поставке.
Поэтому, я доработал данную функцию (мне показалась, что по условиям она сыроватой на этом релизе), теперь позволяет вносить исправления и в поставляемые профили и создавать новые по типовому конструктору профиля в БСП.
Выглядит эта функция вот так:
С помощью этой функции вносим изменения про поставляемый профиль менеджера (используя гуид профиля и конструктор выше). Результат выглядит вот так:
Рис.4.Профиль отличается от поставляемого
Теперь, перейдем к созданию своего профиля.
Подраздел 2.2 Программное создание профиля доступа.
Здесь, все тоже самое, только гуид мы создаем самостоятельно. Конструктор и код исполнения вот такой:
Получаем программный профиль с ролями:
Рис.5.Программный профиль с ролями
На этом закончим второй раздел и перейдем к выводам и заключению.
Выводы и заключение
В данной статье, я решил поэкспериментировать с программным созданием профилей в рамках системы БСП, используя конструктор профиля и функцию создания/обновления. В начале статьи рассмотрены примеры добавление профилей пользователям, а во второй части статьи - создание и обновление профилей.
Есть еще одна идейка - написать статью и поставить эксперименты с программными настройками видов доступа в профиле.
Надеюсь, что вам понравился данный материал и он будет вам полезен. Спасибо за внимание!
Другие мои материалы по подсистемам БСП
Также прошу ознакомиться с другими моими статьями по интересному функционалу типовых конфигураций в рамках библиотеки стандартных подсистем и по разделам:
Наверняка, уже все знают, что из себя представляет новая система, поэтому предистория вкрадце:
Как было раньше( в обычном приложении):
Есть документ. Есть Роли - ПолныеПрава, ДокументНетДоступа, ДокументТолькоЧтение, ДокументЧтениеИРедактирование. В конфигураторе(аналогичный механизм в реж предприятия) вы выставляете пользователям эти роли и у них появляются соответствующие права доступа на документ. Все просто и скучно и даже зевать хочется.
С введением управляемого приложения разработчики решили усложнить(читается как расширить) настройки прав доступа. Теперь:
Вводная та же. Чтобы дать пользователю какие-то права на документ - сначала вам необходимо создать элемент справочника Профили групп доступа. Это некий агрегирующий(суммирующий значения) объект, который объединяет роли в группы ролей. Теоритически таких профилей можно создать сколько угодно много с различным набором ролей( N*(n-1), где N - количество ролей), но на практике количество профилей определяется количеством должностных обязанностей пользователей в организации и их гораздо меньше, чем ролей.
Создаем профили Бесправный(с ролью ДокументНетДоступа), Аудитор(с ролью ДокументТолькоЧтение), Бухгалтер(с ролью ДокументЧтениеИРедактирование).
Чтобы "привязать" эти профили к пользователям - нужно создать элементы справочника ГруппыДоступа. В типовых они создаются автоматически, когда вы отмечаете галочками профили для пользователя. Этот справочник соединяет профиль и пользователя(или нескольких пользователей).
При записи этого элемента справочника система автоматически добавляет роли (из профиля) в роли пользователя. Поэтому не стоит напрямую редактировать роли в конфигураторе, как раньше - при редактировании прав в Предприятии все роли в конфигураторе будут обновлены на роли из профилей пользователя. Кроме того, будет наблюдаться явное противоречение между набором профилей с ролями и ролями, установленными в конфигураторе.
Как хранятся роли в Профиле групп доступа, спросите вы. Ведь роли - это объекты МД, это не ссылочные типы. Отвечаю - для этого(и не только) разработчики создали служебный справочник ИдентификаторыОбъектовМетаданных, в котором хранится( в иерархии!) имена, синонимы, значения пустых ссылок всех объектов МД. Если вы хотите создать Профиль программно и добавить в него роль, то код примерно будет таким:
Но если мы добавили новую роль в конфигурации, то как она попадет в справочник? Хороший вопрос. У справочника ИдентификаторыОбъектовМетаданных есть метод, позволяющий обновлять его данные. это:
Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника(ИСТИНА,ЛОЖЬ,ЛОЖЬ);//ЕстьИзменения, ЕстьУдаленные, ТолькоПроверка
Процедуру следует запускать каждый раз, когда вы вносите изменения в метаданные, особенно когда изменяете роли, объекты, связанные с новыми ролями.
Отлично. Роль добавили, идентификаторы обновили.
Но обратная связь не работает - вы в режиме предприятия назначили пользователю профиль( с созданием группы доступа), а роль у пользователя в конфигураторе не добавилась! Что делать?
За синхронизацию ролей/профилей отвечает константа ПараметрыРаботыПользователей. Если роли не обновляются в конфигураторе, следует обновить её значение:
Хорошо, скажите вы. А как быть, если я хочу создать группы доступа программно? Да не вопрос. Единственное ограничение - не допускаются дубли связок Профиль-Пользоваль в группах доступа. Примерный код будет таким:
Все настройки прав пользователей, которые будут нами производиться в рамках этой статьи расположены в разделе 1С 8.3 «Администрирование» — «Настройки пользователей и прав». Данный алгоритм аналогичен в большинстве конфигураций на управляемых формах. В качестве примера будет использоваться программа 1С Бухгалтерия, но настройка прав в других программах (1С УТ 11, 1С ЗУП 3, 1C ERP) производиться абсолютно аналогично.
Как добавить пользователя
Перейдем в раздел «Пользователи» окна настроек. Здесь мы видим две гиперссылки: «Пользователи» и «Настройки входа». Первая из них позволяет перейти непосредственно к списку пользователей данной информационной базы. Прежде, чем создавать нового пользователя, рассмотрим возможные настройки входа (гиперссылка справа).
В данной форме настроек вы можете настроить сложность пароля (не менее 7 символов, обязательное содержание различных типов символов и т. п.). Так же здесь можно указать длину пароля, его срок действия и запрет входа в программу пользователей, у которых не было активности определенный период времени.
Теперь можно перейти к непосредственному к добавлению нового пользователя в 1С. Сделать это можно по кнопке «Создать», как показано на изображении ниже.
Первым делом укажем полное имя – «Антонов Дмитрий Петрович», и выберем из соответствующего справочника физическое лицо. Так же здесь можно указать и подразделение, в котором работает наш сотрудник.
Имя для входа «АнтоновДП» подставилось автоматически, как сокращение от полного имени «Антонов Дмитрий Петрович». Установим пароль и аутентификацию 1С Предприятия. Здесь так же можно указать, доступна ли данному пользователю самостоятельная смена пароля.
Получите понятные самоучители по 1С бесплатно:
Допустим, мы хотим, чтобы Антонов Дмитрий Петрович был доступен в списке выбора при запуске данной информационной базы. Для этого необходимо установить флаг на пункте «Показывать в списке выбора». В результате окно авторизации при запуске программы будет выглядеть так, как показано на рисунке ниже.
Перейдя по гиперссылке «Установить ограничение» вы можете ограничить доступ к программе по каким-либо временным показателям.
Права доступа
После заполнения всех данный в карточке пользователя – Антонова Дмитрия Петровича, запишем их и перейдем к настройке прав доступа, как показано на рисунке ниже.
Перед нами открылся список ранее внесенных в программу профилей доступа. Отметим флажками необходимые.
Профили групп доступа
Профили групп доступа можно настроить из основной формы настройки пользователей и прав. Перейдите в раздел «Группы доступа» и нажмите на гиперссылку «Профили групп доступа».
Создадим новую группу из открывшейся формы списка. В табличной части на вкладке «Разрешенные действия (роли)» флажками необходимо отметить те роли, которые будут влиять на права доступа пользователей, входящим в создаваемую нами группу. Все эти роли создаются и настраиваются в конфигураторе. Из пользовательского режима их нельзя изменить или создать новые. Можно только выбрать из существующего перечня.
RLS: ограничение доступа на уровне записей
RLS в 1С 8.3 позволяет более гибко настраивать доступ к данным программы в определенных разрезах. Для ее активации установите флаг на одноименном пункте формы настройки пользователей и прав.
Обратите внимание, что включение данной настройки может негативно повлиять на работоспособность системы. Дело заключается в том, что механизм RLS изменяет все запросы в зависимости от установленных ограничений.
Перейдем в созданный нами ранее профиль групп доступа «Тестовая группа». На рисунке ниже видно, что после включения ограничения доступа на уровне записей появилась дополнительная вкладка «Ограничения доступа».
Предположим, мы хотим, чтобы пользователи, которым назначена тестовая группа, имели доступ к данным по всем организациям данной информационной базы, за исключением тех, что указаны в профиле.
В верхней табличной части установим ограничение доступа по организации. В нижней части уточним, что доступ не будет предоставляться к данным (документам, справочникам и пр.) для организации «Рога ООО».
Часто встречаю вопросы касаемые программного создания и настройки прав пользователей.
В этот статье я приведу примеры для Обычного и Управляемого приложений, которые программно создают пользователя в конфигураторе и в режиме Предприятие (справочник пользователи) и установку Групп пользователей.
Обработки были написаны под УТ, но, при необходимости, вы можете их легко доработать под другие конфигурации.
Управляемое приложение:
В конфигурациях на управляемом интерфейсе (Такси) изменили подход к ведению пользователей. Если вы добавляете не программно, то добавлять нужно из режима Предприятия - тогда пользователь ИБ у вас сам создатся. И если раньше, в обычном приложении, достаточно будет добавить польз в конфигураторе - и при заходе в Предприятие, этот польз сам создавался в спр Пользователи, то с управляемым приложением такой фокус не прокатит - система не даст зайти под пользователем ИБ, которого нет в справочнике Пользователи.
! В типовых конфигурациях для работы с пользователями активно используется БСП !
В общем модуле Пользователи используется программный интерфейс процедур и функций НовоеОписаниеПользователяИБ, ПрочитатьПользователяИБ, ЗаписатьПользователяИБ иУдалитьПользователяИБ.
Код создания нового пользователя с использованием БСП:
Обычное приложение:
В обычном все проще:
Похожие FAQ
1С Предприятие что это? 12
Что такое 1С? 1С — это фирма , у которой одно из направлений деятельности — разработка программного обеспечения для автоматизации бизнес-процессов предприятий. « 1С:Предприятие » - конкретный продукт, который выпускает компания 1С . Что такое Автоматическая установка ширины колонки табличного документа. 0
Процедура, которая " примерно" делает автоширину колонок (навроде, как если бы выделить все колонки и дважды щелкнуть мышкой по границе заголовка колонки). Привожу текст, работает неахти, но лучше чем ничего: Процедура РасчетШириныКолонок(Табличный База 1С при запуске уходит в дамп и вылетает 1
В последнее время частенько обращаются пользователи у которых после замены или ремонта компьютера 1С не запускается, а точнее при открытии уходит в dump и вылетает. Как правило, решение одно: Отключить аппаратное ускорение видеокарты В Window Ввод документа на основании - Программно 11
НовДок = Документы.ПеречислениеНДФЛвБюджет.СоздатьДокумент(); //Заполнить - вызывает ОбработкаЗаполнения(Основание) в документе ПеречислениеНДФЛвБюджет НовДок.Заполнить(ЭлементыФормы.ДокументСписок.ТекущаяСтрока); НовДок.ПолучитьФорму().Открыть() Вывод колонтитулов программно ВерхнийКолонтитул, НижнийКолонтитул 6
Колонтитул является специальным текстом, выводимым вверху или внизу каждой страницы при выводе документа на печать. В тексте колонтитула можно использовать следующие управляющие конструкции: > ( >) - при печати в данном месте будет выведен номер ст Посмотреть все результаты поиска похожих
Еще в этой же категории
Ограничение доступа на уровне записей RLS 6
Когда требуется более тонкая настройка доступа, на помощь приходит механизм RLS - Record Level Security. Конфигурации системы «1С:Предприятие» 8 изначально позиционировалась как программа для многофирменного учета, и один из первых возникающих воп Право на изменение и право на редактирование - в чем отличие? 6
В чем собственно отличие? Кратко: Изменение - определяет возможность/невозможность вообще изменить объект. Редактирование - несет интерактивный смысл. Подробнее: Интерактивные и основные права Все права, поддерживаемые системой 1С:Предпри Отключение Пользователей встроенными в платформу функциями 5
Нужно создать ярлыки(в любой папке щелкните правой клавишей мыши - Создать - Ярлык) с командами: Отключение или Завершение работы пользователей: Для Файлового варианта: " C: Program Files 1cv81 bin 1cv8.exe" ENTERPRISE /F путь к базе /N и Сравнение ролей доступа 5
Порядок простых действий для казалось бы сложной операции по сравнению ролей в 1С 8. 1) Открываете Роль1 в ее панели выбираете подменю Действия - Вывести список- сохраняете в Новый1.mxl 2) Открываете Роль2 в ее панели выбираете подменю Действия - В Использование RLS 3
Начиная с платформы 8.0 системы 1С Предприятие, существует возможность ограничивать права доступа пользователей на уровне записей. Для этого используется механизм RLS (Record Level Security). Такая «тонкая» настройка может быть полезна для ограничени Посмотреть все в категории Пользователь, роль доступа, интерфейс
Часто встречаю вопросы касаемые программного создания и настройки прав пользователей.
В этот статье я приведу примеры для Обычного и Управляемого приложений, которые программно создают пользователя в конфигураторе и в режиме Предприятие (справочник пользователи) и установку Групп пользователей.
Обработки были написаны под УТ, но, при необходимости, вы можете их легко доработать под другие конфигурации.
Управляемое приложение:
В конфигурациях на управляемом интерфейсе (Такси) изменили подход к ведению пользователей. Если вы добавляете не программно, то добавлять нужно из режима Предприятия - тогда пользователь ИБ у вас сам создатся. И если раньше, в обычном приложении, достаточно будет добавить польз в конфигураторе - и при заходе в Предприятие, этот польз сам создавался в спр Пользователи, то с управляемым приложением такой фокус не прокатит - система не даст зайти под пользователем ИБ, которого нет в справочнике Пользователи.
! В типовых конфигурациях для работы с пользователями активно используется БСП !
В общем модуле Пользователи используется программный интерфейс процедур и функций НовоеОписаниеПользователяИБ, ПрочитатьПользователяИБ, ЗаписатьПользователяИБ иУдалитьПользователяИБ.
Код создания нового пользователя с использованием БСП:
Обычное приложение:
В обычном все проще:
Похожие FAQ
Еще в этой же категории
Ограничение доступа на уровне записей RLS 6
Когда требуется более тонкая настройка доступа, на помощь приходит механизм RLS - Record Level Security. Конфигурации системы «1С:Предприятие» 8 изначально позиционировалась как программа для многофирменного учета, и один из первых возникающих воп Право на изменение и право на редактирование - в чем отличие? 6
В чем собственно отличие? Кратко: Изменение - определяет возможность/невозможность вообще изменить объект. Редактирование - несет интерактивный смысл. Подробнее: Интерактивные и основные права Все права, поддерживаемые системой 1С:Предпри Отключение Пользователей встроенными в платформу функциями 5
Нужно создать ярлыки(в любой папке щелкните правой клавишей мыши - Создать - Ярлык) с командами: Отключение или Завершение работы пользователей: Для Файлового варианта: " C: Program Files 1cv81 bin 1cv8.exe" ENTERPRISE /F путь к базе /N и Сравнение ролей доступа 5
Порядок простых действий для казалось бы сложной операции по сравнению ролей в 1С 8. 1) Открываете Роль1 в ее панели выбираете подменю Действия - Вывести список- сохраняете в Новый1.mxl 2) Открываете Роль2 в ее панели выбираете подменю Действия - В Использование RLS 3
Начиная с платформы 8.0 системы 1С Предприятие, существует возможность ограничивать права доступа пользователей на уровне записей. Для этого используется механизм RLS (Record Level Security). Такая «тонкая» настройка может быть полезна для ограничени Посмотреть все в категории Пользователь, роль доступа, интерфейс
Читайте также: