Программно установить права 1с

Часто встречаю вопросы касаемые программного создания и настройки прав пользователей.

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

В приложении к статье обработки, код которых приведен ниже: Скачать обработки

Обработки были написаны под УТ, но, при необходимости, вы можете их легко доработать под другие конфигурации.

Управляемое приложение:

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

! В типовых конфигурациях для работы с пользователями активно используется БСП !

В общем модуле Пользователи используется программный интерфейс процедур и функций НовоеОписаниеПользователяИБ, ПрочитатьПользователяИБ, ЗаписатьПользователяИБ и УдалитьПользователяИБ.

Код создания нового пользователя с использованием БСП:

Вопрос с правами доступа возникает в связи с необходимостью ограничить права пользователя в 1С (или группы пользователей), что подразумевает под собой запрет на совершение каких-либо действий с определенными объектами, например, их просмотр, запись, редактирование и т.д. Или, наоборот – из-за необходимости дать (расширить) права пользователей в 1С, что в реальности чаще всего следует за сообщением системы о нарушении прав доступа (например, недостаточно прав для просмотра) и обращением пользователя к администраторам с просьбой об этом.

Чтобы внести коррективы в правила доступа и изменить права на просмотр того или иного раздела или на любое другое действие, необходимо зайти в «Настройки пользователей и прав», что можно сделать при включенном пользовательском режиме на вкладке «Администрирование» (при условии, конечно, что имеются права на это).

Перейдя по ссылке «Пользователи», можно увидеть, кто из пользователей входит в ту или иную группу доступа.

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

Описание прав пользователей доступно на вкладке «Описание».

Роли просматриваются посредством элемента справочника «Пользователи», попасть в который можно по клику на конкретном пользователе.

Читайте также  Почему не открываются фото в интернете

Здесь же формируется отчет по правам доступа, где отображается статус доступа к конкретным объектам системы.

Крайняя правая колонка «Ограничения на уровне записей» – это дополнительные условия, ограничивающие действия с объектами базы данных. По сути это запрос, выполняющийся в момент работы и сообщающий, можно или нельзя работать с объектом.

На скриншоте видно, что документ «Ввод начальных остатков» доступен для пользователя, но доступ возможен только к определенным складам.

Таким образом, установить доступ или изменить права в 1С можно добавив пользователя в ту или иную группу в пользовательском режиме.

Саму группу также можно изменить, например, добавив значение в ограничение доступа.

Права администратора позволяют осуществлять управление правами в режиме конфигуратора, где уже заданы типовые роли. Например, роль с много объясняющим названием «Базовые права», как правило, дает возможность осуществить только чтение или только просмотр объекта.

Для управления правами, призванными изменять объекты, предусмотрены специальные роли добавления/изменения данных.

Если известно, на какой объект не хватает прав у пользователя, можно:

  • От обратного: посмотреть вкладку «права» у конкретного объекта, при этом вверху мы увидим все роли, доступные в конфигурации, а в нижнем окне – права. Наличие тех или иных прав на объект отмечено «галочкой». Таким же образом задаются права для новых объектов.

  • Открыть роль, назначенную пользователю, и, выбрав в левом окне конкретный объект, в правом окне увидеть список прав, то есть действия, которые пользователь с данной ролью может сделать с этим объектом – чтение, добавление, просмотр т.д.

Таким образом, все возможные права в системе предопределены. Чтение, добавление, изменение, просмотр, редактирование и другие права могут быть включены или выключены в любой роли для любого объекта. Назначить права отдельно, не используя при этом роли, невозможно. Для разграничения прав пользователя необходимо назначить соответствующую роль. Удобным инструментом для анализа прав и ролей становится таблица «Все роли», формируемая в конфигураторе.


На скриншоте видно, что роль «Полные права» обладает максимальным объемом прав. И если задачи ограничивать пользователей в правах не стоит вовсе – можно смело назначать эту роль всем пользователям, навсегда избавившись от вопросов пользователей.

На практике же, как правило, в большинстве случаев все-таки необходима «защита от дурака». Подстраховаться от нежелательного изменения данных нужно всем более-менее крупным компаниям. Здесь на помощь приходит встроенные в 1С роли. Разобраться в разнообразии ролей не просто, на это требует много времени. Поэтому создание собственной роли для решения практических задач, зачастую может быть единственным выходом. Рассмотрим этот момент подробнее. Добавить роль можно в дереве метаданных.

Читайте также  Сканер штрих кода программа для windows

В новой роли разграничить права можно простым выставлением флажков напротив соответствующего права.

Флажки в низу окна говорят о том, что права будут автоматически назначаться для новых объектов метаданных/для реквизитов и табличных частей объекта, для которого назначаются права, а также – будут ли наследоваться права относительно родительского объекта.

Ограничения прав доступа задаются в правом нижнем окне новой роли. Это мощный инструмент, позволяющий ограничить права на уровне записей, т.е. предоставить доступ именно к необходимым данным. Если простое назначение прав может только «прямолинейно» дать или отнять права на действия с объектом, то механизм ограничений позволяет гибко настроить права доступа относительно данных. Например, ограничить чтение и просмотр данных только по одной организации.

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

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

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

Ограничение прав доступа в 1С

Роль — это объект метаданных, предназначенный для описания набора разрешенных действий (прав). Каждому пользователю прикладного решения может быть назначена одна или несколько ролей. Пользователь будет иметь право на объект, если хотя бы одна из назначенных ему ролей предоставляет право на этот объект. При попытке получить доступ к объекту, на который у пользователя нет прав, выдается ошибка:

В ролях можно управлять доступом не только на уровне объектов метаданных, но и на уровне объектов базы данных. Например, можно указать, что пользователю с определенной ролью разрешено изменять справочник Номенклатура, но только те его элементы, которые не помечены на удаление. Этот механизм называется RLS — Row Level Security (ограничение доступа на уровне записей).

Привилегированный режим работы

В системе есть возможность временно отключить проверку прав доступа. Такой режим называется привилегированным. В привилегированном режиме разрешены любые операции с базой и не производится контроль RLS.

Включение привилегированного режима осуществляется методом

Если вызвать метод УстановитьПривилегированныйРежим (Ложь) большее количество раз, чем УстановитьПривилегированныйРежим (Истина) , то будет вызвано исключение.

Читайте также  Построить график функции с помощью

Получить текущее значение привилегированного режима можно функцией

которая возвращает значение типа Булево.

Безопасный режим работы

Иногда требуется наложить дополнительные ограничения при выполнении «ненадежного» кода, например, при вызове метода Выполнить () . В этом случае можно переключиться в безопасный режим работы.

В безопасном режиме:

  • привилегированный режим отменяется, а попытка перехода в привилегированный режим игнорируется;
  • запрещено использование внешних средств по отношению к 1С (доступ к файловой системе, доступ к интернету, загрузка внешних компонент, механизмы COM).

Включение безопасного режима осуществляется методом

Если вызвать метод УстановитьБезопасныйРежим (Ложь) большее количество раз, чем УстановитьБезопасныйРежим (Истина) , то будет вызвано исключение.

Получить текущее значение безопасного режима можно функцией

которая возвращает значение типа Булево.

Программная работа с Ролями

Для проверки доступности Роли текущему пользователю:

РольДоступна ( НаименованиеРоли >)
// Пример использования:
ЭтоАдминистратор = РольДоступна ( Метаданные . Роли . АдминистраторСистемы );
//Тот же самый результат можно получить так:
ЭтоАдминистратор = РольДоступна ( «АдминистраторСистемы» );

Для определения права доступа (чтение, изменение и т.д.) к объекту метаданных:

ПравоДоступа ( Право >, ОбъектМетаданных >, Пользователь/Роль >, СтандартныйРеквизитСтандартнаяТабличнаяЧасть >)
// Пример использования: проверка у текущего пользователя права на изменение справочника ФизическиеЛица
МожноРедактироватьФизЛиц = ПравоДоступа ( «Изменение» , Метаданные . Справочники . ФизическиеЛица );

Для проверки прав доступа текущего пользователя на объект метаданных:

ВыполнитьПроверкуПравДоступа ( Право >, ОбъектМетаданных >, СтандартныйРеквизитСтандартнаяТабличнаяЧасть >)
//Примеры использования:
ВыполнитьПроверкуПравДоступа ( «ИнтерактивноеОткрытиеВнешнихОбработок» , Метаданные );
ВыполнитьПроверкуПравДоступа ( «ИнтерактивнаяПометкаУдаления» , Метаданные . Справочники . ФизическиеЛица );

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

Для получение информации о праве доступа на определенный объект метаданных для пользователя или роли с учетом указанных полей:

ПараметрыДоступа ( НаименованиеПрава >, ОбъектМетаданных >, СписокПолей >, Пользователь/Роль >)
//Пример использования:
ПараметрыДоступа = ПараметрыДоступа ( «Чтение» , Метаданные . РегистрыСведений . ТекущиеКадровыеДанныеСотрудников , «ТекущаяОрганизация,ФизическоеЛицо» );
ЕстьДоступ = ПараметрыДоступа . Доступность ;
ОграничениеRLS = ПараметрыДоступа . ОграничениеУсловием ;

Для получения представления права по имени:

ПредставлениеПрава ( ИмяПрава >)
//Пример использования:
Представление = ПредставлениеПрава ( «ИнтерактивноеОткрытиеВнешнихОбработок» );
// Переменная Представление будет содержать строку «Интерактивное открытие внешних обработок»

Программная работа с Ролями в БСП

В типовых конфигурациях, построенных на Библиотеке стандартных подсистем, в общих модулях есть методы для работы с ролями. Вот некоторые из них:

Пользователи . РолиДоступны ( ИменаРолей , Пользователь = Неопределено, УчитыватьПривилегированныйРежим = Истина)
Пользователи . ЭтоПолноправныйПользователь ( Пользователь = Неопределено, ПроверятьПраваАдминистрированияСистемы = Ложь, УчитыватьПривилегированныйРежим = Истина)
УправлениеДоступом . ЕстьРоль (Знач Роль , Знач СсылкаНаОбъект = Неопределено, Знач Пользователь = Неопределено)
УправлениеДоступом . ЕстьПраво ( Право , СсылкаНаОбъект , Пользователь = Неопределено)
УправлениеДоступом . ЧтениеРазрешено ( ОписаниеДанных )
УправлениеДоступом . ИзменениеРазрешено ( ОписаниеДанных )
УправлениеДоступом . ОграничиватьДоступНаУровнеЗаписей ()
УправлениеДоступом . ПраваПоИдентификаторам ( Идентификаторы = Неопределено)

В общих модулях у каждого метода есть подробное описание. Там можно посмотреть описание самого метода, входных параметров и возвращаемого значения.

Остались вопросы?
Спросите в комментариях к статье.

Ссылка на основную публикацию
Adblock
detector