Разбор ошибки «Нарушение прав доступа»: какие роли дать и что пользователь получит в придачу
Администрирование - Роли и права
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Типичная переписка: пользователь присылает окно с ошибкой, администратор открывает «Настройки пользователей и прав» и начинает перебирать профили наугад. Первый подходящий профиль часто оказывается «Администратором» или «Бухгалтером» — ошибка исчезает, а у кладовщика появляется доступ к зарплате. Эта обработка отвечает на два вопроса: на что именно не хватило прав и что ещё получит пользователь, если дать ему ту или иную роль.
Пример: ошибка, где объект спрятан в стеке
Пользователь загружает поступления внешней обработкой и получает:
Ошибка при вызове метода контекста (Записать)
{ОбщийМодуль.ШаблоныНаименований.Модуль(127)}:Константы.ШаблонНаименованияДоговоров.Установить(ШаблонОбъект.Ссылка);
{Справочник.КатегорииНоменклатуры.МодульОбъекта(56)}:ШаблоныНаименований.СоздатьШаблоныПоУмолчанию(Ссылка);
...
по причине:
Нарушение прав доступа!
На первый взгляд — проблема с категориями номенклатуры или шаблонами. Обработка показывает первой строкой константу «Шаблон наименования договоров», право «Изменение»: её меняет код верхнего кадра стека при записи категории. Справочник категорий она тоже показывает, но с пометкой «по стеку» — это место вызова, а не нарушение. Для константы находятся три роли; самая узкая, «Добавление и изменение контрагентов», добавит пользователю 33 права на 12 справочников — и обработка перечисляет их все, прежде чем вы её выдадите.
Что можно вставить — и что получится
| Что вставили | Что найдено | Надежность |
|---|---|---|
| Недостаточно прав для работы с таблицей "РегистрСведений.ЦеныНоменклатуры" | Регистр «Цены номенклатуры», чтение (для таблицы табличной части — чтение самого документа) | точно |
| Стек с Константы.Х.Установить, Справочники.Х.СоздатьЭлемент, РегистрыСведений.Х.СоздатьНаборЗаписей | Объект и право по методу: изменение, добавление, чтение | вероятно |
| {Документ.Х.МодульОбъекта(25)}: … (Записать) … Нарушение прав доступа! | Документ, изменение (провести — проведение, удалить — удаление) | по стеку |
| Только «Нарушение прав доступа!» | Кнопка «Найти в журнале регистрации» — событие «Доступ. Отказ в доступе» с точным объектом и правом | точно |
| Внешнее соединение не разрешено…, Пользователю недостаточно прав для выполнения операции | Общие права программы: внешнее соединение, администрирование, открытие внешних обработок, способы входа | точно / вероятно |
| объект: 'Справочник.Х', табличная часть: 'Т'; право: 'Чтение' (ошибка ограничения доступа БСП) | Объект и право + пояснение, что причиной может быть не роль, а сбой ограничения доступа | точно |
Три отличия от ручного поиска роли
1. Видно, что придёт в придачу. Для каждой роли и каждого профиля считается разница «права варианта минус права пользователя»: сколько основных прав добавится (чтение, добавление, изменение, удаление, проведение, использование отчётов и обработок, разделы, общие права) и на какие объекты — деревом по видам. Колонка «Добавится прав» окрашена: до 20 — зелёная, до 200 — жёлтая, больше — красная. Варианты отсортированы от самых узких; административные роли и профили — в конце, красным.
2. Роли расширений и профили БСП — в одном списке. Роли подключённых расширений помечены именем расширения. Если в конфигурации есть профили групп доступа, рядом с ролями показаны профили, которые эти роли содержат, и группы доступа, через которые профиль можно получить.
3. Несколько ошибок — один набор. Если строк в списке несколько (из текста, из журнала, добавленных вручную), кнопка «Подобрать роли на все» ищет набор ролей, который закрывает все нарушения с наименьшим числом лишних прав. На демобазе для трёх нарушений нашлись три узкие роли с добавкой 25 прав — вместо одной широкой роли, которая закрывала всё сразу ценой 6 с лишним тысяч прав.
Вопросы и ответы
Право у пользователя есть, а ошибка была. Что тогда?
Строка помечается «уже есть», и обработка объясняет почему. Если все роли пользователя, дающие это право, ограничены на уровне записей (RLS), — перечисляет его группы доступа и разрешённые в них значения (организации, склады…). Если нет — подсказывает перезапуск сеанса (роли применяются при входе) или проверку журнала: нарушение могло относиться к другому объекту.
Права считаются по моей конфигурации или по справочнику?
По вашей: каждое право проверяет сама платформа функцией ПравоДоступа для ролей и для выбранного пользователя. Поэтому работает в любой конфигурации на 8.5, с доработанными ролями и ролями расширений.
Можно ли сразу выдать роль?
Да, это тестовая функция с подтверждением: включить пользователя в группу доступа, профиль которой содержит роль, добавить роль в собственный (непоставляемый) профиль пользователя или — без БСП — назначить роль напрямую. Поставляемые профили и профиль «Администратор» обработка не меняет. Перед выдачей сделайте резервную копию.
Права на отдельные реквизиты?
Учитываются: «Справочник.Х.Реквизит.Y», «…ТабличнаяЧасть.Т…» — с правами «Просмотр» и «Редактирование». Если у пользователя нет просмотра самого объекта, об этом будет отдельное предупреждение.
Что нужно для работы и что проверено?
Платформа 8.5, управляемые формы, права администратора у того, кто запускает (читаются роли пользователей и журнал регистрации). Подключается через «Дополнительные отчёты и обработки» или открывается как внешний файл. Проверено на УНФ 3.0.14 в файловом варианте: автотест из 35 проверок через COM и прохождение формы в клиенте. Код открыт.
Проверено на следующих конфигурациях и релизах:
- Управление нашей фирмой, редакция 3.0, релизы 3.0.14.168
Вступайте в нашу телеграмм-группу Инфостарт