Настройка ограничений доступа на уровне записей (RLS) в конфигурации 1С:Управление производственным предприятием (УПП) редакции 1.3 — задача традиционно непростая. Часто администраторы и разработчики сталкиваются с ситуацией, когда после включения RLS для справочника контрагентов пользователи полностью теряют возможность создавать и проводить новые документы (например, «Реализация товаров и услуг» или «Поступление товаров и услуг»). При попытке записать новый документ система выдает стандартное, но малоинформативное сообщение: «У пользователя недостаточно прав на исполнение операции над базой данных».
В этой статье мы подробно разберем, почему возникает эта ошибка, как устроены механизмы RLS в УПП 1.3 и какие шаги необходимо предпринять для восстановления корректной работы системы.
Если у вас есть опыт настройки RLS в более «легких» конфигурациях (например, в 1С:Управление торговлей ред. 10.3), вы можете ожидать аналогичного поведения системы в УПП. Однако архитектура УПП 1.3 гораздо сложнее. Ограничение доступа к контрагентам здесь влияет не только на сам справочник Справочник.Контрагенты, но и на все связанные с ним регистры, документы и подчиненные справочники (например, договоры контрагентов).
Давайте проанализируем две основные причины, по которым возникает блокировка создания документов при ограничении прав на контрагентов.
---
Рассмотрим структуру настроек прав доступа для вида объекта «Контрагенты» в УПП 1.3. Разработчики разделили права на две независимые области доступа, настройки которых часто путают:
Справочник.Контрагенты. Флаги «Просмотр доп. информации» и «Редактирование доп. информации» управляют возможностью видеть карточку контрагента, изменять его реквизиты (ИНН, КПП, адреса), а также создавать новые договоры.Суть ошибки: Если вы снимаете флаг «Редактирование данных» для группы пользователей, вы запрещаете им не просто изменять карточку контрагента, вы запрещаете им создавать и проводить любые документы, где выбран данный контрагент. Система расценивает запись документа как изменение связанных с контрагентом данных и блокирует операцию.
Как правильно настроить:
Справочник.Контрагенты, оставив только «Чтение» и «Просмотр».---
Выясним вторую, не менее распространенную причину сбоя. Когда пользователь создает новый, еще не заполненный документ, реквизит «Контрагент» в нем по умолчанию пустой. С точки зрения платформы 1С, этот реквизит содержит значение ЗНАЧЕНИЕ(Справочник.Contragents.EmptyRef) (пустая ссылка).
При записи нового документа механизм RLS проверяет права пользователя на все объекты, указанные в его реквизитах, включая этого «пустого» контрагента. Если в настройках RLS явно не указано, что пользователю разрешен доступ к контрагентам с пустым значением, СУБД возвращает ошибку нехватки прав еще до того, как пользователь успеет выбрать реального контрагента в форму.
Разберем по шагам, как решить проблему пустой ссылки:
---
Иногда даже при верных настройках прав в режиме предприятия документы могут не проводиться из-за особенностей программного кода. При проведении документа система выполняет множество фоновых запросов к регистрам накопления и сведений для проверки остатков, взаиморасчетов и цен. Если в этих запросах разработчиками конфигурации не было указано ключевое слово РАЗРЕШЕННЫЕ, платформа попытается прочитать данные, к которым у пользователя нет доступа из-за ограничений RLS, и проведение прервется ошибкой.
Хотя в типовой конфигурации УПП 1.3 последних релизов критические места оптимизированы под RLS, при наличии доработок или кастомного кода эту проблему необходимо локализовать.
Посмотрим на пример правильного построения запроса с учетом RLS:
ВЫБРАТЬ РАЗРЕШЕННЫЕ
Взаиморасчеты.ДоговорКонтрагента КАК Договор,
Взаиморасчеты.СуммаВзаиморасчетовОстаток КАК Остаток
ИЗ
РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(&Период, ) КАК Взаиморасчеты
Если бы ключевое слово РАЗРЕШЕННЫЕ отсутствовало, запрос попытался бы выбрать данные по всем контрагентам без исключения. Столкнувшись с ограничением RLS на уровне СУБД, платформа незамедлительно выдала бы ошибку «Недостаточно прав».
---
Если вы применили описанные выше настройки, но ошибка «Недостаточно прав» продолжает появляться, воспользуемся проверенным алгоритмом локализации проблемы:
РегистрСведений.СчетаУчетаРасчетовСКонтрагентами или Справочник.ДоговорыКонтрагентов), к которой не хватило прав. Это укажет вам, для какого смежного объекта нужно донастроить права.Используя предложенные методики разделения областей «Данные / Доп. информация» и обязательного добавления пустых ссылок в группы доступа, вы сможете успешно запустить механизм RLS в УПП 1.3 без нарушения стабильности бизнес-процессов компании.