При работе в конфигурации 1С:Управление торговлей (релизы линейки 11.4.6 и смежные версии ERP и КА) пользователи часто сталкиваются с досадной проблемой. При попытке создать или записать новый элемент в справочнике ФизическиеЛица система выдает критическую ошибку: "Для добавления требуются разрешенные Группы доступа физических лиц". Самое неприятное в этой ситуации то, что ошибка возникает даже в тех случаях, когда в настройках программы ограничение доступа на уровне записей (RLS) официально отключено, а пользователю выданы все необходимые роли для редактирования справочника.
В данной статье мы подробно разберем, почему возникает этот программный сбой, проанализируем внутренние механизмы конфигурации и рассмотрим несколько эффективных способов решения проблемы.
Давайте выясним, почему типовая конфигурация ведет себя подобным образом. Проблема кроется в логике работы подсистемы "Управление доступом", которая входит в состав Библиотеки стандартных подсистем (БСП). Рассмотрим ситуацию с технической точки зрения.
При записи объекта система обращается к общему модулю УправлениеДоступом. В частности, срабатывает функция ГруппыЗначенийДоступаРазрешающиеИзменениеЗначенийДоступа. Проблема заключается в том, что внутри этой функции жестко прописана проверка прав на чтение вспомогательных метаданных. Посмотрим на фрагмент кода, который вызывает затруднения:
Если Не ПравоДоступа("Чтение", Метаданные.НайтиПоТипу(СвойстваГрупп.Тип)) Тогда
Возврат Новый Массив;
КонецЕсли;
В контексте нашей проблемы СвойстваГрупп.Тип — это справочник ГруппыДоступаФизическихЛиц. Выясняется, что в типовой поставке права на чтение этого справочника по умолчанию есть только у роли ПолныеПрава. Когда обычный пользователь (например, менеджер по персоналу или бухгалтер) пытается создать физлицо, код проверяет, есть ли у него право на чтение справочника групп доступа. Поскольку права нет, функция возвращает пустой массив, и система ошибочно полагает, что прав на создание физического лица у пользователя тоже нет.
Это классический пример "фантомного" RLS: настройки ограничения доступа могут быть выключены в интерфейсе, но программный код всё равно выполняет проверку прав на метаданные объектов, участвующих в системе разграничения прав.
Рассмотрим наиболее современный и безопасный способ решения, который не требует снятия основной конфигурации с поддержки. Мы можем создать расширение и добавить в него необходимые права.
ГруппыДоступаФизическихЛиц.ЧтениеГруппДоступаФизЛиц_Расширение.ГруппыДоступаФизическихЛиц установим флажки Чтение и Просмотр.Этот метод хорош тем, что при обновлении основной конфигурации на исправленный релиз (начиная с 11.4.8.74), расширение можно будет просто отключить или удалить без последствий для данных.
Если вы уже работаете с измененной конфигурацией, можно пойти по пути прямого редактирования ролей. Разберем шаги:
Найдем типовую роль, которая отвечает за работу с физическими лицами (например, ДобавлениеИзменениеФизическихЛиц). Нам необходимо добавить в эту роль право на Чтение справочника ГруппыДоступаФизическихЛиц. Важно помнить, что простого наличия права в роли может быть недостаточно, если в системе включен механизм программной проверки через БСП.
Помимо прав на чтение, необходимо убедиться, что справочник ГруппыДоступаФизическихЛиц не пуст. Рассмотрим подробнее, почему это важно.
Даже если мы дали пользователю права на чтение справочника групп доступа, система может продолжать выдавать ошибку, если справочник пуст. Проанализируем алгоритм действий для полной настройки:
Группы доступа физических лиц (его можно найти через "Все функции" или "Функции для технического специалиста").Группа доступа. Если записей много, воспользуемся стандартной обработкой "Групповое изменение реквизитов".Физические лица, найдем реквизит Группа доступа и установим ему значение нашей созданной "Общей группы".Важный нюанс: Если вы создали хотя бы одну группу доступа, то в настройках профиля пользователя (раздел "НСИ и администрирование" — "Настройки пользователей и прав" — "Группы доступа") нужно зайти в группу доступа пользователя и на закладке "Ограничения доступа" для вида доступа "Физические лица" установить значение "Все разрешены, без исключений".
Выясним статус данной проблемы у разработчиков 1С. Ошибка была официально зарегистрирована под номером 00-00220328. Она признана багом релиза 11.4.6.
Рассмотрим варианты исправления через обновление:
УправлениеДоступом. Теперь отсутствие прав на вспомогательный справочник не блокирует запись основного объекта, если механизм групп доступа фактически не используется (справочник пуст или RLS отключен).Если у вас есть возможность обновить конфигурацию до актуального релиза, это будет самым правильным стратегическим решением, так как оно устраняет первопричину на уровне программного кода вендора.
Подведем итог нашему исследованию. Ошибка с группами доступа физических лиц — это следствие избыточно жесткой проверки прав в программном коде БСП. Чтобы быстро вернуть пользователям возможность работать, выполните следующие действия:
План действий:
Чтение справочника ГруппыДоступаФизическихЛиц.Соблюдение этих шагов позволит полностью устранить ошибку и обеспечит корректную работу пользователей с персональными данными в системе 1С:Управление торговлей.