Бухучет инфо. Бухучет инфо Принцип разграничения доступа к записям объектов
- АКТУАЛЬНЫЕ РЕЛИЗЫ 1С
- ПРИМЕРЫ КОДА НА ПЛАТФОРМЕ 1С
Роли, права доступа в 1С 8.x
Как узнать, доступна ли определенная роль текущему пользователю?
Если Не РольДоступна("Менеджер") Тогда Сообщить("Просмотр заявок от покупателей не разрешен!"); КонецЕсли;Как получить информацию о ролях конфигурации?
Функция СписокВозможныхРолейКонфигурации() СписокРолей = новый СписокЗначений; РолиКонфигурации = Метаданные.Роли; Для каждого Роль из РолиКонфигурации Цикл СписокРолей.Добавить(Роль.Имя); КонецЦикла; Возврат СписокРолей; КонецФункцииКак выполнить код без проверки прав?
1. Использовать привилегированный модуль 2. Размещение программного кода, который должен выполняться БЕЗ КОНТРОЛЯ ОГРАНИЧЕНИЙ, в общий модуль с установкой у модуля флага ПРИВИЛЕГИРОВАННЫЙ. Использовать привилегированный режим исполнения программного кода Аналогичный режиму работы кода привилегированных модулей. Режим можно включить/выключить средствами встроенного языка: УстановитьПривилегированныйРежим(<Включить>) Параметр <Включить> (обязательный) Тип: Булево. Определяет, будет ли включен привилегированный режим: Истина - включить режим; Ложь - выключить режим. функция ПривилегированныйРежим() позволяет определить, включен привилегированный режим, или нет. Использование привилегированного режима позволяет, во-первых, ускорить работу, так как не будут накладываться ограничения на доступ к данным, а во-вторых, позволяет выполнять операции с данными от лица пользователей, которым эти данные недоступны. Привилегированный режим рекомендуется использовать тогда, когда с логической точки зрения нужно отключить проверку прав, или когда можно отключить проверку прав, чтобы ускорить работу. Допустимо использовать привилегированный режим тогда, когда работа с данными от лица некоторого пользователя не нарушает установленные для этого пользователя права доступа.Для того чтобы разграничить права доступа, в 1С 8.3 существуют специальные объекты конфигурации – роли. В дальнейшем они могут назначаться конкретным пользователям, должностям и т. п. В них указывается, какие объекты конфигурации будут доступны. Так же есть возможность прописать условия предоставления доступа.
Роли настраиваются в конфигураторе. Так же их можно назначить конкретным пользователям, но для удобства в 1С реализован механизм групп доступа. В справочнике пользователей откройте («Администрирование — Настройка пользователей и прав — Пользователи») карточку любого сотрудника и нажмите на кнопку «Права доступа». В разных конфигурациях интерфейс может отличаться, но суть одна и та же.
Перед вами откроется список записей справочника «Профили групп доступа». Флажками отмечаются те, права которых пользователю будут доступны.
Справочник профилей групп доступа («Администрирование — Настройка пользователей и прав — Профили групп доступа») содержит в себе перечень ролей, который будет доступен пользователю при его назначении. Доступные роли профиля отмечаются флагами.
У пользователей часто встречаются одинаковые наборы ролей. Использование данного механизма позволяет значительно упростить настройку прав, выбирая не сами роли, а профили групп доступа.
Роли в конфигураторе (для программистов)
В ролях указывается, какие объекты и при каких условиях будут доступны пользователю, которому они доступны. Откройте любую роль, и вы увидите две вкладки: «Права» и «Шаблоны ограничений».
На первой вкладке отображается список объектов конфигурации и назначенные для данной роли права на них.
При разрешении совершения каких-либо действий с объектом, есть возможность указать ограничение доступа к данным. Данный механизм называется RLS и позволяет настроить права на уровне записей. Он достаточно интересный, но при активном его использовании может снизиться производительность.
В нижней части формы роли можно настроить автоматическую установку прав:
- для новых объектов (разрешающие права);
- на реквизиты и табличные части (права наследуются от объекта – владельца)
- на подчиненные объекты (права назначаются с учетом прав на родительские объекты).
Права можно назначить как на отбельные объекты, так и на всю конфигурацию в целом. В любой роли на вкладке «Права» выберите пункт с названием конфигурации. Справа отобразятся все возможные для нее роли. Здесь содержатся режимы запуска программы, «Все функции», административные и другие права. При нажатии на любое право, внизу отобразится его описание. Тут нет ничего сложного.
Настройки прав для остальных объектов конфигурации сходи между собой: чтение, добавление, удаления, проведение (для документов), управление итогами (для регистров накопления и бухгалтерии) и прочие. Здесь важно отметить право на «Интерактивное удаление». При его доступности пользователи смогут физически удалять данные из программы (shift + delete). Для важных объектов данное право назначать крайне нежелательно.
Программная проверка прав доступа
Для проверки доступности у пользователя какой-либо роли служит следующая функция:
- РольДоступна(«АдминистраторСистемы»)
В том случае, когда проверяемая роль назначена пользователю, функция вернет значение «Истина». В противном случае – «Ложь».
Для того чтобы выполнить какие-либо действия с объектом, к которому нет доступа, можно воспользоваться следующим методом:
- УстановитьПривилегированныйРежим(Истина)
После включения привилегированно режима никаких проверок прав не производится. По окончании действий над недоступными объектами необходимо снова вызвать данный метод с параметром «Ложь» для отключения данного режима. Помните, что в клиент — серверном варианте при выполнении на клиенте данный метод не выполняет никаких действий.
Для проверки того, установлен привилегированный режим служит функция (возвращает «Истина» или «Ложь»):
- ПривилегированныйРежим()
Пользовательский интерфейс при отсутствии прав доступа
При попытке пользователя совершить какое-либо действие в программе, но которое у него нет прав будет выдано соответствующее предупреждение.
Бывают случаи, когда в каком-либо поле отображается надпись формата «<Объект не найден>» с указанием GUID, возможно, у пользователя тоже не хватает прав на чтение содержащегося в нем значения. Для проверки этой теории достаточно просмотреть значение данного поля под полными правами. Если надпись не пропадает – есть вероятность битой ссылки.
2016-12-01T13:37:17+00:00Правильная настройка списка пользователей и их прав доступа в базу 1С:Бухгалтерия 8.3 (редакция 3.0) является необходимой при любом количестве людей, работающих с программой. Даже если с ней работаете только вы!
Такая настройка позволяет в дальнейшем ответить на такие вопросы, как "Кто внес те или иные изменения в базу", "Как дать к базе доступ только на просмотр для проверяющего", "Кто позволил помощнику изменить настройки учетной политики" и подобные им.
В третьей редакции такая настройка, на мой взгляд, стала проще и интуитивно понятнее. Сегодня я расскажу, как лучше настроить пользователей и их права. Постараюсь рассмотреть наиболее общий случай.
Итак, будем настраивать следующих пользователей:
- Администратор : пользователь, который обладает полными правами на базу и не имеет никаких ограничений. Не нужно использовать этого пользователя для ежедневной работы. Пароль от администратора следует давать программистам и администраторам, которые нам настраивают или обновляют базу. Так как под этим пользователем будут работать только они - мы в дальнейшем всегда сможем в журнале регистрации отделить их изменения в базе от работы других пользователей. Это бывает полезно в случае "разбора полётов".
- Главный бухгалтер : пользователь, который обладает правами не меньшими, чем администратор, но является самостоятельной ролью со своим паролем. Под этим пользователем будете работать вы сами.
- Бухгалтер
: если у вас есть помощники или другие бухгалтеры в подчинении, то этот пользователь подойдет для них. Какие ограничения накладывает эта роль:
- Запрет на изменение параметров учета.
- Запрет на изменение учетной политики.
- Запрет на изменение плана счетов.
- Запрет на редактирование списка пользователей.
- Запрет на настройку счетов учета номенклатуры.
- Запрет на удаление помеченных на удаление элементов.
- Запрет на смену даты запрета изменения данных.
- Проверяющий : этот пользователь будет обладать только правами на просмотр базы. Ничего менять в ней он не сможет.
1. Зайдите в раздел "Администрирование" и выберите там пункт "Настройки пользователей и прав" ():
2. В открывшейся панели выберите пункт "Пользователи":
3. По умолчанию, пользователь "Администратор" уже должен быть в этом списке. Сделайте двойной щелчок на нём, чтобы открыть его настройки.
4. Сделайте настройку, как на рисунке ниже. Пароль придумайте сами - его нужно повторить два раза. Обращаю ваше внимание, что у каждого из пользователей должен быть свой пароль. Осталось нажать "Записать и закрыть". Готово!
Главный бухгалтер
4. В окне настройки прав укажите галки рядом с пунктами "Администратор" и "Главный бухгалтер". Осталось нажать кнопку "Записать". Готово!
Бухгалтер
1. Вернитесь в список пользователей и нажмите кнопку "Создать" на панели инструментов.
2. Откроется окно с новым пользователем. Укажите настройки как показано ниже, только пароль придумайте свой.
4. В окне настройки прав укажите галки рядом с пунктом "Бухгалтер". Осталось нажать кнопку "Записать". Готово!
Проверяющий
1. Вернитесь в список пользователей и нажмите кнопку "Создать" на панели инструментов.
2. Откроется окно с новым пользователем. Укажите настройки как показано ниже, только пароль придумайте свой.
1С имеет встроенную систему прав доступа (эта система называется — роли 1С). Эта система является статической – как администратор поставил права 1С, так и будет.
Дополнительно, действует динамическая система прав доступа (называется – RLS 1С). В ней права 1С динамически высчитываются в момент работы пользователя на основании заданных параметров.
Одной из самых распространенных настроек безопасности в различных программах является набор разрешений на чтение/запись для групп пользователей и далее – включение или исключение пользователя из групп. Например, подобная система используется в Windows AD (Active Directory).
Такая система безопасности в 1С называется – Роли 1С. Роли 1С – это , который находится в конфигурации в ветке Общие/Роли. Роли 1С выступают в качестве групп, для которых назначаются права 1С. Далее пользователь включается или исключается из этой группы.
Нажав два раза на название роли 1С — Вам откроется редактор прав для роли 1С. Слева – список объектов 1С. Выделите любой и справа отобразятся варианты прав доступа (как минимум: чтение, добавление, изменение, удаление).
Для верхней ветки (название текущей конфигурации) устанавливаются административные права 1С и доступ на запуск различных вариантов .
Все права 1С поделены на две группы – «просто» право и такое же право с добавлением «интерактивное». Что это значит?
Когда пользователь открывает какую-либо форму (например, обработку) и нажимает на ней кнопку – то программа на встроенном языке 1С выполняет определенные действия, например удаление документов. За разрешение этих действий (выполняемых программно) – отвечают «просто» права 1С.
Когда пользователь открывает журнал и начинает делать что-то с клавиатуры самостоятельно (например, вводить новые документы) – это «интерактивные» права 1С.
Пользователю может быть доступно несколько ролей, тогда разрешения складываются.
Разрез возможностей установки прав доступа с помощью ролей – объект 1С. То есть Вы можете или включить доступ к справочнику или отключить. Включить немножко нельзя.
Для этого существует расширение системы ролей 1С под названием 1С RLS. Это динамическая система прав доступа, которая позволяет ограничить доступ частично. Например, пользователь видит только документы по определенному складу и организации и не видит остальные.
Аккуратно! При использовании запутанной схемы RLS 1С у разных пользователей могут быть вопросы, когда они попытаются сверить один и тот же отчет, сформированный из под разных пользователей.
Вы берете определенный справочник (например, организации) и определенное право (например, чтение). Вы разрешаете чтение для роли 1С. В панели Ограничение доступа к данным Вы устанавливаете текст запроса, который возвращает ИСТИНА или ЛОЖЬ в зависимости от настроек. Настройки обычно хранятся в регистре сведений (например регистр сведений конфигурации Бухгалтерия НастройкиПравДоступаПользователей).
Данный запрос выполняется динамически (при попытке реализовать чтение), для каждой записи справочника. Таким образом, для тех записей, для которых запрос безопасности вернул ИСТИНА – пользователь увидит, а остальные – нет.
Права 1С, на которые установлены ограничения RLS 1С – подсвечены серым.
Копирование одних и тех же настроек RLS 1С делается с помощью шаблонов. Вы делаете шаблон, называете его (например) МойШаблон, в нем указываете запрос безопасности. Далее, в настройках права доступа 1С указываете имя шаблона вот так: «#МойШаблон».
При работе пользователя в режиме 1С Предприятие, при работе RLS 1С, у него может появляться сообщение об ошибке «Недостаточно прав» (например, на чтение справочника Ххх).
Это значит, что RLS 1С заблокировала чтение нескольких записей.
Для того, чтобы такого сообщения не появлялось, необходимо в тексте запроса на встроенном языке 1С использовать слово РАЗРЕШЕННЫЕ ().
Например:
Вопрос с правами доступа возникает в связи с необходимостью ограничить права пользователя в 1С (или группы пользователей), что подразумевает под собой запрет на совершение каких-либо действий с определенными объектами, например, их просмотр, запись, редактирование и т.д. Или, наоборот – из-за необходимости дать (расширить) права пользователей в 1С, что в реальности чаще всего следует за сообщением системы о нарушении прав доступа (например, недостаточно прав для просмотра) и обращением пользователя к администраторам с просьбой об этом.
Чтобы внести коррективы в правила доступа и изменить права на просмотр того или иного раздела или на любое другое действие, необходимо зайти в «Настройки пользователей и прав», что можно сделать при включенном пользовательском режиме на вкладке «Администрирование» (при условии, конечно, что имеются права на это).
Как уже упоминалось, в группы доступа входят определенные пользователи, а самим группам соответствует профили групп доступа, которые объединяют роли. По сути роль – это метаданные, разнообразие и количество которых зависит от конфигурации. Как правило, ролей довольно много и в них легко запутаться. Стоит помнить, что одна лишняя назначенная роль может открыть доступ к объектам нежелательным пользователям.
Описание прав пользователей доступно на вкладке «Описание».
Роли просматриваются посредством элемента справочника «Пользователи», попасть в который можно по клику на конкретном пользователе.
Здесь же формируется отчет по правам доступа, где отображается статус доступа к конкретным объектам системы.
Крайняя правая колонка «Ограничения на уровне записей» – это дополнительные условия, ограничивающие действия с объектами базы данных. По сути это запрос, выполняющийся в момент работы и сообщающий, можно или нельзя работать с объектом.
На скриншоте видно, что документ «Ввод начальных остатков» доступен для пользователя, но доступ возможен только к определенным складам.
Таким образом, установить доступ или изменить права в 1С можно добавив пользователя в ту или иную группу в пользовательском режиме.
Саму группу также можно изменить, например, добавив значение в ограничение доступа.
Права администратора позволяют осуществлять управление правами в режиме конфигуратора, где уже заданы типовые роли. Например, роль с много объясняющим названием «Базовые права», как правило, дает возможность осуществить только чтение или только просмотр объекта.
Для управления правами, призванными изменять объекты, предусмотрены специальные роли добавления/изменения данных.
Если известно, на какой объект не хватает прав у пользователя, можно:
- От обратного: посмотреть вкладку «права» у конкретного объекта, при этом вверху мы увидим все роли, доступные в конфигурации, а в нижнем окне – права. Наличие тех или иных прав на объект отмечено «галочкой». Таким же образом задаются права для новых объектов.
- Открыть роль, назначенную пользователю, и, выбрав в левом окне конкретный объект, в правом окне увидеть список прав, то есть действия, которые пользователь с данной ролью может сделать с этим объектом – чтение, добавление, просмотр т.д.
Таким образом, все возможные права в системе предопределены. Чтение, добавление, изменение, просмотр, редактирование и другие права могут быть включены или выключены в любой роли для любого объекта. Назначить права отдельно, не используя при этом роли, невозможно. Для разграничения прав пользователя необходимо назначить соответствующую роль. Удобным инструментом для анализа прав и ролей становится таблица «Все роли», формируемая в конфигураторе.
На скриншоте видно, что роль «Полные права» обладает максимальным объемом прав. И если задачи ограничивать пользователей в правах не стоит вовсе – можно смело назначать эту роль всем пользователям, навсегда избавившись от вопросов пользователей.
На практике же, как правило, в большинстве случаев все-таки необходима «защита от дурака». Подстраховаться от нежелательного изменения данных нужно всем более-менее крупным компаниям. Здесь на помощь приходит встроенные в 1С роли. Разобраться в разнообразии ролей не просто, на это требует много времени. Поэтому создание собственной роли для решения практических задач, зачастую может быть единственным выходом. Рассмотрим этот момент подробнее. Добавить роль можно в дереве метаданных.
В новой роли разграничить права можно простым выставлением флажков напротив соответствующего права.
Флажки в низу окна говорят о том, что права будут автоматически назначаться для новых объектов метаданных/для реквизитов и табличных частей объекта, для которого назначаются права, а также – будут ли наследоваться права относительно родительского объекта.
Ограничения прав доступа задаются в правом нижнем окне новой роли. Это мощный инструмент, позволяющий ограничить права на уровне записей, т.е. предоставить доступ именно к необходимым данным. Если простое назначение прав может только «прямолинейно» дать или отнять права на действия с объектом, то механизм ограничений позволяет гибко настроить права доступа относительно данных. Например, ограничить чтение и просмотр данных только по одной организации.
Конструктор ограничений доступа к данным позволяет создать условие, по которому будет ограничен доступ.
Ограничение прав доступа описывается в виде языковых конструкций. Для облегчения их создания предусмотрено использование шаблонов ограничений. Надо заметить, что использование этого механизма напрямую сказывается на производительности, ведь системе, обращаясь к какому-либо объекту, необходимо прочитать и выполнить эти ограничения. Этот процесс отнимает ресурсы компьютера и тормозит работу.
В заключение хотелось бы отметить, что фирма 1С в качестве разработчика позаботилась о наличие широких возможностей для администраторов в части редактирования прав в своих программных решениях. И если на первый взгляд эти инструменты могут показаться сложными и избыточными, то в дальнейшем, особенно при попытке построить эффективную схему доступа в условиях многоуровневой, разветвленной структуры персонала на предприятии или в организации, становится ясно, что функционал программы вполне соответствует реальным потребностям.