Права на просмотр и чтение всех данных конфигурации как установить

Обновлено: 30.04.2024

Доброе утро.
Зарплата и Управление Персоналом, редакция 2.5 (2.5.52.1)
Как в ЗУПе настроить пользователю права "Только просмотр", без редактирования конфигурации и снятия ее с поддержки? Роль "Пользователь" не подходит, так как нельзя открыть форму справочника Сотрудники.
Знаю, что вопрос крайне популярен, но я так не поняла, как крешить проблему(

(1) Бугага))) В общем как я поняла, без редактирования конфы тут не обойтись. А редактирование на уровне записей, оно для другого предназначено?

Можно настроить доступ и без редактирования конфы. RLS Вам в помощь ("Группы пользователей", "Группы доступа к контрагентам" и прочее подобное).

(3) Пыталась я использовать Группы пользователей - не помогло( Мне бы сделать так, чтобы пользователь мог зайти в справочник Сотрудники, но не мог в нем ничего изменить, подскажите,пожалуйста, как это можно сделать? Роль "Пользователь" ругается на "Недостаточно прав".

Справочник "Сотрудники организаций", я так понимаю? Что значит "не помогло"? Константу "Использовать ограничение на уровне записей" установили?

У всех пользователей должна быть роль с прописанными шаблонами, например "Пользователь". Для пользователей с ролью "Полные права" механизм RLS вообще отключается.

Вот у меня сейчас стоит ЗУП 2.5 без доработок (даже не включена возможность изменения конфы, только внешние отчёты и печатные формы подключены) и RLS прекрасно работает.

Создайте Группу пользователей "Только просмотр" и дату запрета редактирования поставьте для этой группы 2099 год

(11) я предлагаю работающий способ, затраты по времени - 5 минут. Самое важное и есть ограничить доступ к документам и регистрам. Ничего не изменишь - а смотри сколько угодно

Роль с подстрокой "удалить" использовать не надо. Давайте про Группу пользователей поговорим. Заходите в неё и жмите "Перейти\Назначение видов объекта доступа", добавляете строку с видом объекта "Организации". Далее идите в "Перейти\Настройки прав доступа пользователей", добавьте строку и доступом "Только чтение". Ну, дальше сами разберётесь, я думаю.

(14) Вы не правы: ограничения по огранизации для справочника "Сотрудники организации" сработают, равно как и для другиз объектов, имеющих реквизит "Организация" (в нашем случае).

ТС, почитайте про RLS в ЗУП aka "Настройка прав на уровне записей" и у Вас всё полцучится. Мехзанизм работает чётко и очень гибок.

такие запросы..и без изменения конфы.. Хотят все и сразу прям.
Это все равно что находясь в болиде формулы 1 спросить как покататься по полю без смены авто?!

(19) К этому-то нет необходимости ограничение делать. Хотя и можно, но без доработки конфы (шаблонов доступа, как минимум) не получится.

(31) Да, раньше тормозило, Вы правы. Но уже лет пять как исправили это дело. Ну и надо стараться использовать минимально необходимое количество ролей конфы и правил RLS, это понятно, я думаю.

Скажите, пожэалуйста, а если уж редактировать конфигурацию, правильно ли создать новую Роль "только просмотр" и по всем объектам проставить - чтение, просмотр; обработкам и отчетам - отключить просмотр и использвоание; регистрам накопления и расчета - отключить просмотр?

(33) Скорее всего изменения должны быть более глубокие, если тупо на все поставишь только просмотр, то конфа просто не запустится, так что по-любому ряд регистров придется открыть для записи :-(

(34) Там еще и надо обязательно ставить роль "Пользователь" или "Полные права". А "Пользователь" уже что-то разрешает(

(34) Регистрам можно дать разрешение на изменение. И может убрать тогда "просмотр" и поставить еще дату запрета редактирования.

(35) Вот если поставишь роль "Полные права", то как бы ты не добавляла пользователя только на просмотр, все-равно все изменит :-)
(36) Можно, я это уже делал для бухгалтерии, сначала отключаешь все, а потом пытаешься войти в конфу и включаешь по одному все, на что идет ругань при этих правах

Мне надо запустить в базу неопытного пользователя, который наверное дальше сотрудников не уйдет. НО ради блага и спокойствия хотим ограничить ему все, чтобы "даже случайно" ничего не мог изменить( я бы вообще не пускала в базу.((((

Изуверы разработчики, помимо создания своей роли, надо еще и в код руками лезть, дабы пользователь с такой ролью мог в базу зайти( А если использовать роль "Пользователь", то не дает справочник Сотрудники открыть. И на просторах Интернета я так и не нашла иного выхода из данной ситуации( Или я что-то не понимаю?

В порядке бреда, сам не пробовал.

При начале работы системы - начинаем транзакцию, при выходе - отменяем её.

Вот если честно, тривиальная задача решается какими-то извращенными методами. Но это так - эмоции. (41) Может опробую.

(42) Буду признателен за отчёт. У меня есть несколько пользователей, которым такая штука нужна, они приходят и спрашивают "А что делает кнопка "Заполнить" в штатном расписании и почему её нельзя было нажимать?"

Достало это, надо схомячить булочку. Прописала в коде ему, чтобы не ругался на роль "ТолькоПросмотр". При входе в базу пишет набор ошибок, ссылаясь на параметры сеанса ТекущийПользователь.

(37) В обычной ЗУП оно не то чтобы тормозит, а прямо таки глючит - в частности на sql2000.. 1с признает наличие проблем, но исправлять ошибки не собирается - предлагает перейти на sql2008.

Права доступа в 1С:Предприятии 8

В 1С:Предприятии различают два типа прав – основные и интерактивные.

Основные (неинтерактивные) – проверяются всегда независимо от способа обращения к объектам информационной базы.

Интерактивные – проверяются при выполнении интерактивных операций (например, операция "Установить пометку удаления").

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

Для построения защищенных прикладных решений достаточно управлять только 4-мя основными правами доступа - "Добавление" , "Чтение", "Изменение" и "Удаление".

Система 1С:Предприятие допускает проверку прав из встроенного языка. Например при добавлении команд к формам разработчик должен дополнительно позаботиться о проверке соответствующих интерактивных прав.

Пример проверки прав из языка:

При этом нужно помнить о том, что у будущего пользователя конфигурации соответствующие интерактивные и неинтерактивные права к тому или иному объекту могут различаться. Например, может быть разрешено право на "Удаление" и запрещено право "Интерактивное удаление".

Рассмотрим проверку прав расширениями формы, табличного поля и поля ввода на примере документа:

  • При открытии формы документа проверяется право "Просмотр", после чего, если это форма нового объекта, то проверяется право "ИнтерактивноеДобавление", а если нет - право "Редактирование". Если выполняется запись с проведением, то проверяются права "ИнтерактивноеПроведение", "ИнтерактивнаяОтменаПроведения" или "ИнтерактивноеПроведениеНеОперативное", в зависимости от режима записи.
  • Расширение табличного поля для журнала документов при открытии формы, в которой журнал установлен основным реквизитом, проверяет, что право "Просмотр" установлено хотя бы у одного документа журнала. При проведении документов из журнала проверяются права "ИнтерактивнаяОтменаПроведения", "ИнтерактивноеПроведение" и "ИнтерактивноеПроведениеНеОперативное". При удалении документов проверяется право "ИнтерактивноеУдаление", а при установке/снятии пометки на удаление проверяются права "ИнтерактивнаяПометкаУдаления" и "ИнтерактивноеСнятиеПометкиУдаления". При добавлении нового документа, после выбора его типа, расширение табличного поля журнала документов проверяет право "ИнтерактивноеДобавление".
  • Поле ввода для документа проверяет только право "ВводПоСтроке".

Связанные права

Часть прав в системе 1С:Предприятия связаны друг с другом. Это означает, что основные права доступа, такие как "Чтение", "Изменение", "Добавление" и "Удаление" и некоторые другие могут влиять на права, отвечающие за такие операции с объектом, которые, в конечном счете, приведут к простейшим операциям. Например, нельзя разрешить право "Изменение", не выдав право "Чтение".

Интерактивные права напрямую зависят от их неинтерактивных аналогов, т.е. право "Интерактивное удаление" зависит от права "Удаление". На практике при конфигурировании это выглядит так, что при разрешении интерактивных прав аналогичные им неинтерактивные будут автоматически разрешены, и, наоборот, при снятии неинтерактивных прав соответствующие им интерактивные автоматически будут сброшены. Допускается лишь установка неинтерактивного права и сброс интерактивного, но не наоборот. Например, нельзя разрешить интерактивное право "Интерактивное удаление" и запретить неинтерактивное "Удаление".

Зависимость прав может выстраиваться в сложные цепочки, например, у объекта "Документ" право "Интерактивная отмена проведения" зависит от прав "Отмена проведения" и "Просмотр" одновременно, где первое зависит от "Изменение", которое, в свою очередь, зависит от права "Чтение" (см. рисунок).

Ключевым является право "Чтение", при его отсутствии автоматически пропадают любые другие права на доступ к объекту.

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

Права доступа пользователей в 1С

Работа в программе 1С позволяет разным пользователям назначать функциональный доступ к документам и справочникам базы. Например:

  • Если пользователь работает как бухгалтер, то ему в 1С назначается соответствующая роль, позволяющая добавлять, изменять, удалять документы и справочники по хозяйственной деятельности.
  • Если пользователь 1С работает только с отчетами и просматривает данные базы, допустим, менеджер, то ему даются права на чтение данных.
  • Пользователь, который может работать со всеми объектами программы 1С – Администратор, имеет полные права и получает неограниченный доступ по работе с базой данных в 1С.

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

Установка прав доступа в 1С 8.3 Бухгалтерия 3.0

В 1С:Бухгалтерия 8 ред. 3.0 выделено 4 основных профиля для работы с программой:

  • Администратор;
  • Бухгалтер;
  • Главный бухгалтер;
  • Синхронизация с другими программами;
  • Только чтение.

Чтобы понять принцип задания прав в 1С, обратимся к конфигуратору. При анализе объектов конфигурации увидим специальную ветку Роли, где перечислены все заданные разработчиками 1С возможные доступы к данным базы:

ветка Роли

Каждой роли соответствует набор возможностей для работы с объектами конфигурации, это –

  • Чтение;
  • Добавление;
  • Проведение;
  • Отмена проведения;
  • Редактирование;
  • Удаление.

Если открыть какую-то заданную роль, то по каждому объекту можно просмотреть – что можно делать с каждым объектом конфигурации:

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

Настройка прав доступа в 1С 8.3 Бухгалтерия

Настройка прав доступа в 1С 8.3 осуществляется в разделе Администрирование – Настройки пользователей и прав:

Настройки пользователей и прав в разделе Администрирование

Открывается окно Настройки пользователей и прав:

 окно Настройки пользователей и прав

Рассмотрим возможности настройки доступа в 1С.

Как создать нового пользователя в 1С 8.3

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

форма создания нового пользователя

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

Как настроить права доступа на основании типовых профилей в 1С 8.3

Каждому пользователю (Администрирование – Настройки пользователей и прав – Пользователи) назначают Права доступа из списка профилей, что есть в конфигурации. Например, для бухгалтера Петровой С.Б. назначаем профиль Бухгалтер:

список профилей, что есть в конфигурации

Здесь же можем перенести настройки новому пользователю от пользователя, уже работающего в 1С: настройку Функциональности, внутренние настройки отчетов и т.д., чтобы не тратить время и не набирать все вручную:

скопировать настройки от пользователя, уже работающего в 1С

Отмечаем настройки для переноса новому пользователю Бухгалтер Петрова от пользователя Администратор:

выбор настроек пользователя

Переносим персональные настройки, настройки печати и Избранное:

выбор настроек пользователя

Настройка прав доступа с добавлением новых профилей в 1С 8.3

Создаем новый профиль с ограниченным доступом к справочникам и документам. Профили групп доступа – Создать:

добавление нового профиля в 1С

Новый профиль удобно создавать по подсистемам 1С. Например, для прав Расчетчика можем отметить следующий функционал:

  • Отражение зарплаты в бухгалтерском учете;
  • Чтение налогов и взносов;
  • Взаиморасчеты с сотрудниками;
  • Персонифицированный учет;
  • Учет зарплаты:

определение функционала для нового профиля

По кн. Только выбранные роли показывается список выбранных ролей пользователя. Кадровый учет можно задать отдельно для профиля Кадровик.

Как настроить дополнительные права доступа к уже имеющимся типовым профилям в 1С 8.3

Конкретному пользователю 1С с выбранным профилем можно добавлять функционал. Например, для пользователя Петрова, в профиле Бухгалтер, не доступна команда Все функции, но мы можем ее добавить данному пользователю. Заходим Администрирование – Настройки пользователей и прав – Профили групп доступа. Кн. Создать – режим Все функции – добавляем права Режим “Все функции”:

настройка дополнительных прав доступа

Добавляем новый профиль бухгалтеру Петровой С.Б.:

добавление профиля

Настройка дополнительных прав доступа к отдельным документам и справочникам в 1С 8.3

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

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

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

добавление реквизитов и сведений к объектам программы

  1. Открываем гиперссылку Дополнительные реквизиты.

создание дополнительных реквизитов

Заполняем закладку Значения:

создание дополнительных реквизитов

  1. Теперь заполним этот реквизит для наших пользователей.

заполнение реквизита

заполнение реквизита

Все необходимые действия в базе 1С 8.3 сделаны, теперь будем работать с расширением Конфигурации.

Расширения конфигурации

Добавляем новое расширение конфигурации по кн. +:

Добавить новое расширение конфигурации

Соглашаемся с выбранными по умолчанию данными расширения или задаем свои:

сохранение нового расширения конфигурации

Открываем конфигурацию расширения по кн. Открыть конфигурацию:

Открыть конфигурацию

расширение конфигурации

Добавить в расширение форму документа

Открываем форму в расширении конфигурации и создаем обработку события ПередЗаписью. При создании обработчика события программа 1С 8.3 попросит указать, где создавать программный код. Выбираем: Создать на клиенте и процедуру на сервере без контекста:

создание обработчика события

свойства формы документа

Переходим в модуль формы и вставляем следующий программный код:

модуль формы

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

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

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

Как предоставить доступ к варианту отчета с индивидуальными настройками для других пользователей в 1С 8.3 ЗУП смотрите в нашем видео:

Есть еще одна возможность ограничения прав пользователя, которую мы сейчас рассмотрим. Сразу предупреждаем, что включение этой возможности очень сильно замедлит работу в базе 1С 8.3, поэтому пользоваться ею рекомендуем очень осторожно.

Как установить ограничение прав пользователей на уровне записей в 1С 8.3

Включать возможность ограничения прав доступа на уровне записей нужно осторожно, поскольку работа программы 1С 8.3 сильно замедляется:

Ограничение права доступа на уровне записей

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

ограничение доступа к определенным организациям

Настройка доступа происходит в группе доступа:

Настройка доступа

На сайте ПРОФБУХ8 Вам могут быть интересны другие наши бесплатные статьи и материалы по конфигурациям: 1C 8.3 Бухгалтерия, 1C 8.3 ЗУП, 1C УТ. Полный список наших предложений можно посмотреть в каталоге.

Часть 2. Ограничение доступа к справочникам (Настраиваем права доступа в 1С Университет ПРОФ)

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

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

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

Таким образом, главный вопрос этой части статьи в том - как запретить доступ на редактирование к тем объектам, к которым доступ разрешен в типовой роли "Пользователь", не трогая саму роль, и, не создавая новых ролей, иметь возможность оперативно разрешать/запрещать доступ определенным пользователям (опять же исходя из цели, обозначенной в части 1, т.е. с минимальными изменениями в типовой конфигурации).


Здесь я опишу два способа (хотя их конечно может быть и больше). Рекомендую прочесть оба, чтобы определиться который Вам подходит и подходит ли вообще.

Начиная с версии 2.0.8 у роли "Пользователь" режим "Все функции" отключен в типовой конфигурации и никаких дополнительных действий не требуется.
Если же у Вас версия ниже, то рекомендуется, всё же немного подкорректировать роль "Пользователь" в конфигураторе, а именно в настройках прав убрать "Режим "Все функции".
Сильных проблем при последующем обновлении программы вызвать не должно, просто надо это запомнить, чтобы делать после каждого обновления. Так мы защитим от намеренного открытия некоторые важные объекты, вроде констант и справочников.



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

Если же случайный доступ принципиально нужно ограничить, то можно попробовать использовать следующее решение, которое позволит через стандартный административный интерфейс предоставлять доступ к справочникам или другим объектам избранным пользователям.

Суть решения: создать подписки на события в момент записи объектов (справочников, констант и т.п.), создать группы пользователей, которым разрешено/запрещено изменять объекты конфигурации, на основании групп предоставлять доступ к редактированию. Будут созданы только пара новых объектов конфигурации, поэтому проблем при обновлении быть не должно.


Т.к. мы не хотим менять типовые объекты конфигурации, то вместо изменения самих объектов для проверки доступа на редактирование к ним будем использовать подписки на события "ПередЗаписью".

Чтобы добавить подписку, необходимо установить следующий режим редактирования: на корневом узле установить "Объект поставщика редактируется с сохранением поддержки" (без наследования на подчиненные объекты):


Скорее всего данный режим у Вас уже установлен (если пользовались внешними обработками выгрузки данных в ФИС).

Начнем со справочников, рассмотрим всё на их примере, а остальные объекты (например, константы) делаются по аналогии.

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


Даем наименование (в моем случае "п_" - это регламентированный префикс для всех добавляемых объектов):


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

Теперь создаем подписку на событие (которая будет срабатывать при попытке записать элемент справочника):


(Если нужно, можно еще дополнительно сделать такую же подписку для констант, тогда в типе данных нужно выбрать "КонстантаМенеджерЗначения" и также для любых других объектов.)



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

Идея такова - для каждого объекта конфигурации, к которому нужно предоставить доступ, создается группа и любой пользователь, входящий в эту группу, будет иметь доступ на редактирование этого объекта. Можно делать как "разрешающие" группы, так и "запрещающие", т.е. если Вы хотите не всё запрещать, а оставить всё разрешенным (как по умолчанию) и потом отдельно запрещать редактирование некоторых объектов (тогда в указанном выше коде модуля нужно убрать строку "Отказ = Истина;", которая всё запрещает).

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


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


Примечание: наименование должно быть таким, как задано "ПолноеИмя" объекта в конфигураторе, например, "Справочник.Дисциплины", "Справочник.ЕдиницыИзмерения", "Константа.ЗаголовокСистемы" и т.п.


Теперь необходимо добавить код в созданный ранее модуль, чтобы обрабатывать вышеуказанные группы (текст кода для копирования см. ниже):


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

Если нужно сделать тоже самое для констант, то опять же создаем подписку "ПередЗаписью" на объекты констант, ссылаемся на ту же процедуру в нашем модуле. В группах создаем соответствующую группу и добавляем в нее пользователей.

В итоге код обеих процедур в нашем модуле может быть следующим:


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



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

Однако в этом способе нельзя использовать один и тот же объект как для разрешения, так и для запрета. Поэтому необходимо сразу определиться, что будет по умолчанию включено, а что нет.

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

Предисловие: после описания и обсуждения 1го способа, нами была избрана несколько иная стратегия для справочников - "стратегия запрета".

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

Например, справочники "Типы стандартов" или "Формы обучения" (нам бы не хотелось, чтобы любой из пользователей мог переименовать "очное" на "заочное" и т.п.).

Почему именно так, а не наоборот? Решение было принято из-за сроков (нужно сделать быстро), а "способ разрешения" опасен тем, что на данный момент мы точно не знаем, какие где справочники понадобятся при работе, и, если в разгар приемной кампании всё запретить, может встать работа сотрудников ПК.

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

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

Суть способа 2: всё разрешено для всех, но если что-то разрешено только для кого-то, то оно должно быть автоматически запрещено для всех остальных. Т.е. запрет не глобальный (как в способе 1), а объектно-ориентированный.

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

Реализовывать будем немного другим методом, в отличие от способа 1, а именно расширим стандартный механизм "Администрирование прав объекта" (знакомый нам по первой части статьи).

Механизм базируется на справочнике метаданных, в который нужно добавить имена объектов, доступ к которым нужно регулировать, например, "Справочник.ФормаОбучения", "Справочник.ТипыСтандартов" или "Константа.ЗаголовокСистемы" и т.п.


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

Для этого в "Администрировании прав группы" добавляем справочник дисциплин из справочника метаданных (кнопка "Подбор объектов") и ставим право "Изменять" или "Добавлять" ("галка Чтение" на данный момент будет проигнорирована).

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

Теперь нужно сделать обработчик для этих прав и метаданных. Для этого, как уже описывалось в способе 1 выше, создадим подписку "ПередЗаписью" на все справочники и/или другие нужные объекты.

Читайте также: