1с новая роль не работает
На последней платформе 1С 8.3 для управления правами доступа пользователей, используется отдельный объект метаданных. Называется объект «Роли» и находится в конфигураторе, в ветке Общие/Роли. Роль определяет список прав пользователя.
Для каждого объекта (справочники, документы), разработчиком устанавливается определенный набор прав на чтение/на запись/на добавление/на изменение/… Как правило, роли пользователей 1С создаются отдельно для каждого вида деятельности пользователя. Каждому пользователю может быть присвоено одна или несколько ролей пользователя в системе.
При создании ролей доступа пользователей конфигурации лучше придерживаться методики установки прав на объекты метаданных в 1С, которая не допускала бы появления в конфигурации платформы 1С ролей, которые дают доступ к полям объекта, но в то же время не предоставляют права к самому объекту. Например, когда в правах прописан доступ на изменение даты договора, а на редактирование самого договора право не предоставлено.
Окно создания роли доступа пользователя, в нем есть область «Объекты», область «Права», область «Ограничения доступа к данным».
Окно создания роли доступа пользователя
Область «Объекты» – это перечень объектов конфигурации, на которые будут настраиваться права.
Область «Права» – это набор прав, которые доступны для данного объекта конфигурации.
«Устанавливать права для новых объектов» – данная настройка означает, что при создании новых объектов пользователю автоматически будут присваиваться права для работы с ними.
«Устанавливать права для реквизитов и табличных частей по умолчанию» – данная означает, что реквизиты и табличные части объекта унаследуют права владельца.
«Независимые права подчиненных объектов» – при определении прав на объект система использует права на родительский объект.
2. Функции в программном коде 1С
Узнать, достаточно ли прав у пользователя в 1С 8.3 можно при помощи функций, предусмотренных программным кодом 1С.
Функция РольДоступна() определяет, доступна ли данная роль доступа пользователю.
Если РольДоступна("ПолныеПрава") Тогда Сообщить("У вас достаточный набор прав!");
Иначе Сообщить("У вас недостаточный набор прав!");
Функция ПравоДоступа() позволяет определить права на объект при обращении пользователя к объекту метаданных.
Справочник=Справочники. Контрагенты;
Если Не ПравоДоступа ("Чтение",Справочник) Тогда
Сообщить ("Доступ к данномусправочникузакрыт!");
Функция ПараметрыДоступа() определяет права и ограничения на заданный объект метаданных для указанного пользователя.
Для Каждого Роль Из Метаданные.Роли Цикл
Для Каждого ОбъектОбработка Из Метаданные.Обработки Цикл
ОбластьСтрока.Параметры.Редактирование = ?(ПараметрыДоступа("Использование" , ОбъектОбработка, , Роль).Доступность, "Да", "Нет");
ОбластьСтрока.Параметры.Просмотр = ?(ПараметрыДоступа("Просмотр",ОбъектОбработка, , Роль).Доступность, "Да", "Нет");
ОбластьСтрока.Параметры.Роль = Роль.Синоним;
ОбластьСтрока.Параметры.Объект = ОбъектОбработка.Синоним;
ТаблДокумент.Вывести(ОбластьСтрока);
Для разных объектов метаданных набор прав пользователей будет отличаться. Права на объекты конфигурации есть основные, а есть интерактивные.
Интерактивные – это интерфейсные права из формы списка\элемента. Например, для объекта не выбрано право «интерактивное добавление», тогда из формы списка добавить новый элемент не будет возможности. Существуют два типа прав: права на форму и права на объект.
Права на объект – это ограничения, которые накладываются на сам объект в базе во время его изменения (создание, изменение, удаление) или чтения именно в физической таблице.
Пример: создаём новый, читаем, редактируем, удаляем элемент, при этом проверка на доступ проходит на уровне объекта.
Права на просмотр – права, предоставленные на уровне интерфейса. Можно реализовать подобный функционал уже в самой конфигурации, создав регистр, в который будут занесены все элементы нужных форм, и при открытии форм проверять, какие элементы выключить, какие скрыть, какие поля запретить для редактирования и т.д.
3. Настройки 1C RLS
В последней платформе 1С 8.3, есть возможность настроить права пользователей на уровне отдельных записей. Данный механизм называется RLS (ограничение прав на уровне записей). Работает механизм на объектном уровне. Например, можно использовать запрос в котором запрещается редактирование (чтение, удаление, добавление и т.д.) не всех контрагентов, а только выбранных элементов.
Самый распространенный вариант настройки в 1C RLS – это настройка ограничения видимости объектов системы пользователя в разрезе, например, организаций (пользователь видит лишь «свои» данные). Недостаток 1С RLS заключаются в том, что настройка и отладка данного функционала – весьма трудоемкий процесс, кроме того, сказывающийся на производительности программы.
Специалист компании «Кодерлайн»
Вас могут заинтересовать следующие статьи:
Столкнулся с небольшой проблемкой при создании "своих" ролей в конфигураторе и добавлении их пользователям. Пользователю не добавляются созданные в конфигураторе роли, 1С 8.3, Управляемые формы. Гуглил много, ответа толкового не нашёл, поэтому пришлось разбираться самому и как результат, решил поделиться опытом. Возможно, кому-то пригодится.
Столкнулся с небольшой проблемкой при создании "своих" ролей в конфигураторе и добавлении их пользователям. Гуглил много, ответа толкового не нашёл, поэтому пришлось разбираться самому и как результат, решил поделиться опытом. Возможно кому-то пригодится.
Итак, проблема заключалась в следующем:
В какой-либо конфигурации на управляемых формах создаём свою роль (или несколько ролей, как в примере) (см. рис.1), обновляем конфигурацию. В режиме предприятия создаём профиль групп доступа с нашей новой ролью (см. рис.2), добавляем пользователю этот профиль (см. рис.3) и. ничего не происходит, как-будто у этого пользователя не добавлена наша роль. Заходим в конфигуратор, администрирование, пользователи, заходим в пользователя, смотрим "доступные роли" и видим, что у нашего пользователя не выбрана наша роль (см. рис.4).
Почему так происходит? Всё очень просто, разработчики сделали так, что если пользователь "администратор", то есть у него полные права, то собственно говоря, зачем же ему ещё какие-то роли? Ведь у него же и так полные права!
В целом вполне логично и кстати если пользователь не администратор, то всё работает корректно (см. рис.5 и рис.6). Сложности возникают только в том случае, если мы хотим добавить нашу роль/роли пользователю с полными правами. Можно конечно просто в конфигураторе выбрать у пользователя нашу роль/роли, но всё будет работать ровно до тех пор, пока кто-нибудь не решит перезаписать в режиме предприятия права доступа у этого пользователя, после этого "галочка" у добавленной роли "слетит".
Что же делать и где это происходит?
Идём в общие модули - "УправлениеДоступомСлужебный", находим процедуру "ОбновитьРолиПользователей". В ней есть следующий код:
"НовыеРоли" это Таблица значений, в которой выбраны все роли пользователя, которые мы ему назначили в режиме предприятия (включая "наши" роли). Как видно далее по коду, эта таблица очищается, в неё добавляются "ОбязательныеРолиАдминистратора" (Администратор системы, Полные права) и если выбрано, "ДополнительныеРолиАдминистратора" (Интерактивное открытие внешних отчетов и обработок).
Как мне показалось, самый простой и очевидный вариант, это добавить "наши" роли в таблицу "НовыеРоли". Для этого нам надо как-то отделить эти роли от всех остальных, поэтому у всех добавленных нами в конфигураторе ролей, делаем префикс "Доп_". Те "наши" роли, которые мы выбрали для пользователя, собираем в массив "ВыбранныеДополнительныеРоли" и далее из этого массива добавляем роли в таблицу значений "НовыеРоли". Ниже представлен код:
В заключение добавлю, процедура "ОбновитьРолиПользователей" абсолютна одинакова у многих конфигураций (благодаря "унификации" 1С), смотрел в УНФ 1.6, Бухгалтерия предприятия 3.0, Управление торговлей 11.4 (все конфигурации в нескольких версиях), поэтому сделал расширение, которое по идее должно работать на многих конфигурациях на управляемых формах. Можете скачать и добавить его себе, но предварительно не забудьте, что все добавленные роли должны иметь префикс "Доп_". Расширение написано на версии платформы: 8.3.12.1685. В расширение добавлен один общий модуль "УправлениеДоступомСлужебный", в котором только одна процедура "ОбновитьРолиПользователей" (&Вместо) с добавленным, по описанию выше, кодом. При добавлении расширения, не забываем снять галочки "безопасный режим" и "защита от опасных действий".
Бывает в работе с 1С возникает такая ситуация, вы создали в конфигураторе новые Роли, прописали их права, создали новый Профиль групп доступа, отметили ему необходимые Роли, назначили Профиль пользователю. После чего понимаете что нужных прав у пользователя не появилось. Заходите в конфигуратор, а галочки напротив новых ролей не стоят.
Роли в конфигураторе 1С
Очень неприятно, много работы впустую. В чем же может быть дело? Мне известно 2 причины, рассмотрим их в данной статье.
1. Нужно запустить обработку Обновление вспомогательных данных
Данная обработка может быть либо встроена в конфигурацию, либо ее можно найти на диске ИТС. Эту обработку нужно запускать после добавления новых ролей. Она обновит данные в справочнике «Идентификаторы объектов метаданных». Причем порядок ваших действий должен быть такой:
- Снять галочки в правах пользователей с вашего нерабочего профиля
- Удалить нерабочий профиль
- Запустить обработку
- Создать новый профиль с вашей новой ролью
- Назначить профиль пользователям
Если у вас планируется обновление конфигурации можете вместо запуска обработки выполнить его, т.к. во время обновления все эти функции тоже запускаются.
2. Назначение новой роли пользователю с правами Администратора
Если вы проделали все предыдущие пункты, но ваш профиль групп доступа все равно не назначает роли и права, обратите внимание на такой момент — в типовых конфигурациях 1С последних версий, если у пользователя есть роль Администратор или Полные права то вы не сможете присвоить ему какую-либо другую роль. Это прописано в коде программы и при назначении ролей идет проверка «Если роль Администратор или Полные права тогда» назначение ролей пропускается.
Видимо разработчики пользовались такой логикой, что раз у пользователя итак полные права, дополнительные роли ему не понадобятся. Но мы конечно понимаем, что это не так и ситуации и запросы у пользователей к разработчику могут быть разными.
Покажу вам, один пример как я поступила в данной ситуации, может это конечно не лучший вариант, но со свой задачей он справляется.
Задача была запретить пользователю с полными правами открывать справочник пользователей, причем чтоб раздавать этот запрет мог руководитель при помощи профилей групп доступа.
Столкнулся с небольшой проблемкой при создании "своих" ролей в конфигураторе и добавлении их пользователям. Пользователю не добавляются созданные в конфигураторе роли, 1С 8.3, Управляемые формы. Гуглил много, ответа толкового не нашёл, поэтому пришлось разбираться самому и как результат, решил поделиться опытом. Возможно, кому-то пригодится.
Столкнулся с небольшой проблемкой при создании "своих" ролей в конфигураторе и добавлении их пользователям. Гуглил много, ответа толкового не нашёл, поэтому пришлось разбираться самому и как результат, решил поделиться опытом. Возможно кому-то пригодится.
Итак, проблема заключалась в следующем:
В какой-либо конфигурации на управляемых формах создаём свою роль (или несколько ролей, как в примере) (см. рис.1), обновляем конфигурацию. В режиме предприятия создаём профиль групп доступа с нашей новой ролью (см. рис.2), добавляем пользователю этот профиль (см. рис.3) и. ничего не происходит, как-будто у этого пользователя не добавлена наша роль. Заходим в конфигуратор, администрирование, пользователи, заходим в пользователя, смотрим "доступные роли" и видим, что у нашего пользователя не выбрана наша роль (см. рис.4).
Почему так происходит? Всё очень просто, разработчики сделали так, что если пользователь "администратор", то есть у него полные права, то собственно говоря, зачем же ему ещё какие-то роли? Ведь у него же и так полные права!
В целом вполне логично и кстати если пользователь не администратор, то всё работает корректно (см. рис.5 и рис.6). Сложности возникают только в том случае, если мы хотим добавить нашу роль/роли пользователю с полными правами. Можно конечно просто в конфигураторе выбрать у пользователя нашу роль/роли, но всё будет работать ровно до тех пор, пока кто-нибудь не решит перезаписать в режиме предприятия права доступа у этого пользователя, после этого "галочка" у добавленной роли "слетит".
Что же делать и где это происходит?
Идём в общие модули - "УправлениеДоступомСлужебный", находим процедуру "ОбновитьРолиПользователей". В ней есть следующий код:
"НовыеРоли" это Таблица значений, в которой выбраны все роли пользователя, которые мы ему назначили в режиме предприятия (включая "наши" роли). Как видно далее по коду, эта таблица очищается, в неё добавляются "ОбязательныеРолиАдминистратора" (Администратор системы, Полные права) и если выбрано, "ДополнительныеРолиАдминистратора" (Интерактивное открытие внешних отчетов и обработок).
Как мне показалось, самый простой и очевидный вариант, это добавить "наши" роли в таблицу "НовыеРоли". Для этого нам надо как-то отделить эти роли от всех остальных, поэтому у всех добавленных нами в конфигураторе ролей, делаем префикс "Доп_". Те "наши" роли, которые мы выбрали для пользователя, собираем в массив "ВыбранныеДополнительныеРоли" и далее из этого массива добавляем роли в таблицу значений "НовыеРоли". Ниже представлен код:
В заключение добавлю, процедура "ОбновитьРолиПользователей" абсолютна одинакова у многих конфигураций (благодаря "унификации" 1С), смотрел в УНФ 1.6, Бухгалтерия предприятия 3.0, Управление торговлей 11.4 (все конфигурации в нескольких версиях), поэтому сделал расширение, которое по идее должно работать на многих конфигурациях на управляемых формах. Можете скачать и добавить его себе, но предварительно не забудьте, что все добавленные роли должны иметь префикс "Доп_". Расширение написано на версии платформы: 8.3.12.1685. В расширение добавлен один общий модуль "УправлениеДоступомСлужебный", в котором только одна процедура "ОбновитьРолиПользователей" (&Вместо) с добавленным, по описанию выше, кодом. При добавлении расширения, не забываем снять галочки "безопасный режим" и "защита от опасных действий".
Описан готовый механизм решения следующей проблемы:
При добавлении ролей в расширение конфигурации 1С 8.3 нет возможности в режиме предприятия корректно назначить их пользователю с полными правами (Администратору). Т.к. отрабатывает стандартный код общего модуля 1С УправлениеДоступомСлужебный процедуры ОбновитьРолиПользователей, который сбрасывает все роли, переназначая основную (ПолныеПрава) и дополнительную (ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок).
А теперь разберем пример на «простом языке».
Была задача создать новые роли в расширении. Режим совместимости конфигурации ниже 8.3.13 (т.е. нет возможности применения «Основные роли» в том числе). При назначении ролей полноправным пользователям выявлена проблема: роли из расширения конфигурации 1С 8.3 недоступны (по вышеуказанной причине).
2. Решение проблемы с ошибкой при расширении конфигурации
Решение можно реализовать как в текущем, так и в отдельном расширении:
1. Добавить в расширение общий модуль УправлениеДоступомСлужебный:
2. Заменить процедуру ОбновитьРолиПользователей
Копировать код 1С:Предприятия из основной конфигурации. Между строк вставить код:
(!) Тут укажите имя своего расширения, которое содержит ваши роли:
3. Подключите (или обновите) расширение.
4. Назначьте эти роли в режиме 1С:Предприятия (Роли – в Профиле, Профиль – в Группе доступа, Группу доступа – полноправному пользователю).
Специалист компании «Кодерлайн»
Вас могут заинтересовать следующие статьи:
94 [PROP_CODE] => TAGS2 [TITLE] => Вас могут заинтересовать следующие семинары: ) --> 95 [PROP_CODE] => TAGS [TITLE] => Вас могут заинтересовать следующие вебинары: ) -->
Вас могут заинтересовать следующие вебинары:
Читайте также: