Поиск отсутствующего права в 1С: от текста ошибки до нужной роли

· 10 мин

Содержание

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

Типичная ситуация: менеджер звонит и говорит, что «1С не даёт сохранить реализацию», а на экране только Нарушение прав доступа!. Сам текст объект не называет, поэтому гадать по нему бесполезно. Определить и найти отсутствующие права доступа можно за четыре шага: текст ошибки, журнал, отладчик, роли. Порядок общий для платформы 8.3 и типовых конфигураций на БСП: Бухгалтерии 3.0, ЗУП 3.1, УТ 11.

Что говорит сам текст ошибки и с чего начать диагностику

Сообщение о нехватке прав бывает трёх видов, и каждый ведёт в своё место.

  • 🔒 Нарушение прав доступа! — платформа проверила право на объект метаданных и получила отказ. Это чистая нехватка роли или ограничение на уровне записей.
  • 📋 Пустой список или «пропавшие» документы без всякой ошибки — работает ограничение доступа на уровне записей (RLS): лишние строки просто не показываются.
  • ⚙️ Сообщение от самой конфигурации вида «Недостаточно прав для…» — это проверка, написанная разработчиком. Её текст обычно понятнее, но роль придётся искать по коду.

Перед поиском соберите три факта:

  1. Точное имя пользователя ИБ (не ФИО сотрудника, а логин из списка пользователей).
  2. Время сбоя с точностью до минуты.
  3. Действие: открыл список, открыл документ, нажал «Провести», сформировал отчёт, запустил обработку.

Нажмите в окне ошибки ссылку «Подробнее» и скопируйте полный текст. В нём часто есть стек вызовов: имя модуля и номер строки в фигурных скобках, например {Документ.РеализацияТоваровУслуг.МодульОбъекта(214)}. Это уже половина ответа: видно, где именно сработала проверка.

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

Ищем отказ в доступе через журнал регистрации

В пользовательском режиме журнал открывается так: Администрирование → Обслуживание → Журнал регистрации. Если раздела нет или прав на него не хватает, используйте Все функции → Стандартные → Журнал регистрации (команда «Все функции» включается в Сервис и настройки → Параметры). В Конфигураторе — Администрирование → Журнал регистрации.

Порядок отбора:

  1. Откройте отбор журнала.
  2. Поставьте интервал: 5 минут до и после сбоя.
  3. В поле «Пользователь» выберите нужного пользователя.
  4. В поле «События» отметьте группу Доступ и событие Отказ в доступе.
  5. Примените отбор и откройте найденную запись двойным щелчком.

В карточке события смотрите на поля «Метаданные» и «Данные». Там будет имя объекта, например Документ.РеализацияТоваровУслуг, и проверяемое право. Если событий отказа нет, снимите отбор по событию и оставьте только уровень Ошибка: исключение с текстом о нарушении прав и стеком тоже попадёт в журнал.

Что видно в журналеЧто это значитКуда идти дальше
Право Чтение на справочник или регистрПользователь открывает документ, а у него нет чтения связанного объектаРоль, дающая чтение этого объекта
Право Изменение / Проведение на документРоль даёт только просмотрПрофиль с ролью «Добавление и изменение…» этого документа
Право на регистр при проведенииДокумент пишет движения в регистр, на который прав нетРоль на регистр, обычно идёт в комплекте с ролью документа
Ошибка без объекта, только стекПроверка в коде конфигурацииОтладчик (следующий раздел)

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

Отладчик и замер производительности: точная строка проверки

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

Запуск отладки под нужным пользователем

  1. В Конфигураторе откройте Сервис → Параметры → Запуск 1С:Предприятия и укажите пользователя и пароль, под которым будет стартовать отладка. Если пароль пользователя вам неизвестен, заведите тестового пользователя с тем же профилем групп доступа — менять пароль сотрудника без договорённости нельзя.
  2. Включите Отладка → Остановка по ошибке и отметьте остановку на любых ошибках.
  3. Запустите Отладка → Начать отладку и повторите действие пользователя.
  4. Отладчик остановится на строке, где возникло исключение. Окно «Стек вызовов» покажет всю цепочку.

Для клиент-серверной базы на сервере 1С должна быть разрешена отладка. Если её нет, отладчик не остановится в серверном коде, и замер покажет только клиентскую часть.

Проверка права выражением

На строке остановки откройте «Вычислить выражение» и проверьте право прямо по объекту. Ту же проверку можно выполнить в серверной процедуре внешней обработки под администратором:

ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоИмени("Иванова");
Если ПользовательИБ = Неопределено Тогда
    Сообщить("Пользователь не найден");
Иначе
    Объект = Метаданные.Документы.РеализацияТоваровУслуг;
    Для Каждого Право Из СтрРазделить("Чтение,Добавление,Изменение,Удаление,Проведение", ",") Цикл
        Сообщить(Право + ": " + Формат(ПравоДоступа(Право, Объект, ПользовательИБ), "БЛ=Нет; БИ=Да"));
    КонецЦикла;
КонецЕсли;

Функция ПравоДоступа учитывает только роли пользователя. Ограничения на уровне записей она не видит: если она возвращает «Да», а ошибка остаётся, проблема в RLS.

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

Отладка → Замер производительности показывает все строки кода, выполненные во время действия. Если исключение перехватывается внутри конфигурации и пользователь видит только итоговое сообщение, по замеру видно, какие модули отработали последними. Это медленнее, чем остановка по ошибке, но выручает, когда ошибка «тихая».

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

В типовых конфигурациях на БСП роли не назначают вручную. Цепочка такая: пользователь → группа доступа → профиль группы доступа → набор ролей.

Где это настраивается в пользовательском режиме: Администрирование → Настройки пользователей и прав. Там три ссылки: «Пользователи», «Группы доступа», «Профили групп доступа».

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

Как найти роль, которая даёт нужное право

  1. В Конфигураторе откройте ветку Общие → Роли.
  2. В контекстном меню ветки выберите «Все роли». Откроется матрица «объекты × роли».
  3. Найдите объект из журнала регистрации и посмотрите, какие роли дают на него нужное право.
  4. Выберите роль с минимальным набором прав, а не «Полные права».

Как добавить роль пользователю

  1. Откройте «Профили групп доступа» и найдите профиль группы, в которую входит пользователь.
  2. Поставляемый профиль (с пометкой поставщика) изменить нельзя. Скопируйте его, дайте копии понятное имя, например «Менеджер + проведение возвратов».
  3. На вкладке ролей отметьте найденную роль и запишите профиль.
  4. Создайте группу доступа на этот профиль или переключите существующую группу на копию.
  5. Пользователь должен перезайти в программу: роли применяются при старте сеанса.
Способ дать правоКогда уместенРиск
Копия профиля + одна рольНе хватает одного-двух правМинимальный, права прозрачны
Дополнительная группа доступаПрава нужны части сотрудников отделаПользователь в нескольких группах, сложнее аудит
Профиль «Администратор»Никогда для обычной работыПолный доступ ко всем данным и настройкам

Ограничения на уровне записей (RLS): права есть, а данных нет

Если роли в порядке, а пользователь не видит документы чужой организации или получает отказ при открытии конкретного элемента, работает ограничение доступа на уровне записей. Включается оно флажком «Ограничивать доступ на уровне записей» в Администрирование → Настройки пользователей и прав.

Признаки, что дело в RLS:

  • 👀 в списке видны не все документы, хотя отборов нет;
  • 🧾 отчёт по одной организации формируется, по другой — пустой или с ошибкой;
  • 🔗 документ открывается, а при выборе контрагента или склада нужные элементы не находятся;
  • ✅ ПравоДоступа по объекту возвращает «Да».

Где смотреть ограничения

  1. Откройте группу доступа пользователя.
  2. Перейдите на вкладку ограничений доступа. Для каждого вида доступа (организации, группы контрагентов, склады — набор зависит от конфигурации) задано: «Все разрешены» или «Все запрещены» плюс список исключений.
  3. Сравните список с тем, что пытается открыть пользователь. Чаще всего забыли добавить новую организацию или новую группу контрагентов.

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

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

Документ ссылается на запрещённые данные

Отдельный случай — документ разрешён, но в табличной части есть номенклатура или контрагент из запрещённой группы. Тогда открытие или проведение даёт отказ, хотя «свой» документ пользователь видит. Найдите в документе элемент из чужой группы и решите: расширить группе доступ или перенести элемент.

Системные права: запуск, внешние обработки, служебные режимы

Некоторые права относятся не к объектам, а к программе целиком. Они задаются на уровне конфигурации в роли и не видны в матрице по объектам — их ищут на первой строке «Все роли», где стоит сама конфигурация.

Что не работаетКакого права нет
Не запускается тонкий клиент, веб-клиент или толстый клиентПраво на запуск соответствующего клиента
Внешняя обработка или отчёт из файла не открываетсяИнтерактивное открытие внешних обработок / внешних отчётов
Не работает загрузка через COM или внешнее соединениеВнешнее соединение / Automation
Не открывается журнал регистрацииЖурнал регистрации
Нет команды «Все функции»Режим «Все функции»
Не сохраняются настройки форм и отчётовСохранение данных пользователя

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

Права «Администрирование» и «Монопольный режим» рядовым пользователям не выдают даже ради одной операции. Проще выполнить операцию под администратором или вынести её в регламентное задание.

Если не помогло: привилегированный код, сеанс и кэш

Бывает, что роль добавили, RLS проверили, а ошибка повторяется. Что ещё проверить:

  1. Пользователь не перезашёл. Роли читаются при старте сеанса. Попросите закрыть программу полностью, а не открыть новое окно.
  2. Не тот пользователь. Сотрудник входит через ОС-аутентификацию под другим логином ИБ, чем вы правите. Сверьте имя в журнале регистрации.
  3. Изменили не ту группу. Пользователь входит в несколько групп, а копия профиля назначена группе, в которую он не входит.
  4. Проверка в расширении. Если в базе есть расширения, они могут добавлять свои роли и свои проверки. Стек вызовов в «Подробнее» покажет модуль расширения.
  5. Ошибка в фоновом или регламентном задании. Задание выполняется от имени пользователя, указанного в его настройках, и ему тоже нужны права. Ищите в журнале события по этому пользователю, а не по тому, кто нажал кнопку.

Для разбора сложных случаев на сервере включают технологический журнал с событием EXCP: он фиксирует исключения с контекстом даже тогда, когда конфигурация их перехватывает. Настраивается файлом logcfg.xml в каталоге настроек сервера 1С. Включайте его на короткое время: при активной работе файлы быстро растут.

Перед тем как закрыть обращение
Выполнено: 0 / 6

Частые вопросы

Можно ли посмотреть все права пользователя одним списком?
Да. В конфигурациях на БСП из карточки пользователя открывается отчёт по его правам доступа: роли, группы и разрешённые значения. В Конфигураторе состав ролей видно в свойствах пользователя, но менять его там не стоит.
Почему у двух бухгалтеров с одинаковым профилем разные права?
Профиль одинаковый, а группы доступа разные: у групп свои ограничения по организациям и другим видам доступа. Ещё один вариант — один из них входит в дополнительную группу.
Почему отчёт формируется без ошибки, но с меньшими суммами?
Запросы в отчётах обычно содержат слово РАЗРЕШЕННЫЕ, поэтому запрещённые записи молча отбрасываются. Это работа RLS, а не ошибка отчёта. Сверьте ограничения группы доступа.
Нужно ли перезапускать сервер 1С после изменения прав?
Нет. Достаточно, чтобы пользователь закрыл сеанс и вошёл заново. Перезапуск службы оборвёт работу всех пользователей и прав не добавит.
Можно ли дать право только на один документ, а не на весь вид документов?
Ролью — нет, роль даёт право на весь вид объектов. Ограничить конкретными записями можно через виды доступа в группе, например по организации или складу.