При работе в крупных конфигурациях на базе 1С:Предприятие 8.3, таких как 1С:ERP Управление предприятием или 1С:Комплексная автоматизация 2, пользователи часто сталкиваются с ситуацией, когда при создании нового сотрудника система выдает ошибку: «Нет прав на запись нового физического лица». При этом администратор системы видит, что все необходимые роли в конфигураторе назначены, а галочки прав на чтение и добавление стоят. Рассмотрим подробно, почему стандартных ролей бывает недостаточно и как решить эту проблему программными и административными методами.
Прежде всего, проанализируем ситуацию: чаще всего ошибка возникает не при прямом создании записи в справочнике ФизическиеЛица, а при попытке создать физическое лицо «на лету» из формы создания Сотрудника. В современных типовых решениях эти два объекта тесно взаимосвязаны, но управляются разными механизмами проверки прав.
Когда мы нажимаем кнопку «Записать» в карточке сотрудника, система инициирует сложную транзакцию, в ходе которой выполняется проверка возможности создания сопутствующей записи в справочнике физических лиц. Если в этот момент срабатывает отказ, транзакция прерывается.
В типовых конфигурациях права доступа определяются не только на уровне метаданных (ролей), но и программно в общих модулях. Разберем по шагам, где именно искать причину. Как правило, логика проверки сосредоточена в общем модуле СотрудникиФормы. Обратим внимание на примерное условие, которое может приводить к ошибке (условно строка 1227):
// Фрагмент типичной проверки в модуле СотрудникиФормы
Если Не СотрудникиФормы.ЕстьПраваНаИзменениеФизическогоЛица(ДанныеФизЛица) Тогда
ТекстОшибки = НСтр("ru = 'Нет прав на запись нового физического лица.'");
Отказ = Истина;
КонецЕсли;
Проанализируем ситуацию: код может проверять не просто наличие роли ДобавлениеИзменениеФизическихЛиц, а дополнительные условия, такие как:
Даже если у пользователя есть полные права на справочник ФизическиеЛица, в ERP и КА часто включен механизм RLS. Рассмотрим, как это работает в контексте нашей проблемы. Для физических лиц часто настраивается доступ по «Группам доступа физических лиц».
Если в системе создана новая роль (например, через расширение или напрямую в конфигураторе), она может не учитываться в существующих Профилях групп доступа. Выясним, что нужно сделать в режиме «1С:Предприятие»:
Если пользователь пытается создать физлицо, которое автоматически попадает в группу доступа, к которой у него нет прав на «Добавление», система выдаст ошибку прав доступа еще до момента физической записи в базу.
Проанализируем еще одну скрытую причину. При записи нового физического лица система автоматически ищет похожих людей по ФИО, СНИЛС или ИНН. Если система находит «двойника», она пытается прочитать его данные для сравнения.
Если у пользователя есть право на Добавление, но из-за настроек RLS нет права на Просмотр определенных групп физических лиц, то в момент поиска двойников произойдет конфликт прав. Система «увидит», что в базе кто-то есть, попытается получить доступ к полям этого объекта и получит отказ от платформы. В итоге пользователь увидит сообщение о нехватке прав на запись.
Для точного определения причины рекомендуется использовать отладку. Рассмотрим алгоритм действий программиста:
ПередЗаписью модуля справочника ФизическиеЛица.СотрудникиФормы, в процедурах, отвечающих за сохранение данных формы (например, ПодготовитьКЗаписиОбъект или аналогичные).Отказ = Истина.Если вы добавили новую роль через расширение (как упоминалось в обсуждении), важно проверить свойства самого расширения. Разберем важный нюанс: свойство «Использовать основные роли для всех пользователей». Если оно выключено, то роль, добавленная в расширении, не будет действовать автоматически. Ее нужно либо явно назначить пользователю в конфигураторе, либо добавить в профиль групп доступа в режиме Предприятия.
Также проверим, нет ли в расширении перехвата метода &Вместо для процедур проверки прав. Ошибка в логике расширения (например, некорректное условие Если...Тогда) часто становится причиной блокировки записи для обычных пользователей при сохранении корректности прав для Администратора.
Чтобы окончательно решить проблему, выполним следующие действия:
Сотрудников, и ФизическихЛиц.СотрудникиФормы (в районе строки 1227 или по поиску текста ошибки) конкретное условие, которое вызывает отказ, и проверим, какие именно данные (функциональные опции, значения полей) приводят к невыполнению этого условия.Совместный анализ программных проверок и настроек прав доступа позволит быстро локализовать и устранить ошибку, обеспечив бесперебойную работу кадровой службы.