Андрей Смирнов
Время чтения: ~10 мин.
Просмотров: 108

Объект 1С «Роли». Привилегированный режим 1С

В этой статье речь пойдет о настройке прав доступа пользователей к объектам системы 1С.

В 1С 8для управления доступа пользователей используется отдельный объект метаданных, который называется Роли.

Далее мы рассмотрим, как использовать и настраивать роли в 1С предприятие 8.3.

Обратите внимание! Эта статья написана в помощь программистам. Настройка прав в пользовательском режиме на примере 1С Бухгалтерия рассмотрена в данной статье.

drevo-metadannih-1s.png

Роль определяет набор прав пользователя, которые он имеет. Механизм ролей очень  похож на механизмы прав Windows Active Directory. Для каждого из объектов (справочники, документы) разработчик устанавливает свой набор прав — чтение/запись/добавление/изменение/…

Набор доступных прав — совокупность всех разрешений в ролях пользователя.

Ниже мы рассмотрим подробно каждый атрибут метаданных при настройке роли пользователя 1С 8.3.

Общие настройки роли 1С

Если открыть объект метаданных Роль, мы можем увидеть следующую картину:

nastroyka-roli-1s.png

У объекта есть две закладки — Права и Шаблоны ограничений. Права — основная закладка, Шаблоны — вкладка для настройки прав на уровне записи  в 1С (RLS). Это очень важная тема, её я постараюсь описать в будущих статьях.

Будем рассматривать только вкладку Права.

  • Объекты — список метаданных, на которые будут устанавливаться права.
  • Права — список возможных для установки настроек прав.
  • Ограничение доступа к данным — поля роли для настройки РЛС (настроек прав на уровне записей)

Следует обратить внимание на галочки в нижней части:

  • Устанавливать права для новых объектов — если флаг установлен у роли, на новые объекты метаданных будут автоматически установлены разрешающие права. Рекомендую установить, если Вы часто забываете установить права на новые объекты.
  • Устанавливать права для реквизитов и табличных частей по умолчанию — флаг, при установке которого реквизиты и табличные части будут наследовать права владельца(справочника, документа и т.д.)
  • Независимые права подчиненных объектов — если флаг установлен, то система при определении права на объект конфигурации учтёт права на родительский объект

Настройки прав на всю конфигурацию

Если открыть Роль и кликнуть на корень конфигурации, мы увидим следующие настройки:

nastroyka-roli-kornya-1s.png

Подробнее о каждом из прав на всю конфигурацию:

Получите 267 видеоуроков по 1С бесплатно:

  • Бесплатный видео самоучитель по 1С Бухгалтерии 8.3;
  • Самоучитель по новой версии 1С ЗУП 3.1;
  • Администрирование — администрирование информационной базы (требуется наличие права «Администрирование данных»)
  • Администрирование данных — право на административные действия над данными
  • Обновление конфигурации базы данных — право на обновление конфигурации базы данных
  • Монопольный режим — использование монопольного режима
  • Активные пользователи — просмотр списка активных пользователей
  • Журнал регистрации — журнал регистрации
  • Тонкий клиент — право запуска тонкого клиента
  • Веб клиент — право запуска веб-клиента
  • Толстый клиент — право роли запуска толстого клиента
  • Внешнее соединение — право запуска внешнего соединения
  • Automation — право на использование automation
  • Режим «Все функции» — доступ к пункту меню «Все функции» в режиме управляемого приложения
  • Сохранение данных пользователя — разрешение или запрет на сохранение данных пользователя (настроек, избранного, истории). Особенно актуально для 1С управляемых форм.
  • Интерактивное открытие внешних обработок — открытие внешних обработок
  • Интерактивное открытие внешних отчетов — открытие внешних отчетов
  • Вывод — вывод на печать, запись и копирование в буфер обмена

Настройка прав 1С 8.2 на другие объекты метаданных

rol-1s.png

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

  • Чтение — чтение (программное)
  • Добавление — добавление (программное)
  • Изменение — изменение (программное)
  • Удаление — удаление (программное)
  • Просмотр — просмотр
  • Интерактивное добавление — интерактивное добавление
  • Редактирование — редактирование
  • Интерактивная пометка удаления — интерактивная пометка на удаление
  • Интерактивное снятие пометки удаления — снятие пометки на удаление
  • Интерактивное удаление помеченных— удаление помеченных объектов
  • Ввод по строке — использование режима ввода по строке
  • Интерактивное удаление — непосредственное удаление (shift +del)

Права только для документов:

  • Интерактивное проведение — проведение
  • Отмена проведения — отмена проведения документов
  • Интерактивное проведение неоперативное — проведение (стандартными командами форм) документа в неоперативном режиме
  • Интерактивная отмена проведения — интерактивная отмена проведения
  • Интерактивное изменение проведенных — редактирование проведенного документа. Если право у роли не установлено, то пользователь не может удалить проведенный документ, установить пометку удаления, перепровести или сделать непроведенным. Форма такого документа открывается в режиме просмотра

Только для регистров накопления и бухгалтерии

  • УправлениеИтогами — управление итогами регистра бухгалтерии и регистра накопления (установка периода, по который рассчитаны итоги, и пересчет итогов)

Только для обработок и отчетов:

  • Использование — использование

Привилегированный режим 1С

Если Вы не хотите давать роли права на какие-либо действия, но эти метаданные нужно использовать в какой-то момент, можно воспользоваться методом «УстановитьПривилегированныйРежим()» (или использовать привилегированный режим общего модуля).

Например:

УстановитьПривилегированныйРежим(Истина);.......// выполняем запрещенные для роли действия.......    УстановитьПривилегированныйРежим(Ложь);

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

Доступна ли роль 1С пользователю?

Если РольДоступна("ПолныеПрава")Тогда    Сообщить("У вас полные права");Иначе    Сообщить("У вас нет полных прав");КонецЕсли;

Нарушение прав доступа

Такую ошибку можно увидеть, если недостаточно прав на чтение/редактирование/удаление данных. Система выдаёт вот такую ошибку:

narushenie-prav.png

Чтобы исправить «нарушение прав доступа», необходимо понять, на какой объект пользователю не хватает прав, и добавить ему либо новую роль, либо в существующую роль добавить больше прав.

Объект не найден…

Ошибка, когда в полях отображается некое <Объект не найден>  ( … ):

bitaya-ssyilka.jpg

Как правило, специалисты думают, что это просто так называемая «битая ссылка». Но это не всегда так. Такая ошибка бывает и при неправильно настроенном механизме прав RLS. Это связано с тем, что у пользователя не хватает прав, чтобы получить представление ссылки.

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

Для массового поиска таких ошибок подойдет статья как найти битые ссылки в базе 1С.

P.S. Если у Вас все же не получилось разобраться в ролях пользователей, Вы можете заказать услуги 1С программиста. Видео с примером настройки прав в 1С бухгалтерии 3.0:

Другие статьи по 1С:

  • Администрирование (обновление 1С, резервные копии и т.д);
  • Программирование 1С
  • Обучение программам 1С (для пользователей)

Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

Оцените статью, пожалуйста!

Для ограничения доступа пользователей к данным в 1С используются Роли. В статье речь пойдет о программной работе с ними.Ограничение прав доступа в 1СПривилегированный режим работыБезопасный режим работыПрограммная работа с РолямиПрограммная работа с Ролями в БСП

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

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

narushenie-prav-dostupa.png

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

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

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

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

УстановитьПривилегированныйРежим(Истина);

отключение:

УстановитьПривилегированныйРежим(Ложь);

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

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

ПривилегированныйРежим()

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

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

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

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

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

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

УстановитьБезопасныйРежим(Истина);

отключение:

УстановитьБезопасныйРежим(Ложь);

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

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

БезопасныйРежим()

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Смотри также:

Передача файла с клиента на серверКак открыть форму внешней обработки или отчета программноКак получить список открытых окон 1С

Пришло время поговорить о разграничение прав в 1С. Так как наша конфигурация немного выросла целесообразно разграничить права. Для начала хотя бы добавить Администратора.

Добавляем роль в 1С

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

1-1024x697.jpg

Теперь нужно установить права на объекты конфигурации (Просмотр, редактирование). Так как мы создаем роль Администратора нам нужно отметить все объекты конфигурации. Для этого кликаем на пункт Действия и выбираем Установить все права.

2-1024x706.jpg

В дальнейшем мы будем добавлять различные объекты и для того чтобы каждый раз при создании новый справочников документов отчетов и т.д не редактировать роль снизу нужно поставить галочку Установить права для новых объектов.

3-1024x709.jpg

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

Добавляем пользователя в 1С

После того как роль создана нужно добавить пользователя. Для этого переходим на вкладку Администрирование и выбираем Пользователи.

4-1024x712.jpg

В окне список пользователей кликаем добавить.

5-1024x712.jpg

В окне Пользователь пишем имя Администратор ставим галочку на против Аутентификация 1С Предприятие. Так же не забываем про пункт Показывать в списке выбора. Это нужно для того чтобы каждый раз не вводим имя пользователя и так же вводим пароль.

6-1024x712.jpg

Переходим на вкладку Прочее и отмечаем роль Администратор снизу указываем язык и кликаем ОК.

7-1024x697.jpg

Перезапускаем 1С и смотрим что получилось. Если вы все сделали правильно то 1С должна спросить Логин и пароль.

8.jpg

Ну вот и все мы сделали новую роль и завели нового пользователя.

Скриншоты, опубликованные в данной статье, являются цитатами и иллюстрациями программного продукта “1C:Предприятие”, авторское право на который принадлежит ЗАО 1С.

Используемые источники:

  • https://programmist1s.ru/nastroyka-prava-dostupa-roli-v-1s-8/
  • https://pro1c8.ru/programmnaya-rabota-s-rolyami/
  • https://www.softo-mir.ru/kak-dobavit-rol-i-polzovatelya-v-1c/

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации