Почему возникает ошибка «Нет прав на запись нового физического лица» и как ее исправить

Программист 1С v8.3 (Управляемые формы) 1С:ERP Управление предприятием
← На главную

При работе в крупных конфигурациях на базе 1С:Предприятие 8.3, таких как 1С:ERP Управление предприятием или 1С:Комплексная автоматизация 2, пользователи часто сталкиваются с ситуацией, когда при создании нового сотрудника система выдает ошибку: «Нет прав на запись нового физического лица». При этом администратор системы видит, что все необходимые роли в конфигураторе назначены, а галочки прав на чтение и добавление стоят. Рассмотрим подробно, почему стандартных ролей бывает недостаточно и как решить эту проблему программными и административными методами.

Анализируем контекст возникновения проблемы

Прежде всего, проанализируем ситуацию: чаще всего ошибка возникает не при прямом создании записи в справочнике ФизическиеЛица, а при попытке создать физическое лицо «на лету» из формы создания Сотрудника. В современных типовых решениях эти два объекта тесно взаимосвязаны, но управляются разными механизмами проверки прав.

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

Выясняем причину: Программная проверка в модуле «СотрудникиФормы»

В типовых конфигурациях права доступа определяются не только на уровне метаданных (ролей), но и программно в общих модулях. Разберем по шагам, где именно искать причину. Как правило, логика проверки сосредоточена в общем модуле СотрудникиФормы. Обратим внимание на примерное условие, которое может приводить к ошибке (условно строка 1227):


// Фрагмент типичной проверки в модуле СотрудникиФормы
Если Не СотрудникиФормы.ЕстьПраваНаИзменениеФизическогоЛица(ДанныеФизЛица) Тогда
    ТекстОшибки = НСтр("ru = 'Нет прав на запись нового физического лица.'");
    Отказ = Истина;
КонецЕсли;

Проанализируем ситуацию: код может проверять не просто наличие роли ДобавлениеИзменениеФизическихЛиц, а дополнительные условия, такие как:

  1. Включена ли функциональная опция «Использовать расчет зарплаты и кадровый учет». При ее включении механизмы проверки прав становятся значительно строже.
  2. Является ли создаваемое лицо сотрудником сторонней организации, к которой у текущего пользователя нет доступа.
  3. Пытается ли пользователь изменить данные уже существующего в базе лица (при срабатывании механизма поиска двойников), на которое у него нет прав.

Разбираем влияние RLS (ограничение доступа на уровне записей)

Даже если у пользователя есть полные права на справочник ФизическиеЛица, в ERP и КА часто включен механизм RLS. Рассмотрим, как это работает в контексте нашей проблемы. Для физических лиц часто настраивается доступ по «Группам доступа физических лиц».

Если в системе создана новая роль (например, через расширение или напрямую в конфигураторе), она может не учитываться в существующих Профилях групп доступа. Выясним, что нужно сделать в режиме «1С:Предприятие»:

  1. Перейдем в раздел Администрирование — Настройки пользователей и прав — Профили групп доступа.
  2. Найдем профиль, назначенный пользователю.
  3. Проверим вкладку «Виды доступа». Если там указан вид доступа «Физические лица», убедимся, что для пользователя разрешены значения этого справочника (либо установлено «Все разрешены, кроме исключений»).

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

Механизм поиска двойников и права на просмотр

Проанализируем еще одну скрытую причину. При записи нового физического лица система автоматически ищет похожих людей по ФИО, СНИЛС или ИНН. Если система находит «двойника», она пытается прочитать его данные для сравнения.

Если у пользователя есть право на Добавление, но из-за настроек RLS нет права на Просмотр определенных групп физических лиц, то в момент поиска двойников произойдет конфликт прав. Система «увидит», что в базе кто-то есть, попытается получить доступ к полям этого объекта и получит отказ от платформы. В итоге пользователь увидит сообщение о нехватке прав на запись.

Решение проблемы через отладчик

Для точного определения причины рекомендуется использовать отладку. Рассмотрим алгоритм действий программиста:

  1. Установим точку останова в процедуре ПередЗаписью модуля справочника ФизическиеЛица.
  2. Если до этой точки выполнение не доходит, установим точку останова в общем модуле СотрудникиФормы, в процедурах, отвечающих за сохранение данных формы (например, ПодготовитьКЗаписиОбъект или аналогичные).
  3. Воспользуемся инструментом «Замер производительности». Запустим замер, нажмем «Записать» в форме, получим ошибку и остановим замер. В списке выполненных строк кода ищем последнюю команду перед генерацией исключения или установкой флага Отказ = Истина.

Особенности использования расширений

Если вы добавили новую роль через расширение (как упоминалось в обсуждении), важно проверить свойства самого расширения. Разберем важный нюанс: свойство «Использовать основные роли для всех пользователей». Если оно выключено, то роль, добавленная в расширении, не будет действовать автоматически. Ее нужно либо явно назначить пользователю в конфигураторе, либо добавить в профиль групп доступа в режиме Предприятия.

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

Резюме: контрольный список для исправления ошибки

Чтобы окончательно решить проблему, выполним следующие действия:

  1. Проверим связку ролей: убедимся, что у пользователя есть одновременно роли на изменение и Сотрудников, и ФизическихЛиц.
  2. Обновим кэш прав: в режиме Предприятия через «Обслуживание» запустим обновление параметров системы, чтобы новые роли из расширений «прописались» в справочниках БСП.
  3. Настроим группы доступа: проверим, не ограничена ли запись физлиц через RLS в профиле группы доступа.
  4. Проанализируем код: найдем в модуле СотрудникиФормы (в районе строки 1227 или по поиску текста ошибки) конкретное условие, которое вызывает отказ, и проверим, какие именно данные (функциональные опции, значения полей) приводят к невыполнению этого условия.

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

← На главную