Почему при ограничении прав RLS на контрагентов в 1С:УПП 1.3 пользователи не могут создавать новые документы и как это исправить?

Программист 1С v8.3 (Обычные формы) IT и автоматизация бизнеса
← На главную

Настройка ограничений доступа на уровне записей (RLS) в конфигурации 1С:Управление производственным предприятием (УПП) редакции 1.3 — задача традиционно непростая. Часто администраторы и разработчики сталкиваются с ситуацией, когда после включения RLS для справочника контрагентов пользователи полностью теряют возможность создавать и проводить новые документы (например, «Реализация товаров и услуг» или «Поступление товаров и услуг»). При попытке записать новый документ система выдает стандартное, но малоинформативное сообщение: «У пользователя недостаточно прав на исполнение операции над базой данных».

В этой статье мы подробно разберем, почему возникает эта ошибка, как устроены механизмы RLS в УПП 1.3 и какие шаги необходимо предпринять для восстановления корректной работы системы.

В чем принципиальное отличие RLS в УПП 1.3 от других конфигураций?

Если у вас есть опыт настройки RLS в более «легких» конфигурациях (например, в 1С:Управление торговлей ред. 10.3), вы можете ожидать аналогичного поведения системы в УПП. Однако архитектура УПП 1.3 гораздо сложнее. Ограничение доступа к контрагентам здесь влияет не только на сам справочник Справочник.Контрагенты, но и на все связанные с ним регистры, документы и подчиненные справочники (например, договоры контрагентов).

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

---

Причина 1. Путаница между областями доступа «Данные» и «Доп. информация»

Рассмотрим структуру настроек прав доступа для вида объекта «Контрагенты» в УПП 1.3. Разработчики разделили права на две независимые области доступа, настройки которых часто путают:

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

Как правильно настроить:

  1. Перейдем в настройки прав доступа на уровне записей в режиме «1С:Предприятие».
  2. Для настраиваемой группы пользователей найдем ограничения по контрагентам.
  3. Убедимся, что флаг «Редактирование данных» обязательно включен. Это вернет пользователям возможность создавать и проводить документы.
  4. Чтобы запретить пользователям редактировать сами карточки контрагентов (их реквизиты), снимите флаг «Редактирование доп. информации».
  5. Если требуется гарантированно защитить справочник от изменений, рекомендуется дополнительно зайти в Конфигуратор и у соответствующих ролей пользователей убрать права «Изменение» и «Редактирование» непосредственно для объекта Справочник.Контрагенты, оставив только «Чтение» и «Просмотр».

---

Причина 2. Отсутствие прав на «пустую ссылку» контрагента

Выясним вторую, не менее распространенную причину сбоя. Когда пользователь создает новый, еще не заполненный документ, реквизит «Контрагент» в нем по умолчанию пустой. С точки зрения платформы 1С, этот реквизит содержит значение ЗНАЧЕНИЕ(Справочник.Contragents.EmptyRef) (пустая ссылка).

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

Разберем по шагам, как решить проблему пустой ссылки:

  1. Откроем справочник «Группы доступа контрагентов» (или перейдем в соответствующий интерфейс настройки прав доступа пользователей).
  2. В список разрешенных значений для контрагентов необходимо добавить пустую строку (это элемент справочника, у которого не заполнено наименование и код — он символизирует «Пустое значение»).
  3. Для этой пустой строки обязательно устанавливаем флаги «Просмотр данных» и «Редактирование данных».
  4. Если на предприятии дополнительно включены ограничения RLS по договорам контрагентов или организациям, обязательно проделайте аналогичную процедуру: добавьте пустые строки (пустые ссылки) в списки разрешенных значений для этих объектов доступа.

---

Причина 3. Использование некорректных запросов в коде («ВЫБРАТЬ РАЗРЕШЕННЫЕ»)

Иногда даже при верных настройках прав в режиме предприятия документы могут не проводиться из-за особенностей программного кода. При проведении документа система выполняет множество фоновых запросов к регистрам накопления и сведений для проверки остатков, взаиморасчетов и цен. Если в этих запросах разработчиками конфигурации не было указано ключевое слово РАЗРЕШЕННЫЕ, платформа попытается прочитать данные, к которым у пользователя нет доступа из-за ограничений RLS, и проведение прервется ошибкой.

Хотя в типовой конфигурации УПП 1.3 последних релизов критические места оптимизированы под RLS, при наличии доработок или кастомного кода эту проблему необходимо локализовать.

Посмотрим на пример правильного построения запроса с учетом RLS:


ВЫБРАТЬ РАЗРЕШЕННЫЕ
    Взаиморасчеты.ДоговорКонтрагента КАК Договор,
    Взаиморасчеты.СуммаВзаиморасчетовОстаток КАК Остаток
ИЗ
    РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(&Период, ) КАК Взаиморасчеты

Если бы ключевое слово РАЗРЕШЕННЫЕ отсутствовало, запрос попытался бы выбрать данные по всем контрагентам без исключения. Столкнувшись с ограничением RLS на уровне СУБД, платформа незамедлительно выдала бы ошибку «Недостаточно прав».

---

Методика диагностики ошибок RLS в УПП 1.3

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

  1. Анализ Журнала регистрации. Ошибки RLS всегда фиксируются на уровне технологического журнала и журнала регистрации 1С. Откройте журнал регистрации, установите отбор по критическим событиям («Ошибки») и вашему пользователю. Найдите событие с результатом «Отказ в доступе». В поле «Данные» или в комментарии будет четко указано имя таблицы (например, РегистрСведений.СчетаУчетаРасчетовСКонтрагентами или Справочник.ДоговорыКонтрагентов), к которой не хватило прав. Это укажет вам, для какого смежного объекта нужно донастроить права.
  2. Проверка групп пользователей. В УПП 1.3 критически важно, чтобы абсолютно все пользователи, для которых активирован механизм RLS, были явно включены в соответствующие группы пользователей. Если учетная запись пользователя создана, но не добавлена ни в одну группу доступа, механизмы RLS полностью заблокируют для него работу с документами, подпадающими под ограничения.
  3. Тестовое отключение ограничений. Чтобы убедиться, что дело именно в RLS контрагентов, временно добавьте пользователя в группу с полными правами или отключите ограничение по контрагентам в настройках параметров учета. Если документ проведется успешно — вы подтвердите, что проблема кроется в настройках RLS конкретного справочника.

Используя предложенные методики разделения областей «Данные / Доп. информация» и обязательного добавления пустых ссылок в группы доступа, вы сможете успешно запустить механизм RLS в УПП 1.3 без нарушения стабильности бизнес-процессов компании.

← На главную